Verfügt crontab über ein Argument zur Erstellung von Cron-Jobs ohne Verwendung des Editors (crontab -e). Wenn ja, wie würde der Code lauten, um einen Cronjob aus einem Bash-Skript zu erstellen?
Antworten
Zu viele Anzeigen?(2>/dev/null crontab -l ; echo "0 3 * * * /usr/local/bin/certbot-auto renew") | crontab -
cat <(crontab -l 2>/dev/null) <(echo "0 3 * * * /usr/local/bin/certbot-auto renew") | crontab -
Aktuelle Crontab ausschreiben
crontab -l > mycron 2>/dev/null
echo neues cron in cron-Datei
echo "0 3 * * * /usr/local/bin/certbot-auto renew" >> mycron
neue Cron-Datei installieren
crontab mycron
rm mycron
Wenn Sie den Vixie Cron verwenden, z.B. bei den meisten Linux-Distributionen, können Sie einfach eine Datei in /etc/cron.d mit dem individuellen Cronjob anlegen.
Dies gilt natürlich nur für Root. Wenn Ihr System dies unterstützt, sollten Sie dort mehrere Beispiele sehen. (Beachten Sie den Benutzernamen in der Zeile, in der gleichen Syntax wie in der alten /etc/crontab)
Es ist ein trauriges Manko von Cron, dass es keine Möglichkeit gibt, dies als normaler Benutzer zu handhaben, und dass so viele Cron-Implementierungen überhaupt keine Möglichkeit haben, dies zu handhaben.
Bash-Skript zum Hinzufügen von Cron-Jobs ohne den interaktiven Editor. Der folgende Code hilft beim Hinzufügen eines Cronjobs mit Linux-Dateien.
#!/bin/bash
cron_path=/var/spool/cron/crontabs/root
#cron job to run every 10 min.
echo "*/10 * * * * command to be executed" >> $cron_path
#cron job to run every 1 hour.
echo "0 */1 * * * command to be executed" >> $cron_path
Meine bevorzugte Lösung wäre die folgende:
(crontab -l | grep . ; echo -e "0 4 * * * myscript\n") | crontab -
So stellen Sie sicher, dass Sie die neue Leerzeile am unteren Rand richtig behandeln. Um Probleme mit crontab zu vermeiden, sollten Sie die crontab-Datei normalerweise mit einer leeren neuen Zeile abschließen. Das obige Skript stellt sicher, dass es zuerst alle Leerzeilen mit dem "grep ."-Teil entfernt und dann eine neue Leerzeile am Ende mit dem " \n " am Ende des Skripts. Dadurch wird auch verhindert, dass eine leere Zeile über dem neuen Befehl steht, wenn Ihre bestehende crontab-Datei mit einer Leerzeile endet.
0 Stimmen
Mögliches Duplikat von Wie kann ich programmatisch einen neuen Cron-Job erstellen?
14 Stimmen
Leider zeigen die meisten Top-Antworten hier nur, wie man crontab modifiziert - wenn auch auf einigermaßen sichere Weise - aber ich denke, das ist insgesamt der falsche Ansatz. Besser, sicherer und einfacher ist es, eine Datei in {{cron.d}} abzulegen, und es gibt (derzeit) wenig beachtete Antworten, die erklären, wie man das macht, wenn man weiter unten sucht.
0 Stimmen
Danke @gregmac. Ich habe hinzugefügt dieses Beispiel nachdem ich Beispiele von verschiedenen Seiten gelesen und es selbst ausprobiert habe.
1 Stimmen
@gregmac Verwenden
/etc/cron.daily/
und Freunde scheint Superuser-Rechte zu erfordern.