方法一、登錄服務器,直接修改:
crontab -e
然后添加:
@reboot [nohup] {命令}
...
# 或者定時任務指令
保存退出:
ctrl + O
ctrl + x
方法二、指定用戶進行修改:
sudo crontab -u {username} -e
然后添加:
@reboot [nohup] {命令}
...
# 或者定時任務指令
保存退出:
ctrl + O
ctrl + x
以上兩種方法,可以提前將 任務指令 封裝進一個文件,然后再統一導入: sudo crontab -u {username} {filename}
務必注意,用導入文件的形式添加定時任務,會進行覆蓋重寫操作(先清空已有定時任務,再從文件中導入)
解決辦法:https://www.cnblogs.com/lowmanisbusy/p/12048054.html
方法三、修改 /etc/crontab:
sudo vim /etc/crontab
添加:
@reboot {username} [nohup] {命令}
...
# 或者定時任務指令
保存退出
該方法必須指定用戶,該方法的好處是,可以將所有用戶的crontab任務都在/etc/crontab文件中進行管理
(方法一和方法二會為用戶單獨維護一份crontab任務文件,不方便管理人員統一管理所有定時任務)
該方法本人在實際的操作過程中,無法通過遠程發送指令的方式完成,必須需要打開一個交互式的shell窗口,手動修改.這里應該有權限限制
說明:
1. nohup 是用來讓運行的程序忽略 SIGHUP 指令(因為在父程序退出后,所有的子程序會受到 SIGHUP 指令)從而保證運行的程序不退出, 根據實際情況決定是否使用該參數
(本人實際操作過程中,加入該參數時無法成功執行任務,請自測)
2. @reboot 只針對可登錄服務器的用戶生效, 如果使用不可登錄服務器的用戶執行該類型crontab任務,將會遭到忽略,執行失敗
注意:
1.如果修改了服務器的時區或時間,必須將cron服務重啟,否則仍然會按照原來的時區及時間執行定時任務
sudo -s
啟動cron:/etc/init.d/cron start 或者 service cron start
重啟:/etc/init.d/cron restart ( service cron restart )
關閉:/etc/init.d/cron stop ( service cron stop )
2.默認情況下,cron 服務的日志是關閉的,如果需要開啟 cron 日志,可以執行以下步驟(本人操作環境 ubuntu 16.04)
sudo vim /etc/rsyslog.d/50-default.conf
找到以下行,將注釋取消即可:
# cron.* /var/log/cron.log
重啟 rsyslog:
sudo service rsyslog restart
重啟 cron:
sudo service cron restart
查看日志:
tail -f /var/log/cron.log