简单强大的Python库!Schedule—实用的周期任务调度工具

简单强大的Python库!Schedule—实用的周期任务调度工具,第1张

如果你想在Linux服务器上周期性地执行某个 Python 脚本,最出名的选择应该是 Crontab 脚本,但是 Crontab 具有以下缺点:

1不方便执行 秒级的任务

2当需要执行的定时任务有上百个的时候,Crontab的 管理就会特别不方便

另外一个选择是 Celery,但是 Celery 的配置比较麻烦,如果你只是需要一个轻量级的调度工具,Celery 不会是一个好选择。

在你想要使用一个轻量级的任务调度工具,而且希望它尽量简单、容易使用、不需要外部依赖,最好能够容纳 Crontab 的所有基本功能,那么 Schedule 模块是你的不二之选。

使用它来调度任务可能只需要几行代码,感受一下:

上面的代码表示每10分钟执行一次 job 函数,非常简单方便。你只需要引入 schedule 模块,通过调用 sceduleevery(时间数)时间类型do(job) 发布周期任务。

发布后的周期任务需要用 run_pending 函数来检测是否执行,因此需要一个 While 循环不断地轮询这个函数。

下面具体讲讲Schedule模块的安装和初级、进阶使用方法。

1准备

请选择以下任一种方式输入命令安装依赖

1 Windows 环境 打开 Cmd (开始-运行-CMD)。

2 MacOS 环境 打开 Terminal (command+空格输入Terminal)。

3 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal

2基本使用

最基本的使用在文首已经提到过,下面给大家展示更多的调度任务例子:

可以看到,从月到秒的配置,上面的例子都覆盖到了。不过 如果你想只运行一次任务 的话,可以这么配:

参数传递

如果你有参数需要传递给作业去执行,你只需要这么做:

获取目前所有的作业

如果你想获取目前所有的作业:

取消所有作业

如果某些机制触发了,你需要立即清除当前程序的所有作业:

标签功能

在设置作业的时候,为了后续方便管理作业,你可以给作业打个标签,这样你可以通过标签过滤获取作业或取消作业。

设定作业截止时间

如果你需要让某个作业到某个时间截止,你可以通过这个方法:

截止日期之后,该作业将无法运行。

立即运行所有作业,而不管其安排如何

如果某个机制触发了,你需要立即运行所有作业,可以调用 schedulerun_all :

3高级使用

装饰器安排作业

如果你觉得设定作业这种形式太啰嗦了,也可以使用装饰器模式:

并行执行

默认情况下,Schedule 按顺序执行所有作业。其背后的原因是,很难找到让每个人都高兴的并行执行模型。

不过你可以通过多线程的形式来运行每个作业以解决此限制:

日志记录

Schedule 模块同时也支持 logging 日志记录,这么使用:

效果如下:

异常处理

Schedule 不会自动捕捉异常,它遇到异常会直接抛出,这会导致一个严重的问题: 后续所有的作业都会被中断执行 ,因此我们需要捕捉到这些异常。

你可以手动捕捉,但是某些你预料不到的情况需要程序进行自动捕获,加一个装饰器就能做到了:

这样, bad_task 在执行时遇到的任何错误,都会被 catch_exceptions 捕获,这点在保证调度任务正常运转的时候非常关键。

 本篇中主要从具体的实例中说明怎样创建计划任务

1,周期性任务计划:cron

(1)相关的程序包:默认已安装

使用 rpm –qi cronie 查看相关包具体信息

cronie: 主程序包,提供crond守护进程及相关辅助工具

cronie-anacron: cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行

(2)计划周期性执行的任务提交给crond,到指定时间会自动运行

系统cron任务:系统维护作业

(3)要确保crond守护处于运行状态:查看crond服务是否启动

    CentOS 7:

    systemctl status crond 查看是否启动

       systemctl start  crond 启动方法

    CentOS 6:

   service crond status查看是否启动

    service crond start启动方法

(4)系统cron任务:系统维护作业

/etc/crontab 将计划任务写入该文件

用户cron任务:

crontab命令 使用crontab命令创建

(5)日志: /var/log/cron 监控计划任务

2系统计划任务

(1)查看任务  vim  /etc/crontab

示例:每隔10分钟执行一次磁盘空间检查和磁盘节点号检查,一旦发现任何分区利用率大于80就执行wall警报

1、解释:第1位 /10 表示每10分钟执行一次(注意,/#这里#仅限能被60 整除的数,如 /12 表示每12分执行一次)

第2位 小时,代表每个小时都要执行,2代表凌晨两点执行,20代表晚上8点执行(24小时制) 

        第3位日,代表每天执行,4 表示每月4号执行。20代表每月20号执行(1-31天)

        第4位月,代表每月都执行,1代表一月,2代表2月 (1-12月)

        第5位星期几,代表任意一天,1表示星期一,(0-7,0和都表示星期日)

        第6位root 表示执行人是root

        第7位/root/bin 执行的 *** 作,可以是一条命令,也可以是脚本名称,注意这里写上完整的路径。

2脚本示范

注意:(1)没有被重定向的输出会被邮寄给用户

(2)根用户root能够修改其它用户的作业

(3)运行结果的标准输出和错误以邮件通知给相关用户

   执行的命令结果最好导入垃圾桶中

   COMMAND &> /dev/null

(4)对于cron任务来讲, %有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义

 建议将执行的 *** 作写入脚本中,不要直接写在/etc/crontab中

(5)命令在写入脚本或者/etc/crontab之前,建议先做测试

(6)这里写完脚本后要把脚本加上执行权限,chmod +x checkdisksh(脚本名)

3用户周期性任务

(1)用户cron:

crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

crontab命令:本身有suid 权限

crontab [-u user] [-l | -r | -e] [-i]

-l: 列出所有任务;

-e: 编辑任务;

  wall I am 

-r: 移除所有任务;

-i:同-r一同使用,以交互式模式移除指定任务

-u user: 仅root可运行,指定用户管理cron任务

                               crontab –e –u mage

(2)例子1:普通用户liyi  每分钟广播一次hello

         切换到liyi  用户下 su – liyi

切换到root用户下,exit,进入/var/spool/cron/ ,可以看到guan用户创建的任务,当然root用户可以修改和删除普通用户的计划任务。

4控制用户执行计划任务

    控制用户执行计划任务:   /etc/cron{allow,deny}

       白名单: /etc/cronallow 默认不存在,只有该文件中的用户才能执行crontab命令

       黑名单:/etc/crondeny 默认存在,拒绝该文件中用户执行crontab命令, 而没有在crondeny 文件中的使用者则可执行

     如果两个文件都不存在,只有root 可以执行 crontab 命令

           解释:先看/etc/cronallow文件,如果有,则只看/etc/cronallow文件,只有/etc/cronallow中的用户才能执行,如果没有该文件,则查看/etc/crondeny文件。除/etc/crondeny中的用户之外的用户都可以创建cron任务,如果两个文件都不存在,则仅root可以创建cron任务。

可以使用xrdp软件,下面是具体的 *** 作步骤: 1给Linux系统安装xrdp工具,在命令行中输入:sudo apt-get install xrdp 2在windows中点击开始>运行中输入mstsc快速打开远程桌面工具 3输入预远程桌面Linux服务器的IP地址

1、首先需要创建一个脚本文件确保手动可以执行。

2、接着在d出的界面检查cron 配置文件。

3、执行crontab  -e 进入编辑页面,增加需要计划执行的sh文件设置每隔5分钟执行一次脚本。

4、重新启动crontab 任务 。并在/var/log/cronlog中查看运行情况即可。

linux下定时执行任务的方法 非原创,个人网上收集整理了一下

在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

cron的配置文件称为“crontab”,是“cron table”的简写。

一、cron在3个地方查找配置文件:

1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。

一般一个用户最多只有一个crontab文件。

二、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# ---------------- minute (0 - 59)

# | ------------- hour (0 - 23)

# | | ---------- day of month (1 - 31)

# | | | ------- month (1 - 12) OR jan,feb,mar,apr

# | | | | ---- day of week (0 - 6) (Sunday=0 or 7) OR

#sun,mon,tue,wed,thu,fri,sat

# | | | | |

# command to be executed

三、/etc/crond/ 这个目录用来存放任何要执行的crontab文件或脚本。

四、权限

crontab权限问题到/var/adm/cron/下一看,文件cronallow和crondeny是否存在

用法如下:

1、如果两个文件都不存在,则只有root用户才能使用crontab命令。

2、如果cronallow存在但crondeny不存在,则只有列在cronallow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。

3、如果cronallow不存在, crondeny存在,则只有列在crondeny文件里面的用户不能使用crontab命令,其它用户都能使用。

4、如果两个文件都存在,则列在cronallow文件中而且没有列在crondeny中的用户可以使用crontab,如果两个文件中都有同一个用户,

以cronallow文件里面是否有该用户为准,如果cronallow中有该用户,则可以使用crontab命令。

AIX 中 普通用户默认都有 crontab 权限,如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/crondeny

HP-UNIX 中默认普通用户没得crontab 权限 ,要想放开普通用户的crontab 权限可以编

五、创建cron脚本

第一步:写cron脚本文件,命名为crontestcron。

15,30,45,59 echo "xgmtest" >> xgmtesttxt 表示,每隔15分钟,执行打印一次命令

第二步:添加定时任务。执行命令 “crontab crontestcron”。搞定

第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

六、cron服务

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

/sbin/service crond status //查看服务状态

crontab用法

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。

每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

每个域之间使用空格或者制表符分隔。格式如下:

minute hour day-of-month month-of-year day-of-week commands

合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)

除了数字还有几个个特殊的符号就是""、"/"和"-"、",",代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

-l 在标准输出上显示当前的crontab。

-r 删除当前的crontab文件。

-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。

几个例子:

每天早上6点

0 6 echo "Good morning" >> /tmp/testtxt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 /2 echo "Have a break now" >> /tmp/testtxt

晚上11点到早上8点之间每两个小时和早上八点

0 23-7/2,8 echo "Have a good dream" >> /tmp/testtxt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 1-3 command line

1月1日早上4点

0 4 1 1 command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

每小时执行/etc/cronhourly内的脚本

01 root run-parts /etc/cronhourly

每天执行/etc/crondaily内的脚本

02 4 root run-parts /etc/crondaily

每星期执行/etc/cronweekly内的脚本

22 4 0 root run-parts /etc/cronweekly

每月去执行/etc/cronmonthly内的脚本

42 4 1 root run-parts /etc/cronmonthly

注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

5,15,25,35,45,55 16,17,18 command

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。

00 15 1,3,5 shutdown -r +5

每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

10,40 innd/bbslink

每小时的1分执行用户目录下的bin/account这个指令:

1 bin/account

每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):

20 3 (/bin/rm -f expirels loginsbad;bin/expire$#@62;expire1st)

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire1st这个指令,并把结果添加在mmtxt这个文件之后(mmtxt文件位于用户自己的目录位置)。

12,55 3 4-9 1,4 /bin/rm -f expire1st$#@62;$#@62;mmtxt

at命令实现定时任务

假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。

at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

at命令执行流程如下

# at 2:05 tomorrow

at>/home/kyle/do_job

at> Ctrl+D

AT Time中的时间表示方法

-----------------------------------------------------------------------

时 间 例子 说明

-----------------------------------------------------------------------

Minute at now + 5 minutes 任务在5分钟后运行

Hour at now + 1 hour 任务在1小时后运行

Days at now + 3 days 任务在3天后运行

Weeks at now + 2 weeks 任务在两周后运行

Fixed at midnight 任务在午夜运行

Fixed at 10:30pm 任务在晚上10点30分

注意:linux默认为不启动,而ubuntu默认为启动的。检查是否启动,用service atd检查语法,用service atd status检查atd的状态,用service atd start启动atd服务。

查看at执行的具体内容:一般位于/var/spool/at目录下面, 用vi打开,在最后一部分就是你的执行程序

参数详解

-V : 印出版本编号

-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c z 以及 A, B, Z 共 52 个

-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者

-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入

网络应用

-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)

-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)

-v : 列出所有已经完成但尚未删除的指定

删除任务

atrm 2

三天后的下午 5 点锺执行 /bin/ls :

at 5pm 3 days /bin/ls

三个星期后的下午 5 点锺执行 /bin/ls :

at 5pm 2 weeks /bin/ls

明天的 17:20 执行 /bin/date :

at 17:20 tomorrow /bin/date

1999 年的最后一天的最后一分钟印出 the end of world !

at 23:59 12/31/1999 echo the end of world !

顶2踩0

1: crontab文件一般位于/etc/下,这里面存放系统运行的的调度程序。

[root@localhost cron]# more /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 root run-parts /etc/cronhourly

02 4 root run-parts /etc/crondaily

22 4 0 root run-parts /etc/cronweekly

42 4 1 root run-parts /etc/cronmonthly

2:每个用户都会生成一个自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下

[root@localhost cron]# cd /var/spool/cron

[root@localhost cron]# ls

oracle root

如果你用命令crontab -r 就会删除当前用户的crontab文件,例如你切换到oracle账号下,执行了该命令,那么/var/spool/cron/oracle文件就会删除,如果要创建该文件只需要用crontab -e命令即可。注意,普通用户一般没有权限访问/var/spool/cron

3:crondeny 与 cronallow文件

/etc/crondeny 表示不能使用crontab 命令的用户

/etc/cronallow 表示能使用crontab的用户。

默认情况下,cronallow文件不存在。如果两个文件同时存在,那么/etc/cronallow 优先。如果两个文件都不存在,那么只有超级用户可以安排作业。

但是让人纳闷的是crondeny文件是空的,如下所示

[oracle@localhost etc]$ more crondeny

4:cronhourly,crondaily,cronmonthly,cronweekly

[oracle@localhost etc]$ ls -lrt cron

-rw-r--r-- 1 root root 255 Sep 21 2004 crontab

-rw-r--r-- 1 root root 0 May 16 2008 crondeny

cronhourly:

total 0

cronmonthly:

total 8

-rwxr-xr-x 1 root root 278 Sep 29 2004 0anacron

cronweekly:

total 16

-rwxr-xr-x 1 root root 277 Sep 29 2004 0anacron

-rwxr-xr-x 1 root root 414 Jun 6 2007 00-makewhatiscron

crondaily:

total 60

-rwxr-xr-x 1 root root 286 Aug 14 2004 tmpwatch

-rwxr-xr-x 1 root root 276 Sep 29 2004 0anacron

-rwxr-xr-x 1 root root 2133 Dec 1 2004 prelink

-rwxr-xr-x 1 root root 180 May 2 2006 logrotate

-rwxr-xr-x 1 root root 418 Jun 6 2007 00-makewhatiscron

-rwxr-xr-x 1 root root 104 Aug 2 2007 rpm

-rwxr-xr-x 1 root root 121 Aug 22 2007 slocatecron

lrwxrwxrwx 1 root root 28 May 16 2008 00-logwatch -> /logd/scripts/logwatchpl

crond:

total 12

-rw------- 1 root root 366 Jun 12 2007 sa-update

-rw-r--r-- 1 root root 188 Jul 18 2007 sysstat

CRONTAB在线手册

注意:不同版本的Linux系统,可能crontab手册内容有所出入,请以实际版本为准。

[oracle@localhost ~]$ man crontab | more

CRONTAB(1) CRONTAB(1)

NAME

crontab - maintain crontab files for individual users (ISC Cron V41)

SYNOPSIS

crontab [-u user] file

crontab [-u user] [-l | -r | -e] [-i] [-s]

DESCRIPTION

Crontab is the program used to install, deinstall or list the tables

used to drive the cron(8) daemon in ISC Cron Each user can have their

own crontab, and though these are files in /var/spool/ , they are not

intended to be edited directly For SELinux in mls mode can be even

more crontabs - for each range For more see selinux(8)

If the cronallow file exists, then you must be listed therein in order

to be allowed to use this command If the cronallow file does not

exist but the crondeny file does exist, then you must not be listed in

the crondeny file in order to use this command If neither of these

files exists, only the super user will be allowed to use this command

OPTIONS

-u It specifies the name of the user whose crontab is to be

tweaked If this option is not given, crontab examines "your"

crontab, ie, the crontab of the person executing the command

Note that su(8) can confuse crontab and that if you are running

inside of su(8) you should always use the -u option for safety's

sake The first form of this command is used to install a new

crontab from some named file or standard input if the pseudo-

filename "-" is given

-l The current crontab will be displayed on standard output

-r The current crontab will be removed

-e This option is used to edit the current crontab using the editor

specified by the VISUAL or EDITOR environment variables After

