Wir müssen / usr / local / bin für alle Benutzer im Pfad von cron haben. Gibt es eine Möglichkeit, es systemweit einzustellen, ohne die Crontab jedes einzelnen Benutzers bearbeiten zu müssen?
Wir haben versucht, PATH zu / etc / crontab hinzuzufügen:
# grep PATH /etc/crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Aber wenn Benutzer dies in ihrer Crontab haben:
$ crontab -l | grep PATH
* * * * * echo $PATH > /tmp/current_cron_path
... es zeigt, dass ihr Pfad immer noch auf Standard gesetzt ist:
$ cat /tmp/current_cron_path
/usr/bin:/bin
echo
Ihr Cron zu verlassen .Antworten:
Sie können Ihren PATH in der crontab-Konfigurationsdatei wie im ersten Code gezeigt konfigurieren, außer dort . Geben Sie zuerst die env-Variablen und dann die Jobs an.
UPD: Aufgrund der Tatsache, dass der Link unterbrochen ist, hier ein Auszug:
quelle
sudo crontab -e
) zu definierenDas Festlegen der PATH-Variablen sollte in Ubuntu funktionieren. Wie sagt man, funktioniert es nicht?
Siehe # 14: Linux Crontab: 15 Awesome Cron Job-Beispiele
quelle
Auch dafür konnte ich keine Lösung finden. Das, was ich einer anständigen Lösung am nächsten kam, ist das Folgende (entnommen aus https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html ).
SHELL=/path/to/setup/cron.bash
Zum Beispiel:
Nachteil: Dazu müssen Sie
SHELL=...
bei jedem Cronjob das oben angegebene angeben. Vorteil: Sie verwenden reguläre Umgebungsvariablen und müssen sich keine Sorgen machen, dass die Variablen zwischen cron und anderen konsistent bleibenquelle
Wenn Sie root sein können, können Sie versuchen
/etc/init.d/cron
, den Pfad dort zu bearbeiten und zu ändern? Ich habe dies nicht getestet, wäre aber interessant zu überprüfen.quelle