linux系统下定时任务

linux系统定时任务

1、Linux系统定时任务at

(1)作用:定时任务,指定一个时间执行一个任务,只能执行一次

(2)用法:at [option] TIME

选项:-V 显示版本信息:

-l:列出指定队列中等待运行的作业;相当于atq

-d: 删除指定的作业;相当于atrm

-c:查看具体作业任务

-f/path/from/somefile:从指定的文件中读取任务

-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出

注:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户, at命令依赖于atd服务,需要启动才能实现at任务。

退出at命令:ctrl+d

[[email protected] ~]# at 2:29          #指定计划任务

at> ls

at> <EOT>

job 1 at Tue May  9 02:29:00 2017    #退出时按ctrl+d

[[email protected] ~]# at –l             #查看等待的任务

3      2017-04-04 06:42 a root

2      2017-04-03 12:00 a root

[[email protected] ~]# at -d 1           #删除指定的作业

(3)时间(TIME):定义出什么时候要进行at的任务

常用的时间格式有:

1)HH:MM:在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。

2)HH:MM YYYY-MM-DD:规定在某年某月的某一天的特殊时刻进行该项任务

3)HH:MM[am|pm] [Month][Date]:规定在某年某月某日的某时刻进行该项任务

4)HH:MM[am|pm] + number[minutes|hours|days|weeks]:规定在某个时间点再加多少时间后才进行

[[email protected] ~]# at 2:36 pm

at> touch day123.txt

at> echo hello

at> <EOT>

[[email protected] ~]# at now + 5 hours

at> date

at时间格式的扩展:

1)能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。

2)能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。

3)能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午

4) 能够指定命令执行的具体日期,指定格式为monthday(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。

5)能够使用相对计时法。指定格式为:now +count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。

6)能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间

[[email protected] ~]# at noon   #在中午执行

at> ls –l

[[email protected] ~]# at tomorrow #在明天这个时候执行任务

at> wall hi

(4)任务的执行方式

1)交互式

2)输入重定向

3)at –f

[[email protected] ~]# at 12:00      #交互式执行任务

at> ls

at> <EOT>

job 4 at 2017-04-03 12:00

[[email protected] ~]# at 17:00 <ls   #输入重定项执行任务

job 5 at 2017-04-03 17:00

[[email protected] ~]# at 15:00 -f ls   #通过-f指定命令存放文件执行任务

job 6 at 2017-04-03 15:00

(4)限制用户的使用权限

控制文件目录:/etc/at.allow和/etc/at.deny

控制文件使用规则:

1)先找寻 /etc/at.allow 这个文件,写在这个文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在 at.deny 当中);

2)如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者就可以使用 at 命令。

3)如果两个文件都不存在,那么只有 root 可以使用 at 这个命令。

4)在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的,因此系统通常会保留一个空的 /etc/at.deny 文件,意思是允许所有人使用 at 命令的意思。

5)如果不希望有某些使用者使用 at 的话,将那个使用者的帐号写入 /etc/at.deny 即可! 一个帐号写一行。

(5)at队列存放目录:/var/spool/at/

2、Linux系统定时任务cron

(1)概述:

1)作用:周期性任务计划

2)相关的程序包:

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

cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务

crontabs:包含CentOS提供系统维护任务

3)使用前要确保crond守护处于运行状态:

CentOS 7:systemctlstatus crond

CentOS 6:service crondstatus

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

系统cron任务:/etc/crontab

用户cron任务:crontab命令

日志:/var/log/cron

(2)系统定时任务

1)配置文件说明:

[[email protected] ~]# cat /etc/crontab

SHELL=/bin/bash

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

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- 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  #代表一周中第几天

# | |  |  |  |

# * *  *  *  *user-name command to be executed #user-name代表以哪个用户身份去执行,后面为命令

2)时间表示法:

特定值:给定时间点有效取值范围内的值

*:给定时间点上有效取值范围内的所有值,表示“每...”

离散取值:#,#,#

连续取值:#-#

在指定时间范围上,定义步长/#: #即为步长

注:如果同时出现周和日期为或的关系,只出现周或日期为且的关系

特殊的时间格式:

@yearly 0 0 1 1 *    #每年执行一次,此处为每年1月1日0时0分执行

