Ich habe ein Skript erstellt, um zwei Skripte auf der Crontab zu installieren.
#!/bin/bash
sudo crontab -l > mycron
#echo new cron into cron file
echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script
#install new cron file
crontab mycron
rm mycron
Das Skript wird ausgeführt und die beiden Zeilen zur Crontab hinzugefügt. Aber wenn ich das Skript erneut ausführe, werden diese Zeilen erneut hinzugefügt, sodass ich vier Zeilen habe, in denen das gleiche Zeug steht. Ich möchte, dass das Installationsskript so ausgeführt wird, dass sich die in die crontab eingefügten Zeilen nicht wiederholen. Wie kann ich das machen
Antworten:
Ich würde empfehlen,
/etc/cron.d
über zu verwendencrontab
.Sie können Dateien
/etc/cron.d
ablegen, die sich wie Crontab-Einträge verhalten. Obwohl das Format etwas anders ist.Zum Beispiel
/etc/cron.d/pcap
:Der Unterschied im Format besteht darin, dass der Benutzer hinzugefügt wird, um den Job wie nach der Zeitangabe auszuführen.
Jetzt können Sie einfach überprüfen, ob die Datei vorhanden ist, und wenn Sie sie überschreiben, spielt dies keine Rolle.
Beachten Sie, dass Ihr Cron-Daemon möglicherweise nicht über diesen verfügt
/etc/cron.d
. Ich weiß nicht, welche Cron-Daemons es haben, aber Vixie Cron ist der Standard-Cron-Daemon unter Linux, und das tut es auch.quelle
Sie können stattdessen eine Funktion deklarieren:
und rufe es auf, indem du sagst:
Dies würde die Zeile nur anhängen, wenn sie nicht in der Datei vorhanden ist.
quelle
-F
würdegrep
das Muster als feste Zeichenfolge interpretieren lassen.von bash benutze ich
Verwenden Sie dieses Skript auch, um Cron-Einträge auf Remote-Servern hinzuzufügen
quelle
Sie können ein Skript schreiben und es zu crontab hinzufügen, um es zu stoppen:
quelle
kill -9
sollte nur als letzter Ausweg getan werden - unix.stackexchange.com/questions/8916/…