crontab - 定时任务使用

相关连接

crontab定时任务步骤

  • 创建一个定时任务文件,文件名可以随便取,如myconfig

  • myconfig中写入定时任务: 每天9点14分定时执行node脚本任务,并把输出写入/usr/mycrontab/log:

    14 9 * * * node /usr/mycrontab/weatherq/index.js > /usr/mycrontab/log
  • 开启任务:

    crontab myconfig
  • 查看开启的任务list`:

    crontab -l
  • 关闭任务remove:

    crontab -r
  • 以下两命令慎用:

    # 修改当前用户的crontab,测试ubuntu打开方式不是vim,操作比较麻烦
    crontab -e
    
    # 删除用户的crontab
    crontab -d usr

开机自启动

CentOS可使用以下命令,确保开机自运行crontab:

# chkconfig crond on
## Commands to start/stop/restart crond ###
# service crond restart
# service crond start
# service crond stop

ububtu执行service crond start,提示:crond: unrecognized service,可使用了:

service cron start

注:cron目录:/etc/init.d

遇到的问题

服务器时区和生活所在地区不一样,当按照tzselect更改时区后,crontab任务执行还是之前时区。

根据Linux crontab command一文中关于配置crontab时,有一段文字注释:

# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#·
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.

表明cron依赖于daemon守护进程,因此可以通过更改守护进程所在时区即可。

目前收集的方案有:

# 方案一:测试可行
sudo dpkg-reconfigure tzdata #设置时区
sudo service cron restart #重启cron

# 方案二:配置文件中,定时任务上线声明时区
TZ=UTC

* 7 * * * root date | mail root
TZ=CEST

* 7 * * * root date | mail root
TZ=PCT

* 7 * * * root date | mail root

参考链接

@2017-09-25 22:45