2014-09-05 65 views
0

我已經使用根crontab文件中的sudo crontab -e創建了cron作業的列表(請參見下文)。當我在命令行上單獨運行命令時,它們工作正常,但是沒有任何作業由cron運行。任何幫助,將不勝感激。我是否需要在crontab文件中添加其他內容?什麼是阻止我的cron作業運行

48 * * * *須藤gzip的-k /calcservergc.log.*

49 * * * *在/calcservergc.log.*.gz文件;做sudo mv $文件$(主機名)。$ {file:1};完成

50 * * * * sudo rm $(主機名)。 .log。。廣州

回答

1

須藤

sudo命令可能無法在一個crontab工作。通常,您需要輸入密碼才能運行sudo,但在cron作業中運行時可能會有一種無密碼運行的方式。但是這不會被推薦嘗試。

的cron

你需要運行的cron作爲訪問你需要完成的任務的用戶。 Cron運行一個特定路徑的簡短列表。默認情況下,該列表非常短。在一個linux盒子上,我使用的路徑是/sbin:/usr/sbin:/bin:/usr/bin

此外,路徑需要更具體。 Cron不會以普通用戶身份運行,因此您必須更具體地瞭解這些命令的路徑和輸出。

例如,在第一個命令中,gzip文件將放置在哪裏?

logrotate的

它看起來像你想壓縮日誌文件,然後將日誌文件,然後刪除舊的日誌文件 - 這正是logrotate完成。這將是值得安裝的。 Logrotate解決了運行此命令時日誌文件被打開的問題 - 通常,打開日誌文件的進程即使重命名也不會丟失文件句柄,因此即使在移動日誌之後,日誌仍會繼續寫入。它還處理保留最近日誌文件的存檔的問題,如syslog.1.gz,syslog.2.gz,syslog.x.gz,或者有多少存儲空間或想要保留後代。

摘要

  • 不要使用sudo在cron
  • 在cron運行命令時
  • 使用日誌輪播你的問題
+0

所以,我可以刪除sudo命令,因爲這是在根crontab? – user3344448 2014-09-05 21:05:23

+0

它不僅僅是刪除'sudo'命令。我希望能夠改善我的答案,使其更具體。 – spig 2014-09-07 14:28:17

0

我來完成這項特殊的任務要具體的路徑沒有50點的聲譽,所以不能評論你的問題,所以我會試着一口氣說出來。

我發現你的3個命令可能存在問題,每個命令在一分鐘內被調用。假設第一個操作需要超過一分鐘的時間(不應該發生,但在理論上它可以),第二次調用不會運行或最差,它可以在一半數據上運行)。可以說,你不想在時間上拖延5分鐘,這可能會浪費時間。

你可以做的是創建一個shell腳本,在其中放置3個命令。這樣可以防止您的操作「崩潰」。所以,只要把你的3個命令放在一個腳本shell中,它們就會一個接一個地執行。

然後把你的文件放在/ bin這樣的地方(你也可以用ln -s創建一個符號鏈接)並用cron調用你的腳本。 (注意腳本外殼中的路徑)

現在,爲sudo問題 ...以及即使您將它放在shell腳本中,您仍然需要傳遞您的sudo密碼,並且cron運行在後臺,所以你將無法輸入密碼。

您可以嘗試兩種解決方案。更改存儲文件的包含文件夾的權限(在文件夾上使用chmod -r 777或chmod 755),或者將文件移動/複製到您有權讀寫的目錄中。

+0

這些命令實際上相隔1分鐘,但無論如何,您提到的相同問題都適用。處理這個問題的最好方法是使用[logrotate](http://linuxcommand.org/man_pages/logrotate8.html)等。 – spig 2014-09-07 14:08:23

+0

@spig謝謝,當我發佈答案時,已經很晚了,忘記了它是幾個月,幾個月,一週中的某幾天,幾分鐘,幾天。我確定了答案。 – 2014-09-07 16:32:48