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 crond

2.2 定时任务相关配置文件

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

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

linux 定时任务

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

linux 定时任务

(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)\.logecho >/data/tomcat/logs/catalina.outfind  /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[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

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

(4)特殊符号说明

linux 定时任务

2.4定时任务编写规范

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

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

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

总结:

本文对Linux的定时任务服务crond和命令crontab进行详解的讲解。在企业生产环境中,可以将一些重复性的工作通过定时任务来进行处理,比如日志定期处理,数据定期备份,可以提高工作效率。

版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。

给TA打赏
共{{data.count}}人
人已打赏
网站技巧

分享Laravel是怎么操作宝塔面板API

2025-2-13 21:37:48

网站技巧

typecho php7.4

2025-2-24 21:20:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索