Python脚本自启动与定时任务

63次阅读
没有评论

最近了解了一下python脚本,想设置一个能每隔一段时间就会启动一次的脚本,在网上查找相关资料了解了Linux crontab命令,可以将脚本设置为自启动和定时启动

1脚本随linux开机自启动

准备好要自启的脚本auto.py

用root权限编辑以下文件

sudo vim /ect/rc.local

在exit 0上面编辑启动脚本的命令

/usr/bin/python3.5 /home/edgar/auto.py > /home/edgar/auto.log

最后重启Linux,脚本就能自动运行并打印日志了。

2脚本定时启动

准备好定时启动的脚本auto.py

用root权限编辑以下文件

sudo vim /etc/crontab

在文件末尾添加以下命令

2 * * * * root /usr/bin/python3.5 /home/edgar/auto.py > /home/edgar/auto.log

以上代码的意思是每隔两分钟执行一次脚本并打印日志。

代码解释

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
执行时间 格式
每分钟定时执行一次 * * * * *
每小时定时执行一次 0 * * * *
每天定时执行一次 0 0 * * *
每周定时执行一次 0 0 * * 0
每月定时执行一次 0 0 1 * *
每月最后一天定时执行一次 0 0 L * *
每年定时执行一次 0 0 1 1 *

脚本无法执行问题

如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

解决方法:

  • 1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker
  • 2、在 shell 脚本开头使用以下代码:
    #!/bin/sh
    
    . /etc/profile
    . ~/.bash_profile
  • 3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:
    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh

本文链接:https://www.yyqing.net/archives/671

评论(没有评论)
验证码