周期性计划任务对应的服务是(周期性任务计划的设置)

http://www.itjxue.com  2023-02-14 18:28  来源:未知  点击次数: 

linux的定时任务服务名是

Cron是Linux系统中以后台进程模式周期性执行命令或指定程序任务的服务软件。默认情况下,安装完Linux操作系统之后,Cron服务软件便会启动,服务对应的进程名字为Crond,Crond服务会定期(默认每分钟检查一次)检查系统中是否有需要执行的任务工作计划。如果有,则会根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时任务服务就相当于我们平时使用的闹钟(或手机闹钟)。《Linux就该这么学》

Linux系统下的定时任务软件

严格地说,Linux系统下的定时任务软件还真不少,例如,at、Cron和anacron等,下面分别来简单介绍一下。

·at定时任务软件(依赖于atd服务)适合于仅执行一次就结束的调度任务工作。例如,某天夜里需要处理一个工作任务,仅仅是这一天的夜里,对于这种突发性的工作任务,那就可以使用该软件。要使得at这个软件设定的配置生效,还需要提前启动一个名为atd的服务才行,这个工具在工作中的使用需求很少,读者简单了解一下即可。

·Cron定时任务软件依赖于Crond服务。正如前面所说,通过crontab命令可以配置周期性执行的定时任务工作计划,例如,每五分钟做一次服务器时间同步。要使得crontab命令设定的配置生效,还需要事先启动一个服务Crond才行。这个Cron工具(对应的crontab命令以及依赖的Crond服务)就是运维工程师在生产工作中最常使用的工具,请大家务必掌握。

Linux任务计划和周期性任务执行

常用选项:

-l 查看作业队列,相当于atq

-f 从某个指定文件文件中读取作业任务,不通过交互式输入。

-d 删除指定的作业任务,相当于atrm。

-c 查看指定作业具体内容。

-q QUEUE指明队列。

TIME时间格式有:

HH:MM 小时:分钟 例如04:00

HH:MM YYYY-MM-DD 小时:分钟 年-月-日 例如15:00 2017-11-25

HH:MM[am|pm] [Month] [Date] 例如:04pm July 30

HH:MM[am|pm] + number [minutes|hours|days|weeks]在某个时间点再加几个时间后执行

例如:now + 5minutes 5分钟后执行

04pm + days三天后下午4点执行

[root@dxlcentOS ~]# at 15:55 2017-11-25 在15点55分执行:切换到tmp目录,执行ls命令

at cd /tmp

at ls

at EOT

job 3 at Sat Nov 25 15:55:00 2017

注意:输入结束后按ctrl+d,任务输入结束at EOT,执行结果屏幕不会显示,会以邮件形式发送到邮箱。要是没有mail命令,进行yum -y install mailx安装。

执行周期性任务要确保crond守护进程在运行。

执行pstree,要是crond运行起来可以看到。

或者执行:~]# systemctl status crond (centos7)

Active: active (running) ... ...

centos6:~]# service crond status

... is running

有时候为了安全起见,可以将不允许某些用户执行周期性任务的用户名添加到/etc/cron.deny文件里面即可。

cron任务分类:分系统cron任务和用户cron任务

总结:1.cron周期任务最小时间单位是分钟。

2.定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可。

3.某任务在指定的时间因关机未能执行,下次开机不会自动执行。

4.当修改之前定好的任务或新增循环任务时最好执行一下systemctl restart crond。

5.如果是系统管理使用的循环任务最好写入/etc/crontab。

6.避免系统资源分配不均,周与日月不可以同时并存。

cron循环任务设定后,要是服务器因意外关机,那么在停机期间,cron设定的循环任务是不会运行的,当服务器开机后,也不会执行过去到达时间点的循环任务,只能等待下个时间点到来才执行。要想重新执行,anacron就可以解决这个问题。

anacron 是一个程序不是一个服务,当centos进入crontab排程时,anacron 会主动每一小时运行一次。

