Script wird nach Reboot in crontab nicht ausgeführt

Begonnen von Bartimaus, 01 März 2019, 08:29:20

Vorheriges Thema - Nächstes Thema

Bartimaus

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 ?
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

#1
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
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Bartimaus

Aha, Vielen Dank, aber das übersteigt mein schmales Linux-Anfängerwissen... :'(
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

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
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Bartimaus

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.
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Wernieman

?? 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.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Bartimaus

Ok, danke und gute Besserung. Ich werde das mal googlen...
LG
B.


FHEM@Intel-J4105@Debian-LXC, CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly