linux下crontab allow,【Python】Linux crontab定时任务配置方法(详解)

本文详细介绍了Linux系统中的crontab命令,用于设置周期性任务。内容包括crontab文件的位置、用户crontab文件、cron.deny与cron.allow的权限控制,以及crontab文件的格式和定时任务的编写方法。此外,还提供了多个示例说明如何查看、编辑和删除定时任务,并强调了配置定时任务时需要注意的环境变量和路径问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CRONTAB概念/介绍html

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供以后读取和执行。linux

cron 系统调度进程。 可使用它在天天的非高峰负荷时间段运行做业,或在一周或一月中的不一样时段运行。cron是系统主要的调度进程,能够在无需人工干预的状况下运行做业。crontab命令容许用户提交、编辑或删除相应的做业。每个用户均可以有一个crontab文件来保存调度信息。系统管理员能够经过cron.deny 和 cron.allow 这两个文件来禁止或容许用户拥有本身的crontab文件。shell

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

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

SHELL=/bin/bashapp

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

MAILTO=rootide

HOME=/this

# run-partsurl

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

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:cron.deny 与 cron.allow文件

/etc/cron.deny 表示不能使用crontab 命令的用户

/etc/cron.allow 表示能使用crontab的用户。

默认状况下,cron.allow文件不存在。若是两个文件同时存在,那么/etc/cron.allow 优先。若是两个文件都不存在,那么只有超级用户能够安排做业。

可是让人纳闷的是cron.deny文件是空的,以下所示

[oracle@localhost etc]$ more cron.deny

4:cron.hourly,cron.daily,cron.monthly,cron.weekly

[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 cron.deny

cron.hourly:

total 0

cron.monthly:

total 8

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

cron.weekly:

total 16

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

-rwxr-xr-x 1 root root 414 Jun 6 2007 00-makewhatis.cron

cron.daily:

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-makewhatis.cron

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

-rwxr-xr-x 1 root root 121 Aug 22 2007 slocate.cron

lrwxrwxrwx 1 root root 28 May 16 2008 00-logwatch -> ../log.d/scripts/logwatch.pl

cron.d:

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:查看当前用户的定时任务

[oracle@localhost ~]$ crontab -l

* * * * * /home/oracle/test.sh >/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_archive.sh >/dev/null 2>&1

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

第一列 分钟: 1——59

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

第三列 日 : 1——31

第四列 月 : 1——12

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

第六列 要运行的命令

咱们暂且用C一、C二、C三、C四、C五、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_archive.sh >/dev/null 2>&1

表示天天23点59分执行脚本/home/oracle/scripts/alert_log_archive.sh

2: */5 * * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null 2>&1

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

3: 0 20 * * 1-5 mail -s "**********" kerry@domain.name < /tmp/maildata

周一到周五天天下午 20:00 寄一封信给 kerry@domain.name

..............................................

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

0表示键盘输入

1表示标准输出

2表示错误输出.

咱们首先建立test.sh脚本以下:

#! /bin/sh

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

date >> test.txt

而后添加做业

* * * * * /home/oracle/test.sh >/home/oracle/log.txt & 默认值为1,即和下面命令一致

* * * * * /home/oracle/test.sh 1>/home/oracle/log.txt &

* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt &

* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt 2>&1 &

1,2将tesh.sh 命令输出重定向到log.txt, 即输出内容不打印到屏幕上,而是输出到log.txt文件中。若是你须要追加而不是覆盖,能够用 >>代替>

2>&1 是将错误输出重定向到标准输出。 而后将标准输入重定向到文件log.txt。

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

注意事项:

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

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

2: 尽可能全部的文件都采用彻底路径方式,避免使用相对路径。

以上这篇Linux crontab定时任务配置方法(详解)就是小编分享给你们的所有内容了,但愿能给你们一个参考,也但愿你们多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值