方法一、登录服务器,直接修改:
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