Linux定时任务服务管理详解

1 定时任务基本概念

1.1 定时任务简介

在Linux系统中,定时任务是一种在特定时间或间隔内自动执行指定命令或脚本的功能。通过使用定时任务,用户可以自动化地管理和维护系统任务,例如定期备份文件、清理临时文件、监控系统性能等。

简单的说,定时任务相当于一个闹钟,什么时候做什么事

定时任务的实现主要依赖于crontab和crond两个核心组件。

1.2 crontab和crond的关系

crontab是一个命令行工具,它允许用户创建、编辑、查看和管理定时任务,通过crontab,用户可以指定哪些命令或脚本在特定的时间或周期性条件下自动执行。

crond是一个后台服务进程,也称为守护进程(daemon),它在系统启动时自动运行,并且持续监听由crontab指定的定时任务。

crond负责检查每个用户的crontab文件,解析其中的定时任务定义,并在适当的时间触发这些任务的执行。

简单来说,crontab是用来定义任务,crond是用于执行任务,是缺一不可,相辅相成的。

2 安装和配置定时任务

2.1 安装服务

大多数的Linux发行版都已经安装了crond服务,如果没有安装可以手动安装一下

(1)检查是否安装

rpm -qa |grep cron

(2)安装定时任务服务

# 在Debian系列系统上
apt-get install cron

# Redhat系列系统上
yum install -y cronie

cronie软件包,包含crontab命令和cron守护进程。

(3)常用命令

# 启动crond服务
systemctl start crond

# 停止crond服务
systemctl stop crond

# 重启crond服务
systemctl restart

2.2 定时任务相关配置文件

(1)主配置文件/etc/crontab

该文件主要包括环境变量和任务格式。

任务格式中“分时日月周”解析:

时间字段描述
minute分钟,取值范围0 - 59
hour小时,取值范围0 - 23
day of month哪一日,取值范围1 - 31
month月份,取值范围1 - 12
day of week周几,取值范围0 - 6

(2)用户级crontab文件

每个用户都可以有自己的crontab文件,这些文件位于**/var/spool/cron目录**下,并以用户名命名。用户可以通过crontab命令编辑自己的crontab,添加定时任务

(3)目录/etc/cron.d

/etc/cron.d目录包含了系统级的定时任务文件。这些文件遵循与/etc/crontab相同的语法,但允许为每个任务指定不同的用户

2.3 定时任务管理(重点)

(1)添加定时任务:crontab -e

准备定期删除日志的脚本

[root@localhost ~]# vi  /data/rmlog.sh

#!/bin/bash

# 删除某个目录下14天以前的数据
find /data/logs/css2/ -type f -mtime +14 -exec rm {} \; 

# 将Tomcat文件割接,且仅保留三天
cp -a /data/tomcat/logs/catalina.out  /data/tomcat/logs/catalina.out_$(date +%F_%H-%M-%S)\.log
echo >/data/tomcat/logs/catalina.out
find  /data/tomcat/logs/ -type f  -mtime +3 -exec rm -fr {} \;

默认以root用户来添加定时任务

crontab -e 

# 每天两点定时执行/data/rmlog.sh脚本
0 2 * * *  /bin/sh /data/rm/rmlog.sh

# 

以普通用户liyb来创建定时任务

crontab -u liyb -e 
# 每天两点定时执行/data/rmlog.sh脚本
0 2 * * *  /bin/sh /data/rm/rmlog.sh

注意:

执行-u指令时需要是root用户下或有管理员权限。使用普通用户时需要确保有对应的执行权限,不然定时任务就会失败

(2)查看定时任务:crontab -l

在创建定时任务后,/var/spool/cron目录会对应用户的定时任务文件,可以用户的定时任务内容

[root@localhost ~]# cd /var/spool/cron/
[root@localhost cron]# ll
总用量 8
-rw-------. 1 root root 84 10月 10 02:56 liyb
-rw-------. 1 root root 84 10月 10 02:56 root
[root@localhost cron]# cat liyb
# 每天两点定时执行/data/rmlog.sh脚本
0 2 * * *  /bin/sh /data/rm/rmlog.sh

也可以直接使用crontab -l 查看定时任务内容

# 查看root用户的定时任务
crontab -l 
# 查看liyb用户的定时任务
crontab -u liyb -l 

(3)删除定时任务:crontab -r 方法一:使用crontab -e进入编辑页面,删除对应的任务,但并不会删除/var/spool/cron目录下对应用户的定时任务文件

方法二:使用crontab -r命令删除,该命令会删除/var/spool/cron用户的定时任务文件,并且无法恢复,请谨慎使用。

# 删除liyb用户的定时任务
crontab -r -u liyb

建议是使用方法一,方法二太简单粗暴了,不太适合斯文人。

(1)特殊符号说明

符号
*代表所有: * * * * * command 表示每分钟执行一次该任务
, 逗号表示“或”关系:* * 1,15 * * 表示每月1号和15号执行
/ 斜杠指定时间字段的步长:*/5 * * * * command 表示每隔5分钟执行一次该任务
- 短横线表示区间取值:0 3 * * 1-5 command 表示表示周一到周五陵城三点都执行该命令

2.4定时任务编写规范

(1)编写定时任务要有注释说明,方便阅读

(2)编写定时任务路径信息尽量使用绝对路径,如/data/rmlog.sh

(3)编写定时任务命令需要采用绝对路径执行,如/usr/sbin/useradd

如果你觉得这个作品对你有帮助,请不吝点赞、收藏,关注并分享给身边更多的朋友。如果你有任何疑问或建议,欢迎在评论区留言交流。

更多精彩的文章请关注公z号:运维李哥不背锅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

运维李哥不背锅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值