Linux中计划任务管理的设置与删除 必看!必看!必看!!!

Posted Jzy的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中计划任务管理的设置与删除 必看!必看!必看!!!相关的知识,希望对你有一定的参考价值。

计划任务分一次性计划任务和周期性计划任务。

顾名思义,一次性计划任务执行一次之后就没有了,周期性可以根据设置的时间,到时间就执行,不分次数

at 一次性任务设置

使用 at 命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务 atd
必须已经运行。需要注意的是,计划执行任务的时间、日期必须安排在当前系统的时刻之后,
否则将无法正确设置计划任务。
设置一次性计划任务时,在 at 命令行中依次指定计划执行任务的时间、日期作为参数
(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进
入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最
后按 Ctrl+D 组合键提交任务。所设置的命令操作将在计划的时间点被依次执行。
例:


[root@localhost ~]# date

Sun May 7 10:33:13 EDT 2017

[root@localhost ~]# at 10:35 2017-05-07

at> pgrep -U root | wc -l > /tmp/ps.root

at> <EOT> ​​   //任务设置完毕后按 Ctrl+D 组合键提交

job 1 at Sun May 7 10:35:00 2017

[root@localhost ~]# cat /tmp/ps.root​ //等过了计划时间后验证命令结果


查看一次性计划任务

对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atq 命令进行查询。但已执行过的 at 任务将不会再出现在列表中。


[root@localhost ~]# atq

2 Sun May 7 21:30:00 2017 a root


删除一次性计划任务

若要删除指定编号的 at 任务,可以使用 atrm 命令。删除后的 at 任务将不会被执行,
并且不会显示在 atq 命令的显示结果中,但已经执行过的任务无法删除。


[root@localhost ~]# atrm 2​ //删除第 2 条 at 计划任务
[root@localhost ~]# atq ​ //确认第 2 条任务已被删除


crontab 周期性任务设置

使用 crontab 命令设置的计划任务可以按预设的周期重复执行,从而大大减轻设置重复性系统管理任务的操作。启用周期性任务也有一个前提条件,即对应的系统服务 crond 必须已经运行。

crontab 的配置文件和目录

crond 通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来设置。
1)/etc/crontab——系统任务配置文件
/etc/crontab 文件中设置的是维护 Linux 操作系统所需的任务,Linux 操作系统及相关程序在安装时可自动设置,不建议用户手动修改此文件。例如,该文件中包括设置 Shell环境、可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录。执行如下的“cat/etc/crontab”命令可以查看/etc/crontab 文件的具体内容。程序在安装时可自动设置,不建议用户手动修改此文件。例如,该文件中包括设置 Shell环境、可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录。执行如下的“cat/etc/crontab”命令可以查看/etc/crontab 文件的具体内容。


[root@localhost ~]# cat /etc/crontab

SHELL=/bin/bash​ //设置执行计划任务的 Shell 环境
PATH=/sbin:/bin:/usr/sbin:/usr/bin​ //定义可执行命令及程序的路径
MAILTO=root ​//将任务输出信息发送到指定用户的邮箱

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​


根据/etc/crontab 配置文件中的设定,crond 将按照不同的周期重复执行相应目录中的任务脚本文件。任务脚本文件。
/var/spool/cron/——用户 cron 任务的配置文件存放目录
由 用 户 自 行 设 置 ( 使 用 crontab 命 令 ) 的 cron 计 划 任 务 将 被 保 存 到 目 录
/var/spool/cron/中,文件名与用户名相同。例如,通过如下操作可以得知,root 用户的
cron 计划任务保存在配置文件/var/spool/cron/root 中。


[root@localhost ~]# ls -l /var/spool/cron/*

-rw-------. 1 root root 33 May 7 11:01 /var/spool/cron/root


使用 crontab 命令管理用户的计划任务

设置用户的周期性计划任务列表主要通过 crontab 命令进行,结合不同的选项可以完成
不同的计划任务管理操作。
 -e:编辑计划任务列表。
 -u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、  删除其他用户的计划任务)。
 -l:列表显示计划任务。
 -r:删除计划任务列表。
​​编辑用户的计划任务列表

​执行“crontab -e”命令后,将打开计划任务编辑界面(与 vi 中的操作相同)。通过该界面用户可以自行添加具体的任务配置,每行代表一个记录,配置的格式与/etc/crontab文件中的主体部分类似,如下所示(假定/root 目录下已有编写好的脚本 run_hourly_cmd、run_daily_cmd、run_weekly_cmd、run_monthly_cmd、run_yearly_cmd)。
[jerry@localhost ~]$ crontab -e
01 * * * * /root/run_hourly_cmd
02 4 * * * /root/run_daily_cmd
22 4 * * 0 /root/run_weekly_cmd
42 4 1 * * /root/run_monthly_cmd
50 3 2 1 * /root/run_yearly_cmd
每一行任务配置记录都包括六个数据字段,分别表示不同的含义

crontab 计划任务的配置格式

分钟 小时 日期 月份 星期 执行的命令
01 * * * * run_hourly_cmd
02 4 * * * run_daily_cmd
22 4 * * 0 run_weekly_cmd
42 4 1 * * run_monthly_cmd
50 3 2 1 * run_yearly_cmd
由于各字段的作用不同,其取值范围也不一样,当使用“*”时表示取
值范围中的任意时间。crontab 任务配置记录中所设置的命令操作将在“分钟”+“小时”
+“日期”+“月份”+“星期”都满足的条件下执行。
​​crontab 计划任务的配置字段说明

项目          说明
分钟         取值为 0~59 的任意整数
小时         取值为 0~23 的任意整数
日期         取值为 1~31 的任意整数(日期在该月份中必须有效)
月份         取值为 1~12 的任意整数
星期         取值为 0~7 的任意整数,0 或 7 代表星期日
命令可以是普通的命令,也可以是自己编写的程序脚本
除了“*”以外,还可以使用“-”(减号)、“,”(逗号)、“/”(斜杠)与数字构成表达
式来表示较复杂的时间关系。
 减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数 1、2、3、4。
 逗号“,”:可以表示一个间隔的不连续范围,如“3, 4, 6, 8”。
 斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3 天。
​​查看用户的计划任务列表

​crontab 命令结合“-l”选项可以查看当前用户的计划任务列表,对于 root 用户来说,
还可以结合“-u”选项查看其他用户的计划任务


[root@localhost ~]# crontab –l​ //查看用户 root 自己的计划任务
50 7 * * * /usr/bin/systemctl start sshd.service

[root@localhost ~]# crontab -l -u jerry​ //查看用户 jerry 的计划任务
55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt


删除用户的计划任务列表

当只需要删除某一条计划任务时,可以通过“crontab -e”命令进行编辑;而若要清空
某个用户的所有计划任务,可以执行“crontab -r”命令。


[jerry@localhost ~]$ crontab -r ​ //用户 jerry 清空自己设置的计划任务
[jerry@localhost ~]$ crontab -l

no crontab for jerry

直接进去删除计划任务就可以了


以上是关于Linux中计划任务管理的设置与删除 必看!必看!必看!!!的主要内容,如果未能解决你的问题,请参考以下文章

Linux/Centos7系统管理之进程与计划任务管理

linux(十七) 详解计划任务管理

Linux 任务计划管理

linux进程管理及计划任务

linux中计划任务管理

Linux下的计划任务管理