Mám nějaké příkazy, fungují pod bash, ale ne jako cronjob. Chcete-li zjistit, co způsobuje problém, ukládám výstup do souboru, zde je můj příklad:
51 * * * * source ~ / .rvm / scripts / rvm >> stack.log 2>&1
Obsah souboru protokolu je:
/ bin / sh: 1: zdroj: nenalezen
To znamená, že cron používá sh
místo bash
. Snažil jsem se to změnit v /etc/crontab
:
SHELL=/bin/bash
Ale toto nefunguje. Podíval jsem se do / etc / passwd
a tady vidím, že démon používá sh
jako výchozí shell. root
a pi
mají jako výchozí shell bash
.
root: x: 0: 0: root : / root: / bin / bashdaemon: x: 1: 1: daemon: / usr / sbin: / bin / shpi: x: 1000: 1000: ,,,: / home / pi: / bin / bash
Co mám udělat, abych změnil výchozí shell pro cron? Nenastavil bych / bin / bash
pro uživatele démona v / etc / passwd
... imho to není dobrý nápad.
ed zde obsah
ls -l / bin / shlrwxrwxrwx 1 root root 4. března 2012 / bin / sh -> dash
/etc/crontab
:
# / etc / crontab: celosystémový crontab # Na rozdíl od jiných crontab nemusíte spouštět příkaz `crontab '# k instalaci nové verze při úpravách tohoto souboru # a souborů v /etc/cron.d. Tyto soubory mají také pole uživatelského jména, # která žádná z ostatních crontabů nedělá. SHELL = / bin / bashPATH = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin # mh dom mon dow user command17 * * * * root cd / && run-parts --report /etc/cron.hourly25 6 * * * root test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
47 6 * * 7 kořenový test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.weekly) 52 6 1 * * root test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.monthly) #