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中计划任务管理的设置与删除 必看!必看!必看!!!的主要内容,如果未能解决你的问题,请参考以下文章