cron: runas_cron.sh
Eigentlich ist es unproblematisch Befehle zu testen, die als Cronjob ausgeführt werden, da diese einfach wie im Cronjob ausgeführt werden können. Da aber der Cronjob in einem eigenen Environment läuft kann es in Ausnahmefällen doch zu Abweichungen kommen. Dies kann man wie folgt umgehen.
Zunächst muss man wissen welche Environment-Variablen für den Cronjob gesetzt sind. Hierzu erstellt man temporär folgenden Cronjob über crontab -e
:
* * * * * /usr/bin/env > /tmp/cron-env
Außerdem benötigt man folgendes Bash-Script:
# run-as-cron.sh
#!/bin/bash
/usr/bin/env -i $(cat /tmp/cron-env) "$@"
Nachdem die Datei /tmp/cron-env
angelegt wurde kann der entsprechende Cronjob entfernt und das Script run-as-cron.sh
gestartet werden. Als Parameter gibt man den Befehl an, den man testen möchte. env
stellt dann das in /tmp/cron-env
gespeicherte Environment her.
Tags:
imported