目標:
通過crontab命令在Linux系統設置定時任務
crontab命令
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit
-x <mask> enable debugging
准備定時任務的文件 /home/demo/cron-job
這個文件一定要是Unix(LF)格式,不能是Windows(CR LF)格式會導致定時任務執行失敗
15 3 * * * /bin/sh /home/demo/restart.sh
這種方式可能會手動執行restart.sh沒問題,但是定時任務不生效,缺少環境變量導致。
在shell中執行時是能夠找到環境變量的,但是在crontab中,它是不會自己導入環境變量的,需要我們指定 . /etc/profile 就是導入環境變量。並將所有路徑都寫成絕對路徑。
15 3 * * * ./etc/profile; /bin/sh /home/demo/restart.sh 15 4 * * * ./etc/profile; /bin/sh /home/demo/restart.sh
通過文件給用戶root設置定時任務
sudo crontab -u root /home/demo/cron-job
直接命令行修改用戶root定時任務
sudo crontab -u root -e
查看用戶roog的定時任務
sudo crontab -u root -l
增加了crontab任務后,在/var/spool/cron目錄下會有一個賬號命名的文件。該文件的內容就是剛賬號的crontab任務。
對crontab問題的定位方法:
1.在crontab文件最后一行加入一個測試任務,如: * * * * * root echo “hello world” >> /root/test_cron 每分鍾寫一條,很快就能看出是不是crontab中語法的問題。
2.查看日志文件,定時任務的日志文件一般是/var/log/cron,查看下這個文件的最后幾行就能知道定時任務是不是完全都停掉了,是不是在執行過程中遇到了什么問題。
參考