@annually 0 0 1 1 *  #每年执行一次,此处为每年1月1日0时0分执行

@monthly 0 0 1 * *  #每月执行一次,此处为每月1日0时0分执行

@weekly 0 0 * * 0   #每周执行一次,此处为每周日0时0分执行

@daily 0 0 * * *     #每天执行一次,此处为每天的0时0分执行

@hourly 0 * * * *   #每小时执行一次,此处为每小时0分执行

[[email protected] ~]# tail -3 /etc/crontab

45 22 * * * root /sbin/reboot   #每天22:45执行重启命令

*/10 * * * * root /usr/bin/who >>who.log   #每隔10分钟执行一次命令who,将执行结果保存在who.log

0 0 1-7,10 * 1,3 root /bin/bash/data/lograta.sh #每月1至7号或十号或周一,周三执行脚本lograta.sh

(3)anacron系统

1)系统计划任务相关配置文件

/etc/crontab  #系统计划任务

/etc/cron.d/配置文件

/etc/cron.hourly/#每小时的计划任务

/etc/cron.daily/   #每天的计划任务

/etc/cron.weekly/#每周计划任务

/etc/cron.monthly/脚本

2)作用:运行计算机关机时cron不运行的任务,CentOS6以后版本取消anacron服务,由crond服务管理

3)配置文件:/etc/anacrontab,负责执行/etc/cron.daily/etc/cron.weekly/etc/cron.monthly中系统任务。

[[email protected] ~]# cat /etc/anacrontab

# /etc/anacrontab: configuration file foranacron

# See anacron(8) and anacrontab(5) fordetails.

SHELL=/bin/sh

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

MAILTO=root

# the maximal random delay added to the basedelay of the jobs

RANDOM_DELAY=45

# the jobs will be started during thefollowing hours only

START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command

1      5       cron.daily              nice run-parts /etc/cron.daily

7      25      cron.weekly             nice run-parts /etc/cron.weekly

@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

4)由/etc/cron.hourly/0anacron执行,当执行任务时,更新/var/spool/anacron/cron.daily文件的时间戳。

(4)管理临时文件

1)CentOS6使用/etc/cron.daily/tmpwatch定时清除临时文件

2)CentOS7使用systemd-tmpfiles-setup服务实现

(5)用户计划任务crontab命令

1)每个用户都有专用的cron任务文件,存放目录为/var/spool/cron/USERNAME

2)crontab命令用法:crontab[-u user] [-l | -r | -e] [-i]

用法同系统定时任务cron,只是在命令前不需要加执行的用户

选项说明:-l: 列出所有任务;

-e: 编辑任务;

-r: 移除所有任务;

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

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

[[email protected] ~]# crontab  -e   #编辑定时任务

no crontab for root - using an empty one

10 4 1 * * /data/scripts/backup.sh  >/dev/null &>1

30 3 * * mon cat /proc/meminfo >>/tmp/meminfo

0 */3 * * * /bin/bash /data/scripts/who.sh>/dev/null &>1

[[email protected] ~]# crontab  -l    #查看定时任务

10 4 1 * * /data/scripts/backup.sh  >/dev/null &>1

30 3 * * mon cat /proc/meminfo >>/tmp/meminfo

0 */3 * * * /bin/bash /data/scripts/who.sh>/dev/null &>1

[[email protected] ~]# crontab  -r   #移除所有的定时任务

3)限制用户cron使用权限(用法同at命令限制用户权限):

/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。

无论使用控制文件中的规定如何,根用户都总是可以使用cron。

如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。

如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron,其他用户可以正常使用cron

如果cron.allow和cron.deny都不存在时,实拒绝除root外的所有用户使用cron。

时间: 2024-07-28 20:28:17

linux系统下定时任务的相关文章

Linux系统下定时任务软件种类

Linux系统下定时任务软件种类 严格的说,Linux系统下的定时任务软件真的不少,例如:at,crontab,anacron. at:适合仅执行一次就结束的调度任务命令,例如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务.要执行at命令,还需要启动一个名为atd的服务才行,在老男孩的工作中从来都不会有需求用这个.因此,建议大家不要深入研究了,到此我们讲解到此为止即可. [[email protected] study_20160420]# chkconfig --list