you exit from the editor, the modified crontab will be installed

automatically

-i This option modifies the -r option to prompt the user for a

'y/Y' response before actually removing the crontab

-s It will append the current SELinux security context string as an

MLS_LEVEL setting to the crontab file before editing / replace-

ment occurs - see the documentation of MLS_LEVEL in crontab(5)

SEE ALSO

crontab(5), cron(8)

FILES

/etc/cronallow

/etc/crondeny

STANDARDS

The crontab command conforms to IEEE Std10032-1992 (‘‘POSIX'') This

new command syntax differs from previous versions of Vixie Cron, as

well as from the classic SVR3 syntax

DIAGNOSTICS

A fairly informative usage message appears if you run it with a bad

command line

AUTHOR

Paul Vixie <vixie@iscorg>

4th Berkeley Distribution 16 Januar 2007 CRONTAB(1)

CRONTAB语法及应用

1:查看当前用户的定时任务

[oracle@localhost ~]$ crontab -l

/home/oracle/testsh >/dev/null 2>&1

2:编辑当前用户的定时任务

可以在编辑状态修改、删除、新增一些定时任务。注释一般用#

[oracle@localhost ~]$ crontab -e

3:删除当前用户的定时任务

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -l

no crontab for root

4:

如下所示,一般crontab文件里面的定时任务格式如下所示:

59 23 /home/oracle/scripts/alert_log_archivesh >/dev/null 2>&1

crontab 文件中每个条目中各个域的意义和格式:

第一列 分钟: 1——59

第二列 小时: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)

第六列 要运行的命令

我们暂且用C1、C2、C3、C4、C5、C6代表这六列,前面五列通过组合方式来决定执行脚本的频率,最小频率为每分钟执行一次,其中Cn可以用 ; /n ; T1-T2; a,b,c; 四种形式来表示:

当 C1 为 时表示每分钟都要执行脚本,C2 为 时表示每小时都要执行程式,依次类推

当 C1 为 T1-T2 时表示从第 T1 分钟到第 T2 分钟这段时间内要执行,C2 为 T1-T2 时表示从第 T1 到第 T2 小时都要执行,依次类推

当 C1 为 /n 时表示每 n 分钟的时间间隔执行一次,C2 为 /n 表示每隔n小时的间隔执行一次,依次类推

当 C1 为 a, b, c, 时表示第 a, b, c, 分钟要执行,C2 为 a, b, c, 时表示第 a, b, c个小时要执行,依次类推

下面列举几个例子供大家参考

1: 59 23 /home/oracle/scripts/alert_log_archivesh >/dev/null 2>&1

表示每天23点59分执行脚本/home/oracle/scripts/alert_log_archivesh

2: /5 /home/oracle/scripts/monitoring_alert_logsh >/dev/null 2>&1

表示每5分钟执行一次脚本/home/oracle/scripts/monitoring_alert_logsh

3: 0 20 1-5 mail -s "" kerry@domainname < /tmp/maildata

周一到周五每天下午 20:00 寄一封信给 kerry@domainname

关于 >/dev/null 2>&1 的解释:

0表示键盘输入

1表示标准输出

2表示错误输出

我们首先创建testsh脚本如下:

#! /bin/sh

echo "hello, everybody, now is " `date`

date >> testtxt

然后添加作业

/home/oracle/testsh >/home/oracle/logtxt & 默认值为1,即和下面命令一致

/home/oracle/testsh 1>/home/oracle/logtxt &

/home/oracle/testsh 2>/home/oracle/logtxt &

/home/oracle/testsh 2>/home/oracle/logtxt 2>&1 &

1,2将teshsh 命令输出重定向到logtxt, 即输出内容不打印到屏幕上,而是输出到logtxt文件中。如果你需要追加而不是覆盖,可以用 >>代替>

2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件logtxt。

&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。

注意事项:

配置定时任务时,需要注意两个问题:

1: 在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置

2: 尽量所有的文件都采用完全路径方式,避免使用相对路径。

以上就是关于简单强大的Python库!Schedule—实用的周期任务调度工具全部的内容,包括:简单强大的Python库!Schedule—实用的周期任务调度工具、创建周期性任务 cron、如何用crontab运行一个图形化界面的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10157878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存