CentOS定时任务crontabs

1. 示例


  • 用 crontabs 服务设置每秒钟执行一次 python 脚本,打印内容重定向到日志文件。

如果当前系统没安装,就先

yum install crontabs

创建测试文件 /home/TestCts/task.py

import datetime
if __name__ == "__main__":
    print(datetime.datetime.now(),"执行了一次本程序")

执行脚本打印如下

[root@VM_0_13_centos TestCts]# python3 task.py
2021-06-21 11:11:13.157853 执行了一次本程序

用如下命令查看当前系统中的定时任务列表

[root@VM_0_13_centos TestCts]# crontab -l
*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'

使用如下命令编辑任务列表

[root@VM_0_13_centos TestCts]# crontab -e

添加一个任务,每分钟执行一次 task.py 脚本,将结果输出到 task.log 。添加后任务列表如下。

*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'
* * * * * /usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log

重启服务

[root@VM_0_13_centos TestCts]# systemctl restart crond.service

查看日志(需要等待计划任务执行后)

[root@VM_0_13_centos TestCts]# tail -f task.log
2021-06-21 11:19:01.969594 执行了一次本程序
2021-06-21 11:20:01.435678 执行了一次本程序
2021-06-21 11:21:01.777830 执行了一次本程序

2. 配置文件格式


配置文件内容格式如下

* * * * * /usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log

其代表意义及取值范围如下

格式*****Command
含义分钟小时日期月份星期命令
取值[0, 59][0, 24][1, 31][1, 12][1, 7]/

可使用特殊字符及含义

  • * 表示任何
  • / 表示间隔,“每”。
  • - 表示一段时间
  • , 表示离散时间

3. 举例说明


1. 普通案例

  1. 每 1 分钟执行一次
    * * * * * python3 task.py*/1 * * * * python3 task.py
  2. 每 5 分钟执行一次
    */5 * * * * python3 task.py
  3. 每小时的第 5 分钟执行一次
    5 * * * * python3 task.py
  4. 每天的 09:05 执行一次
    5 9 * * * python3 task.py
  5. 每月 3 号的 09:05 执行一次
    5 9 3 * * python3 task.py
  6. 每年 63 号的 09:05 执行一次
    5 9 3 6 * python3 task.py
  7. 星期三09:05 执行一次
    5 9 * * 3 python3 task.py

2. 稍复杂一点的案例

  1. 每月 3、13 号的 09:05 各执行一次
    5 9 3,13 * * python3 task.py
  2. 每月 3、13 号的 09:05、10:05、11:05 各执行一次
    5 9-11 3,13 * * python3 task.py
  3. 每月 3、13 号的 09:00-11:00 内每 15 分钟 各执行一次
    */15 9-11 3,13 * * python3 task.py

3. 每 x 秒执行方法

设置每10秒钟执行一次

* * * * * /usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log
* * * * * sleep 10; /usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log
* * * * * sleep 20; /usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log
* * * * * sleep 30;/usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log
* * * * * sleep 40;/usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log
* * * * * sleep 50;/usr/bin/python3 /home/TestCts/task.py >>/home/TestCts/task.log

.
.
.
.
.
.


桃花仙人种桃树,又摘桃花换酒钱_

<think>好的,用户需要关于CentOS系统中crontab的简单易懂的入门教程。根据用户提供的引用内容,我需要整理出一个清晰的步骤指南。首先,用户可能已经安装了crontab,但为了确保全面,还是应该从安装步骤开始。引用1提到用yum安装crontabs,所以第一步应该是安装部分。 接下来,用户可能需要知道如何启动和管理服务,比如启动、停止、重启等操作。引用1和4都提到了systemctl相关的命令,这部分需要包含进去,包括开机启动的设置。 然后,配置定时任务的具体步骤是关键。用户需要知道如何编辑crontab文件,以及语法结构。引用2中的配置格式说明很有用,比如星号代表的时间单位和例子。同时,引用3提到绝对路径的重要性,这可能是一个常见的问题点,需要强调。此外,日志和调试部分,如输出重定向和查看日志,引用2和3都有涉及,应该包含这些内容,帮助用户排查任务是否执行成功。 常见问题部分,用户可能会遇到任务不执行的情况,引用3列出了几个原因,比如服务状态、路径问题,这些都需要详细说明。可能还需要提到权限问题,比如用户是否有权限执行脚本,虽然引用中没有明确提到,但根据经验,这也是常见问题之一。 最后,备份和恢复任务也是实用的技巧,引用2提到了相关命令,可以加入这部分内容。整个教程需要结构清晰,分步骤说明,确保用户能一步步跟着操作。同时,注意使用中文,保持语言简洁易懂,避免专业术语过多。还要检查LaTeX格式是否符合要求,比如行内公式是否正确使用$符号,独立公式是否用$$,不过在这个回答中可能用不到数学公式,所以主要注意代码块和普通文本的格式。 另外,用户可能需要知道如何验证任务是否成功执行,比如检查文件是否生成,引用3中的例子用到了tar压缩包,可以保留这个例子。最后,生成的相关问题要围绕用户可能的后续疑问,比如权限问题、调试方法、时间格式调整等,参考之前的示例问题结构来设计。</think>### CentOS定时任务crontab配置入门教程 #### 一、基础配置步骤 1. **安装crontab**(默认已安装,可跳过) ```bash yum install crontabs ``` 2. **服务管理** - 启动服务:`systemctl start crond` - 停止服务:`systemctl stop crond` - 重启服务:`systemctl restart crond` - 设置开机启动:`systemctl enable crond`[^1][^4] 3. **编辑任务** ```bash crontab -e # 进入编辑模式(默认使用vim) ``` 格式说明: ```bash * * * * * command_to_execute │ │ │ │ │ │ │ │ │ └─ 星期(0-6,0=周日) │ │ │ └─── 月份(1-12) │ │ └───── 日期(1-31) │ └─────── 小时(0-23) └───────── 分钟(0-59) ``` 4. **配置示例** - 每天3:30备份目录: ```bash 30 3 * * * /usr/bin/tar -zcf /backup/data_$(date +\%F).tar.gz /data ``` - 每5分钟检测服务状态: ```bash */5 * * * * /usr/sbin/systemctl status nginx >> /var/log/nginx_check.log ``` #### 二、关键注意事项 1. **路径问题** - 必须使用**绝对路径**(如`/usr/bin/tar`而非`tar`)[^3] - 可在任务中声明环境变量: ```bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ``` 2. **日志与调试** - 查看执行记录:`tail -f /var/log/cron` - 输出重定向(追加错误信息): ```bash 0 * * * * /script.sh >> /log.txt 2>&1 ``` 3. **任务验证** - 执行后检查目标文件是否生成(如备份文件、日志文件)[^3] - 使用`crontab -l`查看当前用户的任务列表[^2] #### 三、常见问题排查 | 现象 | 检查项 | 解决方法 | |--------------|-------------------------------|------------------------------| | 任务未执行 | 1. crond服务是否运行 | `systemctl status crond` | | | 2. 命令路径是否绝对 | 替换为完整路径 | | | 3. 脚本是否有执行权限 | `chmod +x /path/to/script.sh`| | 输出异常 | 1. 是否添加输出重定向 | 添加`>> /path/to/log 2>&1` | | 时间错误 | 1. 时区是否一致 | `timedatectl set-timezone Asia/Shanghai` | #### 四、进阶操作 1. **任务备份与恢复** ```bash crontab -l > cron_backup.txt # 备份 crontab cron_backup.txt # 恢复 ``` 2. **系统级任务配置** 管理员可通过编辑`/etc/crontab`文件配置系统级任务,需指定执行用户: ```bash * * * * * username /path/to/command ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值