![Crontab führt das Skript jede Minute aus](https://rvso.com/image/1597818/Crontab%20f%C3%BChrt%20das%20Skript%20jede%20Minute%20aus.png)
Ich versuche derzeit, einen Cronjob zu planen, um jede Minute eine .sh-Skriptdatei auszuführen.
Dies ist mein einfaches Skript:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
Ich habe dies auf meinem Desktop gespeichert und es mit dem Namen notify.sh bezeichnet. Dann habe ich ein neues Terminalfenster geöffnet und eingegeben crontab-e
. Dadurch wurde eine neue Nano-Datei geöffnet, in die ich Folgendes eingegeben habe:
* * * * * /Users/navania/Desktop/notify.sh
Ich habe diese Nano-Datei gespeichert und exportiert. Was muss ich als nächstes tun, damit der Cronjob erfolgreich ausgeführt wird?
Bisherige Schritte:
- Öffnen Sie die Terminalanwendung und geben Sie ein
crontab-e
. - Dadurch wird eine neue Nano-Datei geöffnet, in die ich den folgenden Befehl eingebe:
* * * * * /Users/navania/Desktop/notify.sh
- Dann drücke ich Strg+O, um es zu speichern, und dann Strg+X, um es unter dem Namen „CrontabTest“ zu speichern.
- Beim Beenden wird angezeigt, dass an Crontab keine Änderungen vorgenommen wurden, was keinen Sinn ergibt.
- Ich habe dann die Protokolldatei geöffnet und nachgeschaut, ob jede Minute „Hello World“ ausgedruckt wird, was nicht der Fall ist.
Für jede Hilfe wäre ich dankbar. Danke!
Antwort1
Ihr Skript versucht höchstwahrscheinlich, jede Minute ausgeführt zu werden.
Folgen Sie den Schritten von Kamil zum Ändern der Crontab-Zeile, um /bin/sh einzuschließen
Ändern Sie Ihr Skript ein wenig, um die Ausgabe in eine Datei vorzunehmen, anstatt zu versuchen, auf den Bildschirm zu schreiben, da der Befehl nicht in Ihrem Terminal ausgeführt wird. Stattdessen wird er in einem eigenen Prozess ausgeführt, weshalb Sie keine Ausgabe sehen.
Ändern Sie Ihr Skript beispielsweise folgendermaßen:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
und überprüfen Sie Ihre .log-Datei, um zu sehen, ob neue Zeilen hineingeschrieben werden.
Antwort2
Sie sollten das Skript ausführbar machen:
chmod +x /Users/navania/Desktop/notify.sh
Und stellen Sie sicher, dass das Dateisystem, das das Skript enthält, nicht mit gemountet ist noexec
. Dann der Befehl
/Users/navania/Desktop/notify.sh
sollte funktionieren, ebenso der Cronjob.
Alternativ sollte der Befehl in der Crontab lauten
/bin/sh /Users/navania/Desktop/notify.sh
In diesem Fall spielt die Ausführungsberechtigung keine Rolle (und der Shebang im Skript auch nicht).
bitte beachten Sieman sollte nicht erwarten, dass die Textausgabe eines Cronjobs in jedem Terminal erscheint.
Und es gibt dieses Problem:
- Dann drücke ich Strg+O, um es zu speichern, und dann Strg+X, um es unter dem Namen zu speichern
CrontabTest
.- Beim Beenden wird angezeigt, dass an Crontab keine Änderungen vorgenommen wurden, was keinen Sinn ergibt.
Ich glaube, Sie müssen die temporäre Datei speichern, die geöffnet wird, und keine neue Datei. Ändern Sie den Namen beim Speichern nicht.