的Cron表達式:殼牌腳本(與頂部命令)中的cronjob不工作
# m h dom mon dow command */1 * * * * /home/sysadmin/sample.sh
Shell腳本內容:
#!/bin/bash
clear
Vardate=`date`
topresult=`top -n 1| grep Cpu`
# CPUStatus=$Vardate"\t"$topresult
# echo $CPUStatus >> /tmp/data.log
echo $Vardate" "$topresult >> /tmp/data.log
當我手動exeute腳本時,得到所需的輸出。那就是:
Wed Sep 23 02:42:47 MDT 2015 Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
但當執行的cronjob它的輸出如下:
Wed Sep 23 02:42:47 MDT 2015
什麼可以這樣做的原因?
+1,但它仍然是有趣的學習究竟是什麼原因互動之間的差異執行cron。我可以在我的盒子上重現OP的問題,顯然,stdin是否連接到tty並不重要,輸出是否爲管道或重定向並不重要,執行用戶似乎也不是問題。 –
我不是專家,但根據我讀過的內容,頂部是使用正在使用控制字符操縱屏幕的curses庫編寫的。不知道在這種環境下標準輸出會發生什麼。 ncurses的手冊頁表明它可能會變爲stderr:http://linux.die.net/man/3/ncurses *「如果將ncurses程序的標準輸出重定向到不是tty的東西,屏幕更新將定向到標準錯誤。「*您也可以嘗試通過設置TERM = dumb來獲得更加正常的輸出。但底線是批處理模式是你想要使用的。 –