【Ubuntu使用技巧】Ubuntu22.04无人值守Crontab工具实战详解

一个愿意伫立在巨人肩膀上的农民......

Crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。Crontab允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。这些任务可以按照分钟、小时、日、月和星期等不同的时间单位进行安排。

一、Crond 服务管理

Ubuntu22.04系统默认是开机开启Crond 服务的,因此此处不必理会,但是如果自己电脑之前设置过关闭该服务,则需要重启,或者更改配置使其开机自启。配置方法是在 /etc/rc.d/rc.local 中添加 service crond start 这一行,其他的管理命令为:

bash 复制代码
# 启动服务
/sbin/service crond start 
# 关闭服务
/sbin/service crond stop 
# 重启服务
/sbin/service crond restart 
# 重新载入配置
/sbin/service crond reload

二、Crontab常用的基本命令

1.查看当前用户的计划任务

bash 复制代码
crontab -l

2.编辑计划任务

bash 复制代码
crontab -e

第一次进入会让你选择编辑器,比如我这里想选nano,那就输入1再敲回车即可。

3.删除计划任务

bash 复制代码
crontab -r

三、设置Crontab执行文件

1.Crontab执行的文件示例

此处以删除Ubuntu日志文件为例,首先创建一个名为"clean_logs.sh"的shell文件,文件内容如下:

bash 复制代码
#!/bin/bash
# 定义要清理的日志文件目录
LOG_DIR="/var/log"

# 查找并删除该目录下所有以.log结尾的文件
sudo find "$LOG_DIR" -type f -iname "*.log" -exec rm -f {} \;

2.Crontab设置

输入下方指令即可进入Crontab配置文件,并对其进行配置。

bash 复制代码
crontab -e

此处我是想每6小时删除一次日志文件,因此我的添加的时间设置和要执行的文件写法如下:

bash 复制代码
* */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服务

bash 复制代码
50 7 * * * /sbin/service sshd start

**实例2:**每月的4号与每周一到周三的11点重启smb

bash 复制代码
0 11 4 * mon-wed /etc/init.d/smb restart

欢迎在这里评论、沟通、指正。

创作不易,引用请附原文链接。。。。。。

相关推荐
fo安方14 分钟前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
爱奥尼欧24 分钟前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
超喜欢下雨天1 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
搬码临时工1 小时前
小企业如何搭建本地私有云服务器,并设置内部网络地址提供互联网访问
运维·服务器
tan77º2 小时前
【Linux网络编程】网络基础
linux·服务器·网络
风口上的吱吱鼠2 小时前
Armbian 25.5.1 Noble Gnome 开启远程桌面功能
服务器·ubuntu·armbian
18你磊哥2 小时前
Windows 本地安装部署 Apache Druid
运维·debian
笑衬人心。2 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
IT成长日记3 小时前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect
ldj20203 小时前
Jenkins 构建过程常见错误
运维·jenkins