Linux系统下的定时任务Crontab

什么是Crontab Crontab是Linux系统下的定时任务工具,相当于WIN7系统的任务计划,能够让系统定时做出详见 Cron Crontab能用来做什么 Crontab能用来添加Linux或者Unix系统中的定时任务,让系统定时执行某个命令,比如服务器的数据库需要每天凌晨重启下,不可能每天凌晨起来手动重启.可以用Crontab添加凌晨5点重启数据库的定时任务,系统到每天凌晨5点就会自动重启数据了. Crontab能做的事情还很多,比如定时发送邮件,定时检验库存,定时清理日志,定时备份数据

关于linux系统下CRONTAB运行python脚本不生效

关于linux系统下CRONTAB运行python脚本不生效 运维中难免会在定时任务中同时使用shell和python脚本,shell脚本不生效大部分为环境变量的问题,在脚本前增加环境变量基本能解决,如加上 source /etc/profile. 最近遇到python脚本不能执行的情况,状态描述,如目录/home/script/SH下有脚本Qdd.py和download.sh,手动是可以执行的是生效的,如下: python3 /home/script/SH/Qdd.py 放到定时任务cront

Linux系统下的shutdown命令用于安全的关闭/重启计算机

Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提示关机操作.定时关机只需要一个简单的参数,既可以是倒计时,也可以是确切的时间. 命令格式 1 shutdown [选项] [时间] [消息] 并有如下选项: - k 不执行任何关机操作,只发出警告信息给所有用户 - r 重新启动计算机 - h 关机并彻底断电 - f 快速关机且重启动时跳过fsck

第九章 Linux系统下分区、格式化磁盘,学会挂载和卸载磁盘

1. 请查资料了解这些术语:/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?/dev/hda, /dev/hdb 是 IDE借口硬盘的块文件. /dev/hda  第一块IDE磁盘 : /dev/hdb 第二块IDE磁盘 /dev/sda, /dev/sdb 是SCSI接口硬盘的块文件. /dev/sda 第一块SCSI磁盘 :/dev/sdb 第二块SCSI磁盘 2. 为什么 du -b /etc/passwd  和 du -k  /etc/

在虚拟机的Linux系统下安装wineqq

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 本文参考教程:http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=7688&extra=page%3D1 WineQQ下载地址:http://pan.baidu.com/s/1c2FSTsk qq是一款国内非常著名的聊天工具,但是在腾讯的官网并没有Linux操作系统下的qq安装版本,但是我们也有办法在Linux系统下安装qq,下面我们实现在Linux安装w

linux系统下运行java项目的脚本编写

本文主要讲linux系统下运行jar包,至于如何打包jar包,放到linux系统下可以参考其他的博客. 在linux系统下运行jar包的命令如下: 1.java -jar xxxxx.jar  // 当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 2.java -jar xxxxx.jar &   //当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行. 3.nohup Java -jar xxxxxx.jar &  //意思是不挂断运行命令,当账户退

Linux系统下利用文件创建文件系统

在Linux系统下利用文件创建文件系统,小伙伴们乍一听也许会有点不知道其意义何在. 其实不然,利用文件创建文件系统还是相当有实用价值的 首先我们在做一些测试时,不想使用实际的磁盘分区时,我们可以利用文件创建文件系统,然后在其上做一些测试: 其次,我们将数据写在利用文件创建的文件系统上,必要时,我们可以将文件拷走,实现数据的便捷迁移,而在磁盘分区上的数据我们想拷走就比较麻烦了. 废话不多说,下面就来做个小实验,来演示下其步奏: 首先我们在/testdir测试目录下创建一个partfile文件 利用

linux系统下文件查找

在我们实际应用中,经常需要查找某个特定的文件,或者根据文件的某个特定属性进行查找,今天小菜就给大家分享一下,linux系统下文件查找的两大利器: 1,locate:非实时查找(基于预先生成的数据库查找):模糊匹配:速度快 2,find:实时查找(遍历目录中的所有文件完成查找):精确匹配,支持众多查找标准:速度慢 一.locate 查询系统上预先生成的文件索引数据库:/var/lib/mlocate/mlocate.db 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务) 管