Linux下的自动执行 命令行工具 Crontab踩坑记

我相信,使用crontab来执行周期性任务的你一定遇到了很多莫名其妙的问题,我们需要了解crontab独特的个性以及它强大的技能。

我们可以使用crontab执行周期性任务,无论是shell脚本,还是Python程序。。。

查看已安装的周期性任务:crontab -l,list cron task
编辑并安装周期性任务:crontab -e,edit cron task

环境变量

crontab会以用户的身份执行配置的命令,但是不会加载用户的环境变量,crontab会设置几个默认的环境变量,例如SHELL、PATH和HOME等,一定要注意PATH可不是用户自定义的PATH。所以相信如果你想用crontab来执行python程序,你一定踩过crontab环境变量的坑:)
查看crontab环境变量:vi /etc/crontab
在crontab任务中定义临时环境变量:

* * * * * PATH=/home/ubuntu/anaconda/bin:/bin && ./scripts/vivo/train.sh tune_steps 7 >> /data3/crontab.log 2>&1 &


59 23 * * * /home/ubuntu/anaconda/bin/python /data/test.py >> /data//test.log 2>&1 &

路径

我们在写脚本时往往会使用相对路径,但是在crontab执行脚本时,由于工作目录不同,就会出现找不到文件或者目录不存在的问题。

解决方法是脚本中使用绝对路径或者在执行程序前切换工作目录,例如直接在crontab命令中切换工作目录:

0 12 * * * source $HOME/.bash_profile && cd $HOME/path/to/workdir && ./script > /HOME/log/file 2>&1

输出

要将crontab命令的输出记录到日志文件中,可以使用重定向,不仅要重定向stdout也要重定向stderr,因为Python解释器会将异常输出到stderr。示例:

59 23 * * * /home/ubuntu/anaconda/bin/python /data/test.py >> /data//test.log 2>&1 &

用法

crontab的用法这里就不说了,很多资料,任务最小周期是一分钟
介绍一个很好的crontab辅助网站,https://crontab.guru/

References:
https://segmentfault.com/a/1190000002724336
https://crontab.guru/
http://www.adminschoice.com/crontab-quick-reference

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值