最近需要在固定时间执行Python脚本,发现Ubuntu自带的Crontab可以实现所需功能
具体使用方法如下:
安装crontab(若linux上未安装):
apt-get install cron
开启cron服务:
service cron start
cron命令使用语法为:
设置对应的时间,将对应位置上的"*"替换为数字即可
注:默认*号为全部
也可使用区间表示:例:1-7
例如需要在周一至周五上午9:15运行,命令为为:
15 9 * * 1-5 要执行的脚本路径
注:脚本路径最好使用绝对路径
接下来测试执行一个脚本test.py,执行时间为每分钟都运行:
首先执行:crontab –e
在打开的文件中添加一行:
*/1 * * * * /usr/bin/python /root/MyNewsWeb/test.py> /dev/2qw.txt
注:test.py的执行结果将会输出至/dev/2wq.txt文件中
添加完成后使用快捷键:Ctrl+O
提示是否保存文件,按回车确认
使用快捷键Ctrl+X推出
一切顺利Ubuntu便会输出:
crontab: installing new crontab
表示修改成功
重启Cron:
service cron restart
然后就可以使用
service cron status
来查看是否运行:
得到类似输出表示正常运行:
root@iZuf6ismitg2f3hxl8uyawZ:/dev# service cron status
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-05-25 20:59:34 CST; 37s ago
Docs: man:cron(8)
Main PID: 5620 (cron)
Tasks: 1 (limit: 2340)
CGroup: /system.slice/cron.service
└─5620 /usr/sbin/cron -f
May 25 20:59:34 iZuf6ismitg2f3hxl8uyawZ systemd[1]: Started Regular background program processing daemon.
May 25 20:59:34 iZuf6ismitg2f3hxl8uyawZ cron[5620]: (CRON) INFO (pidfile fd = 3)
May 25 20:59:34 iZuf6ismitg2f3hxl8uyawZ cron[5620]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
May 25 21:00:01 iZuf6ismitg2f3hxl8uyawZ CRON[5772]: pam_unix(cron:session): session opened for user root by (uid=0)
May 25 21:00:01 iZuf6ismitg2f3hxl8uyawZ CRON[5771]: pam_unix(cron:session): session opened for user root by (uid=0)
May 25 21:00:01 iZuf6ismitg2f3hxl8uyawZ CRON[5778]: (root) CMD (/usr/bin/python /root/MyNewsWeb/test.py> /dev/3qw.txt)
May 25 21:00:01 iZuf6ismitg2f3hxl8uyawZ CRON[5779]: (root) CMD (/usr/bin/python /root/MyNewsWeb/test.py> /dev/2qw.txt)
May 25 21:00:01 iZuf6ismitg2f3hxl8uyawZ CRON[5772]: pam_unix(cron:session): session closed for user root
May 25 21:00:01 iZuf6ismitg2f3hxl8uyawZ CRON[5771]: pam_unix(cron:session): session closed for user root
正确执行,我们查看/dev/2qw.txt文件:
vi /dev/2qw.txt
发现有了输出结果:
2019-05-25 21:16:01.702503
表示正常执行。
若觉得自己修改参数麻烦,也可以使用这个网站自动生成命令:
参考资料:
https://medium.com/@gavinwiener/how-to-schedule-a-python-script-cron-job-dea6cbf69f4e
https://vexxhost.com/resources/tutorials/how-to-use-cron-jobs-for-automation-on-ubuntu-14-04/