创建周期性任务 cron

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

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 checkdisk.sh(脚本名)

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/cron.allow 默认不存在,只有该文件中的用户才能执行crontab命令

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

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

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

如何在Linux中实现计划任务

对于系统管理员而言,做系统备份是一个系统管理员非常重要的工作,但是每天重复的工作是一件非常繁琐的工作,那有没有一种方法可以让系统每天每到固定的时间都自己做备份工作呢?答案是有的,那就是计划任务,现在我们就来说说计划任务是怎么一回事,以及怎么去实现它

一般来说计划任务分两种一次性计划任务和周期性计划任务

1, 一次性计划任务:顾名思义一次性计划任务就是在某一个时间点只执行一次的任务,例如像,下周一有约会需要提醒这样只执行一次的任务,

命令at ,batsh实现一次性计划任务

At的用法:at time

例如 at 10:29 就是指在10:29 分执行的任务

执行的结果如下

At 命令的时间格式非常灵活我们可以使用

At now+1min

At 11:54

At date 等在这里不再赘述

Batsh 命令是指在系统空闲时执行的一次性计划任务,比如你有一件不太重要的任务需要执行,当重要的任务执行完才会执行

Batsh 的用法

Batsh 回车 然后输入你要执行的任务

2, 周期性计划任务 :周期性计划任务指的是每隔一段时间就执行一次的任务,比如闹钟每天早上六点叫你起床 命令 cron

(1) 加载cron 模块crond:crond是一种服务一般情况下crond是默认加载的但是也不排除有特出情况

Modprobe crond

(2) crond服务操作 survice crond {start|status|stop|restart}

start 启动crond

status查看crond的运行状态

stop 停止crond服务

restart 重启crond服务

(3) crond的分类 :系统crond和用户crond

系统crond 是系统运行所需要的crond服务 /etc/crontab

用户crond使用户定义的crond服务/var/spool/cron/USERNAME

(4) cron 的书写格式 min hour day month week command

共六段 第一段min 指分钟,第二段hour指小时,第三段day指天,第四段mouth指月份,第五段week指周,第六段command指你要执行的命令例如

10 1 * * 7 ls –l /etc 指的是 每周末的一点10分执行ls –l /etc命令

在字段中的*指在指定的时间域上所有的时间

—对应时间域上的连续取值时间 如1-10 1到10

,表示对应时间域上离散的时间取值如 1,10指的是1和10

/表示在对应时间域上每隔多久进行一次取值

如 1-10 1 * * 7 ls –l /etc指的是每周末的一点1-10分每分钟执行ls –l /etc命令

1,10 1 * * 7 ls –l /etc指的是每周末的一点1分和10分时分别执行ls –l /etc命令

*/10 1 * * 7 ls –l /etc每周末的一点每隔10分钟执行ls –l /etc命令

(5) 说了这么多那到底怎么才能定义自己的计划任务呢?

Crond –e 打开编辑文本然后输入要定义计划任务

如1,10 1 * * 7 ls –l /etc

保存并退出 一个计划任务就做好了

我们来看看怎么定义在每天晚上的凌晨把系统备份

管理员还可以为其他用户定制计划任务 使用 crontab –u username

Crontab –l 可以查看已经定义的计划任务

Crontab –r 移除已将定义的计划任务

(6) Crond 只能在Linux系统启用的时候进行工作,当计划任务所在的时间Linux系统处于不工作状态那我们能不能在Linux启动后的一段时间内将没有做的计划任务给补上呢?档案是肯定的我们使用anacrond命令来是以这一功能

Anacron的命令格式 day min 说明信息 run-parts /etc/cron.daiy

Day 指过去多长时间没有执行过命令 min 指启动后多长时间执行

如 1 65 run-parts /etc/cron.daily 指一天没有运行过时 启动后65分钟后执行任务计划

linux计划任务管理

什么是计划任务,计划任务类似于我们平时生活中的闹钟。

在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。

crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据

Schedule one-time tasks with at. 一次性调度执行 at

Schedule recurring jobs with cron. 循环调度执行 cron

Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向

// 循环调度执行cron 进程每分钟会处理一次计划任务

[root@wangqing ~] # systemctl status crond

[root@wangqing ~] # ps aux |grep crond

root 1201 0.0 0.0 126264 1640 ? Ss 11 : 15 0 : 00 /usr/sbin/crond -n

计划任务分为以下两种情况:

系统级别的定时任务:

清理系统缓存

临时文件清理

系统信息采集

日志文件切割

用户级别的定时任务:

定时同步互联网时间

定时备份系统配置文件

定时备份数据库文件

文件 说明 /etc/crontab / /crontab配置文件 /etc/cron.deny / /该文件中所列用户不允许使用crontab命令 /var/spool/cron/ * // 所有用户定时文件都存放此目录,文件以用户名命名 /var/log/cron / /定时任务执行后的日志文件,可用来回溯

crond任务管理

参数 含义 指定示例

[root@wangqing ~] # crontab --help -e 编辑crontab文件内容 crontab -e-l 查看crontab文件内容 crontab -l

-r 删除crontab文件内容 crontab -r

-u 管理其他用户的计划任务 crontab -u wangqing -l

注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username

//如何进行计划任务的备份?

crond时间含义

# 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 //星期 # | | | | |# * * * * * command to be executed

// * 表示任意的(分、时、日、月、周)时间都执行// - 表示一个时间范围段, 如5-7点// , 表示分隔时段, 如6,0,4表示周六、日、四// */n 表示每隔n单位时间, 如*/10 每10分钟

crond编写示例

00 02 * * * command

00 02 1 * * command

00 02 14 2 * command

00 02 * * 7 command

00 02 * 6 5 command

00 02 14 * 7 command

00 02 14 2 7 command

00 02 * * * command* 02 * * * command* * * * * command* * 14 2 * command*/5 * * * * command

00 02 * 1,5,8 * command

00 02 1-8 * * command

crond书写规范

//1.为计划任务增加必要的注释

[root@wangqing ~]# crontab -l

##time sync

* /5 * * * * /u sr/sbin/ntpdate time1.aliyun.com /dev/ null

//2.规范计划任务执行脚本存放的路径/scripts/

[root@wangqing ~]# crontab -l

##backup www to /backup 30 01 * * * /bin/ sh /scripts/www_backup.sh /dev/ null

//3.执行shell脚本任务前加/bin/sh, 脚本结尾加/dev/null//调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件

[root@wangqing ~]# crontab -l

####backup www to /backup 30 01 * * * /bin/ sh /scripts/www_backup.sh /tmp/ www_backup.log

[root@wangqing ~] # crontab -e

#每天凌晨切割nginx日志 05 00 * * * /bin/bash -x /scripts/cut_nginx.sh /scripts/ log /nginx. log

#每天5点备份数据库 00 05 * * * /bin/bash -x /scripts/dump_sql.sh /scripts/ log /mysql. log

//注意: 1. 我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。 2. crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。 3. 几乎每个服务器都会用到crond服务。

建议: 将需要定期执行的任务写入脚本中, 建立/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。

计划任务添加步骤:

作业:

a. 00 13,20 * 1-5 * backup.sh

b. 0 13,20 1,5 * * backup.sh

c. * 13,20 * * 1-5 backup.sh

d. 00 13,20 * * 1-5 backup.sh

说明以上答案每一行是什么含义

2.新建/scripts/httpd.sh文件,并让/scripts/httpd.sh脚本在每天的00:10分执行

3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz

4.写一个定时任务,每天0点5分把/var/log/nginx下7天前的文件转移到/backup/2018_xx_xx的目录中

5.系统脚本/scripts/which.sh,如何定时每隔7分钟执行一次?

6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。

/p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/49da2da0342544a6a4c02f2aa442d537","uri":"","width":323,"height":27,"darkImgUrl":"","darkImgUri":"","formulaImgStatus":"succeed"}" class="syl-plugin-formula"

(责任编辑:IT教学网)

更多
上一篇:没有了

推荐Flash教程文章