一个愿意伫立在巨人肩膀上的农民......
Crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。Crontab允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。这些任务可以按照分钟、小时、日、月和星期等不同的时间单位进行安排。
一、Crond 服务管理
Ubuntu22.04系统默认是开机开启Crond 服务的,因此此处不必理会,但是如果自己电脑之前设置过关闭该服务,则需要重启,或者更改配置使其开机自启。配置方法是在 /etc/rc.d/rc.local 中添加 service crond start 这一行,其他的管理命令为:
# 启动服务
/sbin/service crond start
# 关闭服务
/sbin/service crond stop
# 重启服务
/sbin/service crond restart
# 重新载入配置
/sbin/service crond reload
二、Crontab常用的基本命令
1.查看当前用户的计划任务
crontab -l
2.编辑计划任务
crontab -e
第一次进入会让你选择编辑器,比如我这里想选nano,那就输入1再敲回车即可。
3.删除计划任务
crontab -r
三、设置Crontab执行文件
1.Crontab执行的文件示例
此处以删除Ubuntu日志文件为例,首先创建一个名为“clean_logs.sh”的shell文件,文件内容如下:
#!/bin/bash
# 定义要清理的日志文件目录
LOG_DIR="/var/log"# 查找并删除该目录下所有以.log结尾的文件
sudo find "$LOG_DIR" -type f -iname "*.log" -exec rm -f {} \;
2.Crontab设置
输入下方指令即可进入Crontab配置文件,并对其进行配置。
crontab -e
此处我是想每6小时删除一次日志文件,因此我的添加的时间设置和要执行的文件写法如下:
* */6 * * * /home/ub/clean_logs.sh
保存并退出文件。在visudo中,可以使用Ctrl+x,然后按Y确认保存,最后按Enter退出。设置完成后电脑将会自动每6个小时删除一下/var/log目录下后缀为“.log”的文件。
注意!注意!注意!
待执行的指令中有sudo相关需要给权限和输入密码的操作,需要按照下方链接中的教程对sudo指令进行配置,否则指令无法运行,而报错结果只能在/var/log/syslog日志文件下查询。
【Ubuntu使用技巧】取消无人值守时shell文件中sudo指令运行的密码输入-CSDN博客
四、编辑Crontab说明
1.格式:
m h dom mon dow command
m:分钟,取值是从0到59之间的整数。
h:小时,取值是从0到23之间的整数。
dom:日期,取值是从1到31之间的整数。
mon:月份,取值是从1到12之间的整数。
dow:星期几,取值是从0到7之间的整数,这里的0或7代表星期日。
command:命令,可以是系统命令,也可以是自己编写的脚本文件。
2.下方的图片有助于理解以上的设置。
3.在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如mon字段如果是星号 * ,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):逗号隔开的值指定时间,例如:dow取“1,2,5”,表示只在周一、周二、周五执行
中杠(-):中杠表示一个整数范围,例如:m取“2-6”,表示2-6分钟内要执行
正斜线(/):可以用正斜线指定时间的间隔频率,例如:h取“0-23 /2 ”表示每两小时执行一次。
同时正斜线可以和星号一起使用,例如:m取“ */10 ”,表示 每十分钟执行一次 。
实例1:每天7:50开启ssh服务
50 7 * * * /sbin/service sshd start
实例2:每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart
欢迎在这里评论、沟通、指正。
创作不易,引用请附原文链接。。。。。。