博客
关于我
Linux 定时执行任务
阅读量:790 次
发布时间:2023-02-01

本文共 2821 字,大约阅读时间需要 9 分钟。

定时执行任务

定时执行任务介绍

定时执行任务是指在预定时间自动执行计划好的工作,如系统备份、缓存清理等。常用的工具包括 at 命令、batch 命令、crontab 命令以及 CentOS 7 中的 timer 命令。以下将详细介绍 at 命令和 crontab 命令的使用方法。


at 命令

1. 准备工作

1. 安装 at 软件包

进入终端后执行以下命令安装 at 软件包:

# yum安装at软件包[root@centos7 ~]# yum install -y at

2. 启用 atd 服务

atd 是 atd 服务的依赖。执行以下命令查看服务状态:

# 查看atd服务状态[root@centos7 ~]# systemctl status atd● atd.service - Job spooling tools   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)  Active: active (running) since 六 2020-04-25 21:41:37 CST; 4s ago Main PID: 21972 (atd)  CGroup: /system.slice/atd.service           └─21972 /usr/sbin/atd -f# 启用atd服务[root@centos7 ~]# systemctl start atd[root@centos7 ~]# systemctl status atd● atd.service - Job spooling tools   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)  Active: active (running) since 六 2020-04-25 21:41:37 CST; 4s ago Main PID: 21972 (atd)  CGroup: /system.slice/atd.service           └─21972 /usr/sbin/atd -f

3. 访问控制

at 命令支持通过 /etc/at.allow/etc/at.deny 实现用户访问控制。默认情况下,只有在 /etc/at.deny 中存在且未被 /etc/at.allow 过盖的用户才能使用 at 命令。

# 查看at.deny文件[root@centos7 ~]# ls /etc/at.deny/etc/at.deny[root@centos7 ~]# cat /etc/at.deny

4. 添加定时任务

使用 at 命令添加定时任务:

# basic format[root@centos7 ~]# at [options] [时间]

常用选项:

  • -m:执行完成后以 E-mail 通知用户。
  • -c Work:显示命令的实际输出。
  • -t time:指定执行时间,格式如 HH:MM
  • -d:删除任务,需提供任务 ID。
  • -l:列出当前任务。
  • -f file:运行指定的脚本文件。

示例

在 21:50 执行 ls /root 命令,并将结果写入 /root/at.txt 文件。

[root@centos7 ~]# at 21:50at> ls /root >> /root/at.txtat>

执行完成后,输出如下:

[root@centos7 ~]# atq2       Sat Apr 25 21:50:00 2020 a root[root@centos7 ~]# cat /root/at.txtabc

删除任务

使用 atrm-d 选项删除任务:

[root@centos7 ~]# atrm 2[root@centos7 ~]# at -l3       Sun Apr 26 21:01:00 2020 a root[root@centos7 ~]# at -d 3

crontab 命令

1. 准备工作

crontab 是用于周期执行定时任务的工具,其依赖 crond 服务。crond 会每分钟检查一次任务列表并执行。

1. 启用 crond 服务

crond 默认自启动,确保其处于运行状态:

# 启用crond服务并查看状态[root@centos7 ~]# systemctl start crond[root@centos7 ~]# systemctl status crond

2. 访问控制

crontab 命令通过 /etc/cron.allow/etc/cron.deny 文件设置访问控制。


2. 使用方法

crontab 命令格式如:crontab [options] [file],其中 [file] 是定时任务文件。

常用选项

  • -u user:指定用户。
  • -e:编辑任务文件。
  • -l:显示任务列表。
  • -r:删除任务文件。
  • -i:确认删除提示。

示例

使用 crontab -e编辑任务文件,并输入以下内容以定时执行脚本:

# 进入crontab编辑界面[root@centos7 ~]# crontab -e# 输入任务时间格式* * * * *  执行的命令

3. 定时任务格式

任务格式为:

分钟、小时、日、月、星期## 命令

特殊符号:

  • *:表示所有值
  • ,:表示精确值
  • -:表示范围
  • /:表示间隔

示例

在每天 4:40 执行脚本 /root/test.sh

*/10 4:*  *  *  *  sh /root/test.sh

在每周一至周五的 8:00 执行任务:

0 8 * * 1-5 /root/test.sh

4. 查看与删除任务

查看当前任务:

[root@centos7 ~]# crontab -l*/1  *  *  *  *  sh /root/test.sh

删除任务文件:

[root@centos7 ~]# crontab -r

系统级定时任务

系统级定时任务配置在 /etc/crontab 文件中,只能由 root 用户定义。

# 示例配置文件SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# 定时任务示例*/10 * * * * sh /root/test.sh

执行 task 文件后,可通过终止进程将其停止:

[root@centos7 ~]# kill -9 1234

总结

通过 at 命令和 crontab 命令,可以轻松完成定时任务配置。选择合适工具根据需求进行设置。

转载地址:http://rowfk.baihongyu.com/

你可能感兴趣的文章
elasticsearch配置文件里的一些坑 [Failed to load settings from [elasticsearch.yml]]
查看>>
Elasticsearch面试题
查看>>
2024年全国程序员平均薪资排名:同样是程序员,为什么差这么多?零基础到精通,收藏这篇就够了
查看>>
2024年非科班的人合适转行做程序员吗?
查看>>
2025版最新一文彻底搞懂大模型 - Agent(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
Java基础:按位运算符
查看>>
LeetCode Text Justification
查看>>
LeetCode – Refresh – 4sum
查看>>
LeetCode地平线专场——第308场周赛题解
查看>>
leetcode题解206-反转链表
查看>>
leetcode题解8-盛最多水的容器
查看>>
leftjoin多个on条件_MySQL:left join 避坑指南
查看>>
Less 日常用法
查看>>
lib/libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found (required by /lib/x86_64-linux-gnu/libLLVM-15
查看>>
libmpg123 解码库用法
查看>>
libssh2编译部署详解
查看>>
libtorch中python中cuda可以使用,但是是c++环境中不行
查看>>
LibTorch之优化器
查看>>
LibTorch之图像分类
查看>>
LibTorch之损失函数
查看>>