美文网首页
Crontab使用记录

Crontab使用记录

作者: 吃远 | 来源:发表于2019-04-21 09:08 被阅读0次

一、crontab日志

  使用crontab时一个重要需求是查询log。因为定时任务没有显式的terminal弹出,因此执行是在后台进行的。为了实时了解定时任务执行的情况,需要了解crontab的日志访问方法。

grep CRON /var/log/syslog

  但是这个只能显示crontab运行的概况信息。如果想要详细了解,需要查看mail

tail -f /var/mail/$USER

  这个方式其实对于crontab任务来说挺重要的。因为这样可以直接看到计划任务中的脚本在屏幕上的输出结果。值得注意的是,如果之前没有用过crontab,在这里应该是找不到相关文件的。此时需要安装一个postfix:

sudo apt-get install postfix

  注意:安装postfix时最好选择local那个发送邮件选项。否则是创建不了/var/mail/$USER路径的。安装好之后应该就可以查看邮件了。可以将查看cron邮件的命令以alias或者函数的形式加到bashrc中,这样每次就可以快捷访问该命令了。

image.png

二、使用中的坑:

1. crontab中的环境和主机环境相差很大。

  crontab中的环境非常简单,可以在crontab上挂一个/bin/echo $PATH然后重定向到某个日志来观察,结果应该只有两三条路径,和本机的PATH相差很大。因此最好将本机环境变量PATH的具体内容显式地在cron脚本中export出来:

export PATH=$PATH:/home/sensetime/.autojump/bin:/opt/ros/kinetic/bin:/usr/local/cuda-9.0/bin:/home/sensetime/bin:/home/sensetime/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin:/usr/local/bin:/usr/local/autoware/bin:/usr/local/autoware/bin:/home/sensetime/miniconda3/bin:/usr/local/autoware/bin

2. crontab默认用的是dash

  crontab应该是像ubuntu一样,用dash而不是bash作为默认的shell。注意dash是没有source命令的。故可以在crontab -e最上面加上一条: SHELL=/bin/bash

3. 某些计划任务的运行结果不会发送邮件

  原因暂时不知道

三、常见用法

  1. 开机运行脚本:
    @reboot /path/to/script.sh

  2. run cron task immediately
    https://unix.stackexchange.com/questions/42715/how-can-i-make-cron-run-a-job-right-now-for-testing-debugging-without-changing

相关文章

网友评论

      本文标题:Crontab使用记录

      本文链接:https://www.haomeiwen.com/subject/jewziqtx.html