【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

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

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

相关推荐
MilesShi2 小时前
从 scheduler_tick 到上下文切换:深入解析 Linux 内核的 TIF_NEED_RESCHED 标志设置流程
linux·运维·单片机
方渐鸿4 小时前
【2024】k8s集群 图文详细 部署安装使用(两万字)
java·运维·容器·kubernetes·k8s·运维开发·持续部署
我爱云计算5 小时前
K8S详解(5万字详细教程)
linux·运维·云原生·容器·kubernetes
明明跟你说过5 小时前
【k8s】资源限制管理:Namespace、Deployment与Pod的实践
运维·docker·云原生·容器·kubernetes·k8s
2301_794333917 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
打码人的日常分享7 小时前
运维服务方案,运维巡检方案,运维安全保障方案文件
大数据·运维·安全·word·安全架构
Molesidy7 小时前
【UAV】基于PX4+Ubuntu24.04.3的无人机制作的开发环境搭建
ubuntu·无人机·px4·gazebo·uav
荣光波比8 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算
武文斌778 小时前
单片机:DS18B20测温度、74HC595扩展芯片、8*8LED矩阵
运维·服务器·单片机·嵌入式硬件
fengfuyao9858 小时前
诊断并修复SSH连接Github时遇到的“connection closed“错误
运维·ssh·github