计划任务管理
at;crontab
at:一次性计划任务
at
是一个用于在指定时间运行一次性命令的 Linux 工具。
1. 基本语法
at [选项] 时间
2. 时间格式
at
支持多种时间格式,常见的包括:
- 指定的日期和时间:
at 10:00
:在当天的 10:00 运行。at 15:30 10/31
:在 10 月 31 日的 15:30 运行。
- 相对时间:
at now + 1 hour
:在当前时间的一个小时后运行。at now + 2 days
:在当前时间的两天后运行。
- 使用关键字:
at midnight
:在午夜运行。at noon
:在中午运行。at 3pm tomorrow
:在明天下午 3 点运行。
3. 输入命令
在输入时间后,at
会进入交互模式,你可以输入要执行的命令。输入完成后,使用 Ctrl+D
来结束输入。例如:
$ at 10:00
at> echo "Hello, World!" > /tmp/hello.txt
at> <Ctrl+D>
4. 列出已安排的任务
使用 atq
命令可以列出当前用户已安排的所有任务:
atq
输出格式通常为:
1 2024-10-27 10:00 a user
5. 删除已安排的任务
可以使用 atrm
命令来删除特定的任务,任务编号可以从 atq
的输出中获得:
atrm <任务编号>
例如:
atrm 1
6. 常见选项
-
-f
:从文件读取命令,而不是标准输入。at -f /path/to/script.sh 10:00
-
-m
:即使任务在后台执行,也会在执行完成后发送邮件通知用户。at -m 10:00
-
-q
:指定任务队列。at -q b 10:00
-
-V
:显示版本信息。
at
命令通常需要有相应的权限,确保当前用户在 /etc/at.allow
或不在 /etc/at.deny
文件中。
at
任务是在用户的环境下执行的,因此在任务中可能需要使用绝对路径。
crontab :周期性计划任务
crontab
是 Linux 和 Unix 系统中用于定期执行任务的工具。它可以按照指定的时间表自动运行命令或脚本。
1. 基本概念
- Cron:一个守护进程,用于在后台定期执行任务。
- Cron 表:定义了何时执行任务的格式。
- Crontab 文件:每个用户可以有自己的
crontab
文件,存储要执行的任务。
2. Crontab 文件格式
crontab
的每一行通常由六个字段组成:
* * * * * 命令
- - - - -
| | | | |
| | | | +----- 星期 (0 - 7) (星期天是0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 一个月中的日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
3. Crontab 命令
使用 crontab -e
命令编辑当前用户的 crontab 文件:
crontab -e
使用 crontab -l
命令列出当前用户的 crontab 任务:
crontab -l
使用 crontab -r
命令删除当前用户的 crontab 文件:
crontab -r
如果希望在删除前确认,可以使用 -i
选项:
crontab -r -i
如果你有一个包含任务的文件,可以使用 crontab
命令从该文件加载任务:
crontab /path/to/file
4.时间格式示例
以下是一些常见的时间格式示例:
-
每分钟执行:
* * * * * /path/to/command
-
每小时执行:
0 * * * * /path/to/command
-
每天中午 12 点执行:
0 12 * * * /path/to/command
-
每周一执行:
0 0 * * 1 /path/to/command
-
每月 1 日执行:
0 0 1 * * /path/to/command
-
特定日期和时间(例如每年 1 月 1 日的 10:00):
0 10 1 1 * /path/to/command
5. 常见用法示例
-
每分钟备份文件:
* * * * * cp /path/to/source /path/to/backup
-
每小时清理临时文件:
0 * * * * rm -rf /tmp/*
-
每天运行脚本并将输出记录到日志文件:
0 0 * * * /path/to/script.sh >> /var/log/script.log 2>&1
-
每周六的凌晨 2 点执行系统更新:
0 2 * * 6 apt update && apt upgrade -y
输出处理:默认情况下,cron 任务的输出会通过邮件发送到用户。可以将输出重定向到文件,或使用 >/dev/null 2>&1
来丢弃输出。
[root@localhost ~]# cat /var/spool/cron/root root写的计划任务
0 * * * * rm -rf /tmp/*
[root@localhost ~]# ls /var/spool/cron/ 计划任务存放位置
root
[root@localhost ~]# cat /etc/cron.deny 黑名单,写在这个文件中的用户无权限执行计划任务
user1
[root@localhost ~]# touch /etc/cron.allow ; echo user2 > /etc/cron.allow ;cat /etc/cron.allow
user2
# 创建 /etc/cron.allow 如果allow文件里有内容,只有这里的用户可以执行,deny文件被忽略
标签:10,00,管理,crontab,cron,任务,计划,path
From: https://www.cnblogs.com/cloudwangsa/p/18563742