Skript mit crontab automatisch bei Hochfahren starten geht nicht

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
debianx
Beiträge: 77
Registriert: 18.01.2017 17:04:10

Skript mit crontab automatisch bei Hochfahren starten geht nicht

Beitrag von debianx » 16.06.2019 12:35:56

Hallo,

ich möchte ein Skript beim hochfahren automatisch ausführen aber das funktioniert nicht.

Das habe ich gemacht (alles root):

Code: Alles auswählen

crontab -e
und in die Datei dann hinein:

Code: Alles auswählen

SHELL=/bin/bash
@reboot   /usr/local/bin/bash.sh
Die Einträge sind durch

Code: Alles auswählen

crontab -l
nachweisbar.

Das skript selber beginnt mit:

Code: Alles auswählen

#!/bin/sh
und funktioniert wenn ich es per Konsole aufrufe. Aber nicht durchs hochfahren was es soll.

Rechte:

Code: Alles auswählen

ls -l ./bash.sh
-rwxrwxr-x 1 root staff 792 Jun 15 14:56 ./bash.sh
Journal:

Code: Alles auswählen

root@z:/usr/local/bin# journalctl -b | grep -i bash.sh
Jun 16 12:18:31 z CRON[462]: (root) CMD (/usr/local/bin/bash.sh)
Hat jemand eine Idee was falsch ist?
Gruß

debianx
Beiträge: 77
Registriert: 18.01.2017 17:04:10

Re: Skript mit crontab automatisch bei Hochfahren starten geht nicht

Beitrag von debianx » 16.06.2019 12:53:02

#-------------
ps:
- alternativer Test das Skript in /etc/init.d/ zu kopieren funktioniert Autostart auch nicht.
- alternativer Test mit Pfad einfügen in /etc/rc.local geht auch nicht da rc.local gar nicht existiert.

also gar nicht so einfach so ein Autostart 8O

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Skript mit crontab automatisch bei Hochfahren starten geht nicht

Beitrag von MSfree » 16.06.2019 13:13:48

debianx hat geschrieben: ↑ zum Beitrag ↑
16.06.2019 12:35:56
Hat jemand eine Idee was falsch ist?
Meistens liegt es daran, daß die Programme, die im Script aufgerufen werden, nicht gefunden werden, weil kein PATH gesetzt ist.

Trotzdem stellt sich mir die Frage, ob das, was du machen willst, überhaupt sinnvoll mit cron realisierbar ist. Für Autostarts beim Systemboot ist systemd zuständig, das sich auch um die Reihenfolge der startenden Programme/Dienste kümmert. Am sinnvollsten schreibt man sich also eine service-Unit für systemd, um Programme beim Boot zum richtigen Zeitpunkt zu starten. Aber auch hier gilt, es ist kein PATH deklariert, Aufrufe müssen also mit Absolutpfad durchgeführt werden.

KP97
Beiträge: 3432
Registriert: 01.02.2013 15:07:36

Re: Skript mit crontab automatisch bei Hochfahren starten geht nicht

Beitrag von KP97 » 16.06.2019 15:21:45

Zusätzlich zum Beitrag von @MSfree wäre auch noch anacron eine Alternative.
Cron ist für 24/7 Systeme gedacht, anacron für Systeme mit unterschiedlichen Startzeiten.

debianx
Beiträge: 77
Registriert: 18.01.2017 17:04:10

Re: Skript mit crontab automatisch bei Hochfahren starten geht nicht

Beitrag von debianx » 16.06.2019 16:14:19

Hallo vielen Dank für die Antworten. Die Vermutung von MSfree war ein Volltreffer, ich habe den vollständigen Pfad angegeben und schon funktioniert es :D
Das mit service-Unit für systemd guck ich mir evt auch nochmal an aber mit cron läufts jetzt auf jeden Fall schon mal :THX:

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Skript mit crontab automatisch bei Hochfahren starten geht nicht

Beitrag von JTH » 16.06.2019 18:32:05

MSfree hat geschrieben: ↑ zum Beitrag ↑
16.06.2019 13:13:48
Am sinnvollsten schreibt man sich also eine service-Unit für systemd, um Programme beim Boot zum richtigen Zeitpunkt zu starten. Aber auch hier gilt, es ist kein PATH deklariert, Aufrufe müssen also mit Absolutpfad durchgeführt werden.
Als Hinweis am Rande: Das stimmt tatsächlich nicht, den Units wird beim Aufruf ein fixer PATH mitgegeben:
systemd.exec hat geschrieben: $PATH
Colon-separated list of directories to use when launching executables. systemd uses a fixed value of
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.
Es hat sich aber ja in der Praxis durchgesetzt, Kommandos mit absolutem Pfad anzugeben.
Manchmal bekannt als Just (another) Terminal Hacker.

Antworten