这个问题碰到几次,记录一下解决过程。
问题:
在工作中我们经常会写一个python脚本,然后想通过定时任务去执行,这时我们会想到crontab.
通过 crontab -e去设置crontab
例如:0 0 * * * python usr/lib64/nagios/plugins/check_dns.py
这时如果脚本中会有涉及读取配置文件或者读写文件的动作,一般定时任务都不会执行.
原因:
因为脚本在执行时,由于是通过crontab去执行的,他的执行目录会变成当前用户的家目录,如果是root,就会在/root/下执行.
解决办法:
在/etc/cron.d 目录下新建一个任务:vim dns-check
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/usr/lib64/nagios/plugins/ # python 脚本路径
*/1 * * * * root python check_dns.py # 执行python脚本
感谢 这个作者https://www.cnblogs.com/terrycy/p/6961339.html