這個問題碰到幾次,記錄一下解決過程。
問題:
在工作中我們經常會寫一個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