【Linux中计划任务管理的设置与删除必看!必看!必看!!!】亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述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
024***run_daily_cmd
224**0run_weekly_cmd
4241**run_monthly_cmd
50321*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
或
直接进去删除计划任务就可以了
推荐阅读
- 项目使用 Jfrog Artifactory 制品库
- 太赞了!墙裂推荐这款网页版 Nginx 配置生成器,好用到爆!
- 如何在 Linux 服务器上安装和使用 SFTP()
- NRZ 对比 PAM4 调制技术
- 《LinuxProbe》—RHCE 学习 Day 3
- Linux需巧学
- 教你如何使用MvcPager实现分页效果
- Centos7 上手 Docker 容器及 docker-compose
- Ubuntu1804_server 离线安装GCC_7.5