Linux:计划任务at/cron详细解析

1.计划任务概念解析

在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。通过安装at和crontabs这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。
分类:计划任务分为一次性和循环性的计划任务

2.一次调度执行at

2.1.作用

计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据

2.2.语法

at <时间规格> :now +5min
>写执行的命令

2.3.示例

5分钟后:now +5min
下午茶时间:teatime tomorrow (teatime is 16:00)
第四天中午:noon +4 days
2020年8月3日下午5点:5pm august 3 2020
某年某月某日某时:4:00 2019-11-27

2.4.示例:

例1: 设置一个定时创建用户的任务

[root@localhost ~ ]# yum -y install at
[root@localhost ~ ]# systemctl status atd    //查看启动状态
[root@localhost ~ ]# systemctl start atd     //首先要启动服务
[root@localhost ~ ]# at now +1min    //一分钟后开始执行
at> useradd uuuu  
at> <EOT>       //Ctrl+D完成
job 1 at Sat Aug 26 10:54:00 2023
​查询任务
[root@localhost ~]# atq
1	Sat Aug 26 10:54:00 2023 a root
[root@localhost ~]# at -l
[root@localhost ~]# at -c 工作号
验证结果
[root@localhost ~]# id uuuu	//查出用户信息即可
删除任务:
[root@localhost ~]# atrm
[root@localhost ~]# at -d 工作号

例2:

[root@localhost ~]# vim at.jobs 
useradd u99 
useradd u00 
touch /a.txt
​
[root@localhost ~]# at 20:33 < at.jobs

例3:

准备sudo用户
[root@localhost ~]# id jack
uid=1007(jack) gid=1012(jack) groups=1012(jack)
[root@localhost ~]# useradd jack   #如果不存在创建
[root@localhost ~]# vi sudoers
  91 ## Allow root to run any commands anywhere
  92 root    ALL=(ALL)       ALL
  93 jack    ALL=(ALL)       NOPASSWD: ALL  #添加内容
[root@localhost ~]# su - jack 

以sudo 用户jack创建at任务
[jack@localhost ~]$ vim jack.at
   sudo useradd u200
   sudo useradd u300
   sudo touch /home/jack.txt
[jack@localhost ~]$ at 20:38 < jack.at  

3.循环调度执行cron

用户级(重点)

3.1.简介

cron的概念和crontab是不可分割的。
crontab是一个命令,常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于“/etc/crontab”文件中,以供之后读取和执行。

3.2.安装软件

[root@localhost ~]#  yum -y install crontabs  //如果软件不存在安装

3.3.启动服务

rhel5/6:

[root@localhost ~]#  /etc/init.d/crond status
[root@localhost ~]#  /etc/init.d/crond start

rhel7:

[root@localhost ~]#  systemctl start crond.service
[root@localhost ~]#  systemctl status crond.service
[root@localhost ~]#  systemctl enable crond.service	//设置开机启动

3.4.开机启动

rhel5/6:

[root@localhost ~]# chkconfig crond on

​rhel7:

[root@localhost ~]# systemctl status crond.service  //查看服务状态

​3.5.查看进程

 [root@localhost ~]# ps -ef | grep crond 
    root        755      1  0 20:18 ?        00:00:00 /usr/sbin/crond -n

​3.6.存储位置

(哪个用户创建的计划任务,在这个目录下以用户名的方式命名)

[root@localhost ~]# cd /var/spool/cron/

​3.7.管理方式

crontab -l —List the jobs for the current user. #列出当前用户的计划任务
crontab -r —Remove all jobs for the current users. #删除当前用户所有的计划任务
crontab -e —Edit jobs for the current user. #编辑当前用户的计划任务
​管理员可以使用crontab -u username, 去管理其他用户的计划任务

​3.8.语法格式

Minutes Hours Day-of-Month Month Day-of-Week Command
分钟( 0-59) 小时(0-23) 日(1-31) 月(1-12) 周(0-7) 执行的命令,最好是命令的绝对路径
时间解释
*/5 每隔分钟
, 不同的时间段
– 表示范围

​3.9.示例

[root@localhost ~]# vim /home/soso.sh
#!/bin/bash
touch /opt/a.txt
[root@localhost ~]# chmod +x /home/soso.sh

创建计划任务
[root@localhost ~]# crontab -e	//当前用户编写计划任务
(示例)
0 6 * * * /home/soso.sh			//每天6:00执行
40 8 * * * /home/soso.sh 		//每天8:40执行
0 4 * * 6 /home/soso.sh 		//每周六凌晨4:00执行
5 4 * * 6 /home/soso.sh 		//每周六凌晨4:05执行
0 5 * * 6 /home/soso.sh 		//每周六凌晨5:00执行
30 9 * * 1-5 /home/soso.sh 		//每周一到周五9:30
0 8,9 * * 1-5 /home/soso.sh 	//每周一到周五8:00,每周一到周五9:00
59 23 * * 6 /home/soso.sh 		//每周六23:59
30 0 * * * /home/soso.sh		//每天0:30
00 00 * * * /home/soso.sh       //每天凌晨
00 02 * * * ls                  //每天2:00整
00 02 1 * * ls                  //每月1号2:00整
00 02 14 2 * ls                 //每年2月14号2:00整
00 02 * * 7 ls                  //每周日2:00整
00 02 * 6 5 ls                  //每年6月的周五2:00整
00 02 * * * ls                  //每天2:00整
*/5 * * * * ls                  //每隔5分钟
00 02 1,5,8 * * ls              //每月1,5,8号的2:00整
00 02 1-8 * * ls                //每月1到8号的2:00整

4.自动校时

实现服务器时间对时(ntp)

[root@localhost ~]# yum install ntp
[root@localhost ~]# ntpdate cn.pool.ntp.org

如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了:
00 12 * * * /sbin/ntpdate cn.pool.ntp.org

cn.pool.ntp.org是ntp网络授时组织的中国授时源

5.使用其他用户创建

[root@localhost ~]# crontab -u jack -e  //使用jack用户创建
[root@localhost ~]# crontab -u jack -l  //查看jack用户的计划任务
[root@localhost ~]# crontab -r  //删除当前用户的计划任务
[root@localhost ~]# crontab -u jack -r //删除jack用户的计划任务

使用者权限文件:
文件:/etc/cron.deny
说明:该文件中所列用户不允许使用crontab命令

文件:/etc/cron.allow
说明:该文件中所列用户允许使用crontab命令

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA548464

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值