FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: Bartimaus am 01 März 2019, 08:29:20

Titel: Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Bartimaus am 01 März 2019, 08:29:20
Moin,

ich habe da mal ein Problem mit crontab....

in "sudo crontab -e" habe ich folgenden Befehl eingetragen:
Zitat@reboot sleep 240 && /home/pi/sync.sh

Nach dem reboot sehe ich in HTOP auch, das der Timer für diesen Befehl läuft, und nach knapp 4 Minuten verschwindet der Befehl aus HTOP, aber das Script wurde nicht ausgeführt.

Führe ich das Script von der Konsole manuell aus, läuft es korrekt.

Hier noch der Inhalt vom Script:
Zitat!/bin/sh
screen -dmS FHEMSyncClient bash pushsync.sh
exit

Was mache ich hier falsch ? Habt Ihr ne Idee ?
Titel: Antw:Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Wernieman am 01 März 2019, 08:33:38
Zu Deinem Problem:
- screen und ein cron-Aufruf der Bekanntlich kein tty hat .....
- im Cron werden die Umgebungsvariablen nicht gestartet, findet er überhaupt screen?
-> Arbeite mit absoluten Pfaden
-> Verwende keine Prozesse, welche eine Eingabe oder Bildschirmausgabe brauchen
Titel: Antw:Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Bartimaus am 01 März 2019, 08:40:35
Aha, Vielen Dank, aber das übersteigt mein schmales Linux-Anfängerwissen... :'(
Titel: Antw:Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Wernieman am 01 März 2019, 08:45:08
1. baue es OHNE screen! Warum brauchst Du es überhaupt?
2. Suche Dir raus, wo Deine Programme stehen, z.B. bei bash:
whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz


Was sagt Dir wohl diese Ausgabe?  8)

(P.S. Obiges klingt etwas Besserwisserisch, ist aber so nicht gemeint. Möchte Dir nur für die Zukunft etwas "beibringen")

Ergänzt:
3. Baue Dir Logausgaben!
z.B.
echo "$(date) - Scrript beginnt >>/var/log/MeinBackup.log
Titel: Antw:Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Bartimaus am 01 März 2019, 08:57:04
Ich verwende "Screen" weil es der Modulautor hier empfiehlt.

https://waschto.eu/fhem-widget-fhem-devices-als-widget-unter-ios/

Das Skript beendet sich automatisch sobald dieser veraltet ist. Damit immer der aktuelle Client vorhanden ist, sollte das Skript in Dauerschleife laufen. Ich verwende dazu das Programm ,,screen":

sudo apt-get install screen
Screen erlaubt unter anderem das Ausführung von Skripten im Hintergrund.

screen -dmS FHEMSyncClient bash pushsync.sh


Nur möchte ich vermeiden, den Screen nach einem Reboot manuell starten zu müssen.
Titel: Antw:Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Wernieman am 01 März 2019, 09:33:05
?? Was macht den der Autor damit ??
Für ein Dauerlauf braucht es kein Screen .. sondern eine Dauerschleife ...

Sorry, aber nach einem Kurzen überfliegen des Artikels habe ich keine Lust, mich da reinzudenken (könnte auch an der beginnenden Erkältung liegen, Wochenende kommt)

Sofern ich es verstanden habe (s.o. Überfliegen) verwende er Screen, weil dieser das Script wieder startet ....???
Besser:
- Script starten was in einer "while true"-Schleife (also dauernd) das Script startet
- Dieses als eigenständigen Deamon starten! (geht trivial mit systemd oder init.d)

Aber .. s.o. Du musst selber google bemühen ... und ich weiß nicht, ob es praktisch funktioniert (s.o.), theoretisch (mit einem anderen Projekt) habe ich es so umgesetzt.
Titel: Antw:Script wird nach Reboot in crontab nicht ausgeführt
Beitrag von: Bartimaus am 01 März 2019, 10:37:50
Ok, danke und gute Besserung. Ich werde das mal googlen...