第二十七章 Linux系统定时任务详解

一、定时任务基本概念

1.含义

设定指定的时间周期性执行你的计划或者任务 

2.级别

1.系统级别定时任务:	定时清理文件   收集系统信息  定时切割日志 
		
2.用户级别定时任务:	同步时间    定时备份数据 

3.操作方式

Linux操作系统中关于定时任务主要有三种操作方式:
1.at 一次性定时任务
2.crontab循环定时任务
3.anacron配置

二、一次性定时任务-at

1.含义

at命令允许指定运行脚本时间,at的守护进程atd会以后台模式运行,检查系统上的一个特殊目录来获取at命令的提交的作业。默认情况下,atd守护进程每60秒检查一次目录。有作业时会检查作业运行时间,如果与当前时间匹配,则运行此作业。

语法格式:at [参数]

2.常用参数

atq 查看系统中的等待作业
-d 删除系统中的等待作业(等效于atrm命令)
-c 打印任务的内容
-q 使用指定的列队
-f 将指定文件提交等待作业
-t 以时间的形式提交运行作业

3.常用示例

查看系统中的等待作业

[root@jindada ~]# atq

使用”at -d”或者”atrm”(二者同效)指定id来删除系统中的等待作业,id为”atq”命令输出的第一行顺序数字

[root@jindada ~]# at -d 1
[root@jindada ~]# atrm 1 

假设存在 test.sh 脚本,立即运行

[root@jindada ~]# at -f  test.sh now

在25分钟之后运行 test.sh 脚本

[root@jindada ~]# at -f test.sh now+25 min

在10:11运行 test.sh 脚本

[root@jindada ~]# at -f test.sh 10:11

在2021年11月9日运行 test.sh 脚本

[root@jindada ~]#  at -f test.sh 11/9/2021

三、crontab循环定时任务

1.概述

crontab命令来自于英文词组“cron table”的缩写,其功能是管理定时计划任务。定时计划任务,故名意思就计划好的任务,到了时间就会自动执行,在Linux系统中的crond是一个定时计划任务服务,用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,那么就会按照预定的周期时间自动的执行下去,而crontab命令则是用于配置的工具名称。

语法格式:crontab [参数]

2.相关文件信息

[root@jindada ~]# ll  /etc/cron*  -d
drwxr-xr-x. 2 root root  21 Jul 29 08:56 /etc/cron.d		#定时任务的统一存放目录 
drwxr-xr-x. 2 root root  57 Jul 29 08:56 /etc/cron.daily	#系统每天执行的定时任务
-rw-------  1 root root   0 Apr 11  2018 /etc/cron.deny		#定时任务的黑名单 
drwxr-xr-x. 2 root root  22 Jul 29 08:56 /etc/cron.hourly	#系统每小时执行的定时任务
drwxr-xr-x. 2 root root   6 Jun 10  2014 /etc/cron.monthly	#系统每月执行的定时任务
-rw-r--r--  1 root root 451 Jun 10  2014 /etc/crontab		#定时任务主配置文件
drwxr-xr-x. 2 root root   6 Jun 10  2014 /etc/cron.weekly	#系统每周执行的定时任务 
[root@jindada ~]# 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

分时日月周      用户    命令 

# 跟定时任务相关的文件 
[root@jindada ~]# ll /var/spool/cron/root		#存放定时任务的配置文件  
total 0

[root@jindada ~]# ll /var/log/cron		#定时任务执行的过程   日志 

[root@jindada ~]# ll /var/spool/mail/	#用户的邮件

3.常用参数

-e 编辑任务
-l 列出任务
-r 删除任务
-u 指定用户名字
--help 显示帮助信息

4.定时任务规则

*	# 每(分时日月周)都执行  

*/5	# 每 5 (分时日月周)执行  每隔多长时间  

/5	

1-3		#时间范围  1-3   连续的时间  1点到3点

1,3		#不连续的时间  1点和3点 

5.常见示例

00 02 * * *   	#每天的凌晨2点整  

00 02 1 * * 	#每个月的1号凌晨2点整  

00 02 14 2 * 	#每年的2月14日凌晨2点整   

00 02 * * 7 	#每周日的凌晨2点整  

00 02 * 6 5 	#每年的6月份的每周五的凌晨2点整    

00 02 14 * 7 	#每个月的14号或者周日的凌晨2点整

00 02 14 2 7  	#每年的2月份的14号或者周日的凌晨2点整

*/10  02 * * * 	#每天的凌晨2点每隔10分钟  

* * * * *   	#每分钟 

00 00 14 2 *  	#每年的2月份14号的凌晨0点整

*/5 * * * *   	#每隔5分钟 

00 02 * 1,5,8 *  #每年的1和5和8月的每天的凌晨2点整

00 02 1-8 * *   #每个月的1到8号的凌晨2点整

00 21 * * *   	#每天晚上21点整

45 4 1,10,22 * * 	#每个月的1,10,22号 的凌晨4点45分 

45 4 1-10 * *  		#每个月的1到10号的凌晨4点45分

3,15 8-11 */2 * * 	#每个月每隔两天的8到11点的3分和15分的时候 

0 23-7/2 * * *   	#每天的23点到7点的每隔2个小时的整点 

15 21 * * 1-5		#每周一到周五的晚上21点15分

四、crontab定时任务与案例

1. 定时同步系统时间 每分钟同步

[root@jindada ~]# ntpdate  ntp.aliyun.com
31 Jul 10:27:12 ntpdate[13673]: step time server 203.107.6.88 offset -28797.933639 sec
[root@jindada ~]# date
Fri Jul 31 10:27:18 CST 2020

# 定时任务最好加上注释  作者  时间 
[root@jindada ~]# crontab  -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@jindada ~]# crontab  -l
# 同步系统时间 jindada 20200731_10
* * * * *  ntpdate  ntp.aliyun.com

2.修改时间

[root@jindada ~]# date -s  20200730
Thu Jul 30 00:00:00 CST 2020
[root@jindada ~]# date
Thu Jul 30 00:00:02 CST 2020

3.查看定时任务的执行过程

[root@jindada ~]# tailf  /var/log/cron
Jul 31 17:01:01 jindada run-parts(/etc/cron.hourly)[13622]: finished 0anacron
Jul 31 17:52:01 jindada crontab[13651]: (root) LIST (root)
Jul 31 18:01:01 jindada CROND[13656]: (root) CMD (run-parts /etc/cron.hourly)
Jul 31 18:01:01 jindada run-parts(/etc/cron.hourly)[13656]: starting 0anacron
Jul 31 18:01:01 jindada run-parts(/etc/cron.hourly)[13665]: finished 0anacron
Jul 31 10:27:49 jindada crontab[13675]: (root) BEGIN EDIT (root)
Jul 31 10:30:30 jindada crontab[13675]: (root) REPLACE (root)
Jul 31 10:30:30 jindada crontab[13675]: (root) END EDIT (root)
Jul 31 10:30:36 jindada crontab[13677]: (root) LIST (root)
Jul 30 00:00:03 jindada CROND[13682]: (root) CMD (ntpdate  ntp.aliyun.com)

#查看接收的邮件发现了报错  说命令找不到 

[root@jindada ~]# ll  /var/spool/mail/root 
-rw------- 1 root mail 3541 Jul 30 00:01 /var/spool/mail/root
[root@jindada ~]# tailf /var/spool/mail/root
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20200729160201.064E8802C9EE@jindada.localdomain>
Date: Thu, 30 Jul 2020 00:02:01 +0800 (CST)

/bin/sh: ntpdate: command not found

4.重新编写定时任务

[root@jindada ~]# crontab -l
#同步系统时间 jindada 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com


[root@jindada ~]# tailf  /var/log/cron
Jul 30 00:01:01 jindada run-parts(/etc/cron.hourly)[13694]: starting 0anacron
Jul 30 00:01:02 jindada anacron[13707]: Anacron started on 2020-07-30
Jul 30 00:01:02 jindada anacron[13707]: Normal exit (0 jobs run)
Jul 30 00:01:02 jindada run-parts(/etc/cron.hourly)[13709]: finished 0anacron
Jul 30 00:02:01 jindada CROND[13714]: (root) CMD (ntpdate  ntp.aliyun.com)
Jul 30 00:03:01 jindada CROND[13722]: (root) CMD (ntpdate  ntp.aliyun.com)
Jul 30 00:03:31 jindada crontab[13728]: (root) BEGIN EDIT (root)
Jul 30 00:03:38 jindada crontab[13728]: (root) REPLACE (root)
Jul 30 00:03:38 jindada crontab[13728]: (root) END EDIT (root)
Jul 30 00:03:43 jindada crontab[13730]: (root) LIST (root)



Jul 30 00:04:01 jindada crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 30 00:04:01 jindada CROND[13734]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com)
Jul 31 10:35:04 jindada CROND[13741]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com)

#邮件正在一直接收信息 导致邮件过大 

[root@jindada ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 7028 Jul 31 10:35 /var/spool/mail/root
[root@jindada ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 7929 Jul 31 10:36 /var/spool/mail/root

#停掉邮件服务 日志不在发生变化 

[root@jindada ~]# systemctl  stop postfix
[root@jindada ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 8829 Jul 31 10:37 /var/spool/mail/root

#但是会一直生成小文件 

[root@jindada ~]# ll /var/spool/postfix/maildrop/
total 12
-rwxr--r-- 1 root postdrop 601 Jul 31 10:38 7FF40C0CD48D
-rwxr--r-- 1 root postdrop 600 Jul 31 10:39 A8919C0CD48E
-rwxr--r-- 1 root postdrop 601 Jul 31 10:40 CD943C0CD48F

5.重新编写定时任务

[root@jindada ~]# crontab  -l
#同步系统时间 jindada 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null

[root@jindada ~]# systemctl  start postfix

[root@jindada ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 13469 Jul 31 10:43 /var/spool/mail/root

6.总结

1. 定时任务要有注释 作者 时间 
2. 定时任务的命令一定要在命令行上面执行成功
3. 定时任务要使用绝对路径 
4. 定时任务写命令的时候,尽量复制之前执行成功的命令 减少出错率
5. 定时任务的执行结果定向到指定的文件中或者定向到空

7.把系统的时间追加到一个文件中

[root@jindada ~]# date +%F_%T >> /root/time.txt
[root@jindada ~]# cat /root/time.txt
2020-07-31_10:51:45


[root@jindada ~]# crontab -l
#同步系统时间 jindada 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
* * * * *  /usr/bin/date +%F_%T >> /root/time.txt  


[root@jindada ~]# tailf  /var/log/cron
Jul 31 10:54:01 jindada crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 31 10:54:01 jindada CROND[14046]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null)
Jul 31 10:54:01 jindada CROND[14047]: (root) CMD (/usr/bin/date +)


#修改定时任务

[root@jindada ~]# crontab -l
#同步系统时间 jindada 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
* * * * *  /usr/bin/date +\%F_\%T >> /root/time.txt  



[root@jindada ~]# tailf  /var/log/cron
Jul 31 10:56:01 jindada crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 31 10:56:01 jindada CROND[14074]: (root) CMD (/usr/bin/date +%F_%T >> /root/time.txt  )


[root@jindada ~]# cat time.txt 
2020-07-31_10:56:01


总结:

	定时任务中,有些特殊字符不识别,需要转义  

8.备份/etc/目录 压缩包名带有时间戳 保留最近的3天数据

[root@jindada ~]# cat backup.sh
#!/bin/bash
#重新定义环境变量 
export  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
#1.创建备份目录
mkdir -p  /backup
#2.开始备份
cd  /
tar czf  /backup/etc_$(date +%F_%M).tar.gz  etc/  
#3.删除3天以前的数据
find  /backup  -type f -mtime  +3   -name "*.tar.gz"  -delete


[root@jindada ~]# sh  backup.sh
[root@jindada ~]# ll /backup/
total 9972
-rw-r--r-- 1 root root 10210944 Jul 31 11:05 etc_2020-07-31_05.tar.gz

#批量执行 

[root@jindada ~]# for i in {20..31};do date -s 2020/07/$i &&  sh /root/backup.sh ;done


#编写定时任务 
[root@jindada ~]# crontab  -l
#同步系统时间 jindada 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
* * * * *  /usr/bin/date +\%F_\%T >> /root/time.txt  
#备份
* * * * *  /bin/bash   /root/backup.sh  &>/dev/null


[root@jindada ~]# tailf  /var/log/cron
Jul 31 11:10:01 jindada crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 31 11:10:01 jindada CROND[14327]: (root) CMD (/usr/bin/date +%F_%T >> /root/time.txt  )
Jul 31 11:10:01 jindada CROND[14328]: (root) CMD (/bin/bash   /root/backup.sh  &>/dev/null)
Jul 31 11:10:01 jindada CROND[14329]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null)


[root@jindada ~]# ll  /backup/
total 59832
-rw-r--r-- 1 root root 10210944 Jul 28 00:00 etc_2020-07-28_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 29 00:00 etc_2020-07-29_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 30 00:00 etc_2020-07-30_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 31 00:00 etc_2020-07-31_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 31 11:05 etc_2020-07-31_05.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 31 11:10 etc_2020-07-31_10.tar.gz

五、定时发送邮件

1.安装邮件服务

[root@jindada ~]# yum install  -y  mailx

[root@jindada ~]# vim /etc/mail.rc

#发件人

set from=xxx@qq.com
#邮件服务器

set smtp=smtp.qq.com
#发件人用户名

set smtp-auth-user=xxx@qq.com
#发件人密码(QQ邮箱不可以使用密码,只能使用授权码)

set smtp-auth-password=xxx
#登录方式

set smtp-auth=login
#邮件服务器协议及端口

set smtp=smtps://smtp.qq.com:465
#忽略证书

set ssl-verify=ignore
#指定证书位置

set nss-config-dir=/etc/pki/nssdb/

#或者指定别的证书位置,创建证书目录



#放到最后  
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxx		#客户端的授权码  
set smtp-auth=login
set smtp=smtps://smtp.qq.com:465
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

2.发送邮件测试

[root@jindada ~]# echo  "test"  | mail  -s "hello"  xxxx@qq.com
[root@jindada ~]# Error in certificate: Peer's certificate issuer has been marked as not trusted by the.		#忽略这个错误 


[root@jindada ~]# mkdir qingshu  
[root@jindada ~]# cd qingshu
[root@jindada qingshu]# vim  qingshu1.txt
[root@jindada qingshu]# mail  -s "致亲爱的小姐姐"   xxx@qq.com  <  qingshu1.txt 
[root@jindada qingshu]# Error in certificate: Peer's certificate issuer has been marked as not trusted by the.

3.编写自动化脚本

[root@jindada qingshu]# cat /root/send_mail.sh
#!/bin/bash
Qingshu=$(ls -1  /root/qingshu/ |head -1)
mail  -s "致亲爱的小姐姐"  xxxx@qq.com  < /root/qingshu/$Qingshu  
mail  -s "致亲爱的小姐姐"  xxxx@qq.com  < /root/qingshu/$Qingshu

if  [ $? -eq 0 ];then
	rm -f /root/qingshu/$Qingshu
fi


[root@jindada qingshu]# ll
total 20
-rw-r--r-- 1 root root  85 Jul 31 11:49 qingshu1.txt
-rw-r--r-- 1 root root 184 Jul 31 11:51 qingshu2.txt
-rw-r--r-- 1 root root 121 Jul 31 11:51 qingshu3.txt
-rw-r--r-- 1 root root 155 Jul 31 11:51 qingshu4.txt
-rw-r--r-- 1 root root  70 Jul 31 11:52 qingshu5.txt

4.编写定时任务

#编写定时任务 

[root@jindada qingshu]# crontab  -l
#同步系统时间 jindada 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
#* * * * *  /usr/bin/date +\%F_\%T >> /root/time.txt  
#备份
#* * * * *  /bin/bash   /root/backup.sh  &>/dev/null
#xxxxxxxxx
* * * * *  /bin/bash   /root/send_mail.sh  &>/dev/null

六、定时任务实现秒级执行

1.编写任务脚本,该方法适用于调度周期能被60整除的情况

[root@jindada ~]# vi /root/test.sh
#!/bin/bash
step=3
for (( i = 0; i < 60; i = (i+step) )); do
    date >> /root/result.txt
    sleep $step
done

exit 0

2.配置定时任务

[root@jindada ~]# crontab -e
* * * * * sh /root/test.sh
或
*/1 * * * * sh /root/test.sh

3.查看结果

[root@jindada ~]# tail -f result.txt 
Thu Nov 10 16:21:00 CST 2022
Thu Nov 10 16:21:01 CST 2022
Thu Nov 10 16:21:04 CST 2022
Thu Nov 10 16:21:07 CST 2022
Thu Nov 10 16:21:10 CST 2022
Thu Nov 10 16:21:13 CST 2022
Thu Nov 10 16:21:16 CST 2022
Thu Nov 10 16:21:19 CST 2022

七、定时任务总结

1.思路

1.手动执行命令,然后保留执行成功的结果。

2.编写脚本

    脚本需要统一路径/scripts
    脚本内容复制执行成功的命令(减少每个环节出错几率)

3.执行脚本

    使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash /bin/bash)
    执行脚本成功后,复制该执行的命令,以便写入cron

4.编写定时任务

    加上必要的注释信息, 人、时间、任务

    设定定时任务执行的周期

    粘贴执行脚本的命令(不要手敲)

5.调试定时任务

    增加任务频率测试

    检查环境变量问题(最好在脚本中重新定义环境变量PATH)

    检查crond服务日志

2.总结

1.定时任务规则之前加注释

2.使用脚本执行定时任务(只有一条简单命令的可以直接使用命令执行)

3.运行脚本一定要用绝对路径执行,统一脚本位置。

4.定时任务中date命令的百分号需转义才能使用。

5.命令或脚本结果(正确及错误)定向到空(>/dev/null 2>&1)或追加到文件中 >>/tmp/oldboy.txt 2>&1

6.避免不必要的程序及命令输出,如打包命令,tar -v的显示过程的选项。

7.打包压缩使用相对路径(切到目标目录的上一级打包目标)

8.定时任务脚本中的程序文件 ,尽量用绝对路径,用户的定时任务中的文件默认存放在当前用户的家目录

9.系统与命令位置有关的环境变量问题,建议脚本中重新定义环境变量PATH。

八、定期运行命令-anacron

1.含义

anacron 是用来做什么的呢?设想这样一个场景,Linux 服务器会在周末关机两天,但是设定的定时任务大多在周日早上进行,但在这个时间点,服务器又处于关机状态,导致系统很多定时任务无法运行。

又比如,我们需要在凌晨 5 点 05 分执行系统的日志备份,但 Linux 服务器不是 24 小时开机的,在晚上需要关机,白天上班之后才会再次开机,在这个定时任务的执行时间我们的服务器刚好没有开机,那么这个定时任务就不会执行了。anacron 就是用来解决这个问题的。

anacron 会以 1 天、1周(7天)、一个月作为检测周期,判断是否有定时任务在关机之后没有执行。如果有这样的任务,那么 anacron 会在特定的时间重新执行这些定时任务。

那么,anacron 是如何判断这些定时任务已经超过执行时间的呢?这就需要借助 anacron 读取的时间记录文件。anacron 会分析现在的时间与时间记录文件所记载的上次执行 anacron 的时间,将两者进行比较,如果两个时间的差值超过 anacron 的指定时间差值(一般是 1 天、7 天和一个月),就说明有定时任务没有执行,这时 anacron 会介入并执行这个漏掉的定时任务,从而保证在关机时没有执行的定时任务不会被漏掉。

语法格式:anacron [参数]

2.常用参数

-f 强制执行作业,忽略时间戳
-u 只将作业的时间戳更新到当前日期,但不运行任何操作
-s 序列化作业的执行,在前一个作业完成之前,anacron不会启动新作业
-d 在此模式下,anacron将信息性消息输出到标准错误和syslog,作业的输出像往常一样通过邮件发送
-q 禁止将消息显示为标准错误,仅适用于-d参数结合使用

3.常见示例

测试anacron语法

[root@jindada ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45 # 表示定时触发后随机延迟55分钟以内的时间再启动应用(主要是防止一开机多任务同时启动造成负载过重)
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22 # 表示程序在3时至22时之间会启动

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily # 第一列表示格几个小时启动一次,第二列表示触发后延迟的分钟数,最终的延迟时间是5+RANDOM_DELAY,第三列是任务名称,第四列是要运行的命令及相关的参数。
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly

使用/root/myspool存储/etc/myanacron文件中定义的作业的所有时间戳信息

[root@jindada ~]# mkdir /root/myspool
[root@jindada ~]# anacron -S /root/myspool -t /etc/myanacron

使用-f参数,强制执行作业,忽略时间戳

[root@jindada ~]# anacron -f /root/myspool

只将作业的时间戳更新到当前日期,但不运行任何操作

[root@jindada ~]# anacron -d -u
Updated timestamp for job `cron.daily' to 2022-11-10
Updated timestamp for job `cron.weekly' to 2022-11-10
Updated timestamp for job `cron.monthly' to 2022-11-10
posted @ 2020-07-31 19:52  年少纵马且长歌  阅读(467)  评论(0编辑  收藏  举报