Antwort sechs Jahre später: Das Problem der Nichtübereinstimmung der Umgebung ist eines der Probleme, die von systemd
"Timern" als Cron-Ersatz gelöst werden . Unabhängig davon, ob Sie den systemd "Service" über die CLI oder über cron ausführen, erhält er genau dieselbe Umgebung, wodurch das Problem der Nichtübereinstimmung der Umgebung vermieden wird.
Das häufigste Problem, das dazu führt, dass Cron-Jobs fehlschlagen, wenn sie manuell übergeben werden, ist der $PATH
von cron festgelegte restriktive Standard , der unter Ubuntu 16.04 verwendet wird:
"/usr/bin:/bin"
Im Gegensatz dazu ist der unter Ubuntu 16.04 $PATH
festgelegte Standard systemd
:
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Es besteht also bereits eine bessere Chance, dass ein Systemd-Timer ohne weiteren Aufwand eine Binärdatei findet.
Der Nachteil bei systemd-Timern ist, dass etwas mehr Zeit zum Einrichten bleibt. Sie erstellen zuerst eine "Service" -Datei, um zu definieren, was Sie ausführen möchten, und eine "Timer" -Datei, um den Zeitplan für die Ausführung zu definieren, und "aktivieren" schließlich den Timer, um ihn zu aktivieren.