簡體   English   中英

Linux系統命令無法通過crontab在Perl腳本中使用

[英]Linux system command not working in Perl script via crontab

我每30分鍾在crontab中添加一個腳本。 該行如下:

  */30 * * * * root perl /root/perl.pl

上面的腳本執行了系統命令“ top”,並打印在日志文件中。

如果我手動運行它,則運行良好。 但是,通過crontab運行它時,它沒有顯示出所需的結果。 請有人可以幫我這個忙。 謝謝。


上面的perl腳本中的命令是:

 $top = `sudo top`;

我得到的錯誤是:

sudo: sorry, you must have a tty to run sudo

我將命令從sudo更改為visudo。 但是問題仍然存在。

您應該在cron中使用完整路徑(並使用which perl查找完整路徑):

*/30 * * * * root /usr/bin/perl /root/perl.pl 

或者更好的方法是,使用chmod +x使腳本可執行,然后將解釋器添加到腳本#!/usr/bin/perl -w的開頭,並直接從cron調用它

*/30 * * * * root /root/perl.pl 

另外,如果perl腳本中有問題,您可以像這樣從cron輸出結果

*/30 * * * * root /root/perl.pl > /tmp/myscript.log

您應該查看有關visudo的requiretty設置。 尋找一條讀為Defaults requiretty 您可以嘗試將其注釋掉,但是會犧牲一些安全性。 man sudoers

您還可以嘗試通過一次迭代以批處理模式運行top

$top = `sudo top -bn1`;

批處理模式選項用於將輸出發送到其他程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM