我做一個shell腳本如下:tar文件歸檔不
tar cvzf mytar.tgz *
當我從終端上運行shell腳本,它工作正常。當它使用crontab從cron作業運行shell腳本時,它看起來像是歸檔文件,因爲tgz文件存在,但文件大小沒有任何作用,當我解壓縮時沒有任何內容。但是,當我通過終端運行shell腳本時,tgz有更大的文件大小,我可以解壓它們。
任何人都知道爲什麼它不會通過cronjob工作?
我做一個shell腳本如下:tar文件歸檔不
tar cvzf mytar.tgz *
當我從終端上運行shell腳本,它工作正常。當它使用crontab從cron作業運行shell腳本時,它看起來像是歸檔文件,因爲tgz文件存在,但文件大小沒有任何作用,當我解壓縮時沒有任何內容。但是,當我通過終端運行shell腳本時,tgz有更大的文件大小,我可以解壓它們。
任何人都知道爲什麼它不會通過cronjob工作?
cronjob進程的工作目錄是什麼?如果裏面什麼都沒有,那麼命令就會把所有的東西都歸檔。
嘗試指定到要歸檔的文件的完整路徑:
tar cvzf mytar.tgz /path/to/your/files/*
克龍從您的$ HOME不同的目錄中運行。
首先,不需要在cron中冗長。
其次,它看起來像你在那裏使用相對路徑。考慮使用絕對路徑,即使對於tar命令本身。
最後,哪位用戶正在運行cron?是否有潛在的權限問題或配額問題?
到目前爲止的其他答案給出了很好的建議。 Cron對命令允許的內容有很多特殊的規定。當我製作一個簡單的shell腳本時,我最成功的將它放在$ HOME/cron,chmox 755中,並將它的完整路徑放在cron中。確保測試腳本 - 確保在必要時進行cd'ing。請注意,cron不僅不一定會從您的家中運行該命令,但它也可能會有不同的PATH,並且其他環境設置將會丟失。