1、首先創建一個定時任務:每分鍾向屏幕輸出"Hello world!"。
有兩種實現方式:
1)輸入crontab -e命令,根據提示直接在當前cron task文本最后面插入如下命令(記得回車):
* * * * * echo "Hello world!"
2)由於每個用戶的定時任務都在/var/spool/cron/crontabs目錄下有個與用戶名一致的任務文件,因此也可以通過vim直接編輯:
sudo vim /var/spool/cron/crontabs/waterfronter #注:waterfronter為當前用戶名
同樣在文件末行插入:
* * * * * echo "Hello world!"
保存退出,並通過crontab -l查看定時任務創建成功。
2、然后等待,若干分鍾后發現屏幕並未輸出"Hello world!"怎么回事?!
1)剛開始懷疑是cron服務沒有啟動,遂執行:
sudo service cron status
發現cron服務是running的,排除;
2)繼而懷疑是任務文件創建后未能被系統及時get到,因而執行:
sudo service cron restart
重啟cron后問題依舊,排除;
3)於是進一步查看cron運行日志(/var/log/cron.log),但是並未找到相關文件,原因是ubuntu默認沒有開cron日志,執行命令:
sudo vim /etc/rsyslog.d/50-default.conf
找到cron.log相關行,將前面注釋符#去掉,保存退出,重啟rsyslog:
sudo service rsyslog restart
執行less -10 /var/log/cron.log再次查看cron運行日志,log出來了,提示如下信息:
No MTA installed, discarding output
原因是cron把屏幕輸出都發送到email了,而當前環境並未安裝email server,於是系統報錯,解決方面就是不要直接向屏幕輸出內容,而是重定向到一個文件。
3、修改任務文件
sudo vim /var/spool/cron/crontabs/waterfronter
將末行改為:
* * * * * echo "Hello world!" >> /tmp/cron_log.txt
保存退出,同時reload cron服務:
sudo service cron reload
若干分鍾后查看/tmp/cron_log.txt,“Hello world!”每隔一分鍾輸出一次,問題解決。