计划任务管理

Posted ydqq

tags:

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

介绍

linux中除了即时的命令任务以外,还可以设置周期性的计划任务,centos系统默认安装了at,vixie-cron 软件包,通过atd和crond这两个系统服务实现一次或周期性的计划任务功能,并分别通过at,crontab命令进行计划任务设置。

由于计划任务只能完成单一的命令任务,如果遇到复杂的任务时,一般先把命令编写成一个shell脚本,然后在创建计划任务,调用shell脚本来执行计划任务。


at一次性任务设置

at任务只会在指定的时间运行一次,任务执行的前提是,atd必须运行,计划执行任务的时间必须在当前时间之后,否则无法正确运行
at命令后依次指定计划执行任务的时间,日期作为参数。(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),然后回车会进入只有“at>”提示符的任务编辑界面,每行设置一条执行命令,可以一次设置多条语句,最后按Ctrl+D 提交任务即可。设置的命令会在固定的时间依次执行。

设置任务:at [任务时间]
例子:

[dyq@spider ~]$ at 15:40 2015-5-14
at> mkdir /home/dyq/33ddab\\
at> mkdir /home/dyq/123244d<EOT>    //添加完任务以后CTRL+D 提交任务
job 3 at 2015-05-14 15:40
到点后验证
[dyq@spider ~]$ ls
123244d  33ddabmkdir 

查询未执行的任务(执行完了的任务就没有了): atq

[dyq@spider ~]$ atq
1   2015-05-12 14:28 a dyq
2   2015-05-14 15:30 a dyq

删除任务:atrm

atrm 2    //atrm 后面跟任务号

周期性任务设置:crontab

前提条件:系统服务crond 必须已经运行

crontab的配置文件和目录
crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来设置

  1. /etc/crontab 系统任务配置文件,这里面保存了维护linux所需的任务,一般不建议手动更改。

  2. /var/spool/cron 用户cron任务的配置文件存放目录
    由用户自行设置(使用crontab)的cron计划任务将被保存到目录 /var/spool/cron 中,文件名与用户名相同。
    crond守护进程会自动检查/etc/crontab 文件,/etc/cron.d/ 目录以及 /var/spool/cron/ 目录中的改变,如果发生更改,就会自动载入内存,不用重启crond守护进程。

管理用户计划任务:crontab

格式:

参数:
    -e:编辑计划任务列表
    -u:指定所管理的计划任务属于哪个用户,默认是针对当前用户,一般只有root用户有权限使用此选项(用于编辑,删除其他用户的计划任务)
    -l:列表显示计划任务
    -r:删除计划任务列表

编辑用户的计划任务列表:crontab -e

每一行任务配置都包含六个数据字段,分别表示不同的含义

各字段的作用不同,其取值的范围也不一样,crontab任务配置记录中所设置的命令操作将在所有时间都满足的条件下执行。

取值范围说明
* 时表示取值范围中的任意时间
除了*以外,还可以使用减号“-”逗号“,”斜杠“/”与数字组成比较复杂的时间表达式
减号“-”:可以表示一个连续的时间范围,如“1-4”
逗号“,”:可以表示一个间隔的不连续范围,如“3,4,5”
斜杠“/”:可以用来指定间隔频率,如在日期字段中的 */3 表示每个三天


实例:

用户root计划以下任务

crontab -e //开始编辑任务

50 7 * * * /sbin/service sshd start        //每天的7:50 启动sshd服务
1 1 */5 * * /bin/rm -rf /var/ftp/pub/*        //每隔五天删除一次 /var/ftp/pub/下所有的文件
30 7 * * 6 /sbin/service httpd restart        //每个星期六的7:30 重新启动一次httpd服务
30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd        //每个星期的1,3,5 用tar备份一次/etc/httpd 下的内容。
crontab -e -u dyq        //让普通用户dyq执行以下计划任务,也就是把这个计划任务制定给dyq执行
55 23 * * 7 /bin/cp    /etc/passwd /home/jerry/pwd.txt        //每个星期的星期日23:55,把/etc/passwd的内容cp到.../pwd.txt文件中。

注意:

  1. 计划任务的制定对象(自己,或其他用户)有没有这条命令的执行权限,权限这里要注意。

  2. 计划任务的命令最好写该命令的绝对路径,以避免缺少执行路径而没办法执行。例如(/bin/cp)

  3. 计划每天执行的任务的时候,在小时和分钟的地方也要指定时间,要不然就会变成每分钟都要执行一次了。不要是指0时0分,容易出错。


查看用户的计划任务列表

命令:crontab -l    //能看到用户自己计划了哪些任务
ls -l /var/spool/cron/dyq        //再次说明,计划任务文件的名称与用户自己的名称相同。

删除用户的计划任务列表

crontab -r        //删除计划任务,命令默认是删除用户本身的计划任务,如果需要删除别人的计划任务,直接在/var/spool/cron目录下直接修改吧。
crontab -r    //删除全部计划局任务
如果要删除某条任务时,直接vim里面修改内容。

以上是关于计划任务管理的主要内容,如果未能解决你的问题,请参考以下文章

linux中进程和计划任务管理

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

linux中的进程于计划任务管理

计划任务管理

进程和计划任务管理

BAT 文件不会在 Windows 10 任务计划程序中运行,但会以管理员身份或在提升的命令提示符下运行