linux计划任务详解(附演示)

linux计划任务

在使用linux系统的过程中,为了解放人力,通常会设置定时任务来减轻设置重复性系统管理任务的操作

查看cron运行状态

systemctl status crond

若为安装cron,可执行命令yum -y install cron安装

管理周期计划任务

常用参数说明:

-u user 指定用户

-e 编辑某个用户的计划任务文件,若不指定用户,默认编辑当前用户的计划任务

-l 显示某个用户的计划任务文件,若不指定用户,默认显示当前用户的计划任务

-r 清空某个用户的计划任务文件,若不指定用户,默认清空当前用户的计划任务

使用示例:


crontab -u foo -e     #编辑用户 foo 的计划任务文件

crontab -e            #编辑当前用户的计划任务文件

crontab -u foo -l     #显示用户 foo 的计划任务文件

crontab -l            #显示当前用户的计划任务文件

crontab -r            #清空当前用户的计划任务文件

crontab的配置文件和目录:

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

/etc/crontab 系统任务配置文件

/etc/crontab文件中设置的是维护Linux操作系统所需的任务,Linux操作系统及相关程序在安装时可自动设置,不建议用户手动修改此文件


[root@localhost ~]# cat /etc/crontab 
SHELL=/bin/bash
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

文件中设置包括shell环境,可执行路径等变量的操作,以及每小时,每天,每月需要制定的任务目录。根据/etc/crontab配置文件中的设定,crond将安装不同的周期重复执行相应目录中的脚本文件

另外,使用一些特殊符号可实现更灵活的配置


* 代表所有值

/ 代表“每”

- 代表区间

, 代表分割枚举

/var/spool/cron 用户cron任务的配置文件存放目录

由用户自行设置(使用crontab命令)的cron计划任务会被保存到目录/var/spool/cron/中,文件名与用户名相同


[root@localhost cron]# crontab -l
* * * * * sleep 5; /usr/bin/python /mnt/netclient.py >> /mnt/log.txt
5 * * * * /usr/bin/ls /opt/
[root@localhost cron]# pwd
/var/spool/cron
[root@localhost cron]# ll
total 4
-rw-------. 1 root root 97 Oct 15 16:32 root
[root@localhost cron]# cat root 
* * * * * sleep 5; /usr/bin/python /mnt/netclient.py >> /mnt/log.txt
5 * * * * /usr/bin/ls /opt/
[root@localhost cron]# 

crond守护进程会自动检查/etc/crontab文件,/etc/cron.d/目录及/var/spool/cron/目录中的改动,如果发现有配置更改,它们就会被载入内存,所以,当某个crontab文件改动后并不需要重新启动,crond守护进程就可以使设置生效。

一次性任务设置

有时我们不需要一个作业周期性执行,而是只需要它在未来的某个时间完成一次就好,这时设置一个一次性任务即可(通过atd服务来实现)

设置一次性任务的前提是atd服务已运行,若未安装执行yum -y install at

设置一次性任务的时候,在at命令行中一次指定执行任务的时间,日期作为参数(若只指定时间则表示当天的时间,若只指定时间则表示当天的时间,若只指定日期则表示该日期的当前时间)确认后将进入’at>'提示符的任务编辑页面,每行设置一条执行命令,可以一次设置多条语句,最后按Ctrl+D组合键提交任务。


[root@localhost ~]# at 18:45 2019-10-15
at> /usr/bin/echo '222' > /opt/abc
at> 
job 5 at Tue Oct 15 18:45:00 2019
Can't open /var/run/atd.pid to signal atd. No atd running?
[root@localhost ~]# systemctl start atd
[root@localhost ~]# at 18:45 2019-10-15
at> /usr/bin/echo '222' > /opt/abc
at> 
job 6 at Tue Oct 15 18:45:00 2019
[root@localhost ~]# atq
4	Tue Oct 15 18:45:00 2019 a root
5	Tue Oct 15 18:45:00 2019 a root
6	Tue Oct 15 18:45:00 2019 a root
[root@localhost ~]# cat /opt/abc
222
[root@localhost ~]# 

atq命令用于查看未执行的一次性任务

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

[root@localhost ~]# atrm 4 删除第四条计划任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值