我是使用cron和crontab調度任務的新手。我試圖安排一個任務的執行,就像我已經登錄,打開一個終端並自己執行它一樣。crontab PATH和USER
不過,我計劃一個任務來幫我觀摩一下美元的計劃任務與執行用戶和$ PATH,這是我發現:
$ crontab -l
41 11 * * * echo "USER: $USER" > ~/Desktop/cron_env.log; echo "PATH: $PATH" >> ~/Desktop/cron_env.log
$ cat ~/Desktop/cron_env.log
USER:
PATH: /usr/bin:/bin
看來好像$ USER沒有設置,$ PATH是非常基本的和/或默認的。相反,這是我所看到的,當我打開一個終端(登錄)和回聲相同的信息:
USER: aschirma
PATH: /usr/lib/jvm/java-6-sun/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/pkg/icetools/bin:/pkg/hwtools/bin:/pkg/netscape/bin:/pkg/gnu/bin
什麼我需要做的,使我的crontab任務運行我想要的方式?
OP這裏。從cron啓動的腳本不會繼承正確的PATH。事實上,這正是我開始遇到問題的地方:從cron執行的bash腳本沒有在PATH中找到任何東西,因爲PATH不正確。 – 2012-04-12 18:28:15
@AdamS這就是問題所在,它們繼承了cron守護進程提供的PATH(和其他一些變量),這與您從登錄shell獲得的守護進程不一樣,如果需要,可以在您的crontab文件中設置PATH。 – KurzedMetal 2012-04-12 18:33:29
從手冊頁:'值字符串不被解析爲環境替換或替換變量,因此像PATH = $ HOME/bin:$ PATH這樣的行將不會像您所期望的那樣工作。「 – blujay 2015-10-14 16:29:13