Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

定时执行Python脚本

2020/03/29 Python linux
Word count: 990 | Reading time: 4min

定时任务执行python脚本

使用linux的crontab

1.开启crontab日志。

crontab默认不开启日志,所以先开启定时任务的日志来查看

修改rsyslog服务,将/etc/rsyslog.d/50-default.conf 文件中的#cron.*前的 #删掉;用service rsyslog restart重启rsyslog服务:

2.写定时任务

开启本用户的定时任务,即创建以本用户名为文件名的定时任务文件,位置在/var/spool/cron/crontabs/crontab -e

定时任务语句格式为:执行周期+命令,周期有5个域,分别是

  • M: 分(0-59)
  • H:时(0-23)
  • D:天(1-31)
  • m: 月(1-12)
  • d: 周(0-6) //0为星期日

▲每个域不加限制任意的话用*

所以命令语句就是

1
2
*/5 * * * * cd /home/iris/; python aa.py
#时间# #command ; commond

写完后需要重启cron服务:service cron restart

如果定时运行的脚本需要root权限,那么可以直接把任务写在root用户的cron中

1
sudo crontab -u root -e

或者切换到root用户下再进行设置cron

1
2
3
4
5
6
7
8
# 可以以root身份执行crontab,sudo默认是需要输入密码。下面是运用这个方法的具体操作方法,命令执行顺序如下:

# 切换到root用户下
su -
# 执行如下命令进入到root用户crontab配置中
crontab -e
# 最后,加入你的任务
0 * * * * clear_img.sh >>clear_img.log

▲最后写完后需要重启cron服务:service cron restart

附录

常用周期格式:

  • 每五分钟执行 */5 * * * *
  • 每小时执行 0 * * * *
  • 每天执行 0 0 * * *
  • 每周执行 0 0 * * 0
  • 每月执行 0 0 1 * *
  • 每年执行 0 0 1 1 *

5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令
*/15 * * * * ls 每15分钟执行一次ls命令
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令
22 4 * * * root run-parts /etc/cron.daily每天4:22以root身份执行/etc/cron.daily目录中的所有可执行文件,run-parts参数表示,执行后面目录中的所有可执行文件。

~/Python_project/SeverChan_Nyedu

使用python crontab设置linux定时任务

通过python 来写 crontab配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from crontab import CronTab
# 创建当前用户的crontab,当然也可以创建其他用户的,但得有足够权限
my_user_cron = CronTab(user=True)
# 创建任务
job = my_user_cron.new(command='echo date >> ~/time.log')

# 设置任务执行周期,每两分钟执行一次
job.setall('*/2 * * * *')

# 当然还支持其他更人性化的设置方式,简单列举一些
job.minute.during(5,50).every(5)
job.hour.every(4)
job.day.on(4, 5, 6)
job.dow.on('SUN')
job.dow.on('SUN', 'FRI')
job.month.during('APR', 'NOV')
job.setall(time(10, 2))
job.setall(date(2000, 4, 2))
job.setall(datetime(2000, 4, 2, 10, 2))

# 同时可以给任务设置comment,这样就可以根据comment查询,很方便
job.set_comment("time log job")

# 根据comment查询,当时返回值是一个生成器对象,不能直接根据返回值判断任务是否#存在,如果只是判断任务是否存在,可直接遍历my_user_cron.crons
iter = my_user_cron.find_comment('time log job')

# 同时还支持根据command和执行周期查找,基本类似,不再列举
# 任务的disable和enable, 默认enable
job.enable(False)
job.enable()

# 最后将crontab写入配置文件
my_user_cron.write()

python中的轻量级定时任务调度库:schedule

提供博客python中的轻量级定时任务调度库:schedule

Author: Mrli

Link: https://nymrli.top/2018/11/07/定时执行Python脚本/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
多媒体Au使用
NextPost >
ServerChan+南邮教务处
CATALOG
  1. 1. 定时任务执行python脚本
    1. 1.1. 使用linux的crontab
      1. 1.1.0.1. 1.开启crontab日志。
      2. 1.1.0.2. 2.写定时任务
      3. 1.1.0.3. 附录
      4. 1.1.0.4. ~/Python_project/SeverChan_Nyedu
  2. 1.2. 使用python crontab设置linux定时任务
  3. 1.3. python中的轻量级定时任务调度库:schedule