Crontab定时任务

crontab

我们可以使用crontab执行一些周期任务

crontab 命令

crontab [-u user] file

crontab [-u user] { -e | -l | -r }

  • crontab file_name

将file做为crontab的任务列表文件并载入crontab

  • crontab -e

编辑crontab文件内容

  • crontab -l

显示crontab文件内容

  • crontab -r

删除载入后的crontab文件内容

crontab文件

星期 要运行的命令

  • 第1列 分钟1~59
  • 第2列 小时1~23(0表示子夜)
  • 第3列 日1~31
  • 第4列 月1~12
  • 第5列 星期0~7(0,7表示星期天)
  • 第6列 要运行的命令

几个特殊符号

/ - ,

  • / 每(per): */2 每两个单位
  • - 连续: 1-5 1,2,3,4,5
  • , 非连续: 1,2,5 1和2和5

demo

# 每分钟向用户目录下的log.txt写入当时日期
* * * * * /bin/date >> ~/log.txt 
# 每分钟
* * * * * /bin/date >> ~/log.txt

# 每5分钟
*/5 * * * * /bin/date >> ~/log.txt

# 每小时的第五分钟
5 * * * * /bin/date >> ~/log.txt 

# 4月1日早上8点
0 8 1 4 * /bin/date >> ~/log.txt 

# 4和5月 1日早上8点
0 8 1 4,5 * /bin/date >> ~/log.txt 

# 12306
23-7 * * * * /bin/date >> ~/log.txt 

2015-03-26 更新

crontab辅助工具

这个工具可以生成crontab文件。比如我们按照自己的想法选择了任务的时间,可以使用它帮助我们生成对应的crontab文件。

地址:http://www.crontab-generator.org/

crontab的调试

这个建议在命令的后面加上 ... >> ~/log.txt 2>&1,这样我们就可以在用户目录下看到crontab执行的日志了。如:

* * * * * /bin/date >> ~/log.txt >> ~/log.txt 2>&1

环境变量

虽然我们知道crontab执行时是没有环境变量的,但是这个确是个讨厌的东西。我们在本地调试好了相关的代码,用crontab却怎么执行也不正确,比如执行下面的shell:

#!/bin/bash
py3=$(which python3)
echo py3
...

默认情况什么也不会输出。下面的逻辑自然就是错的了。为了解决这个问题,我们可以在最开始加上这么一行 source /etc/profile ,然后在执行就可以顺利拿到我们的值了:

#!/bin/bash
source /etc/profile
py3=$(which python3)
echo py3
...
<think>我们正在讨论Linux中如何使用crontab创建和管理定时任务。根据引用内容,我们可以总结如下:1.**查看当前用户的定时任务**:使用命令`crontab-l` [^1][^2]2.**编辑定时任务**:使用命令`crontab-e`进入编辑模式,可以添加、修改或删除任务,然后保存退出[^1][^3]3.**删除所有定时任务**:使用命令`crontab-r`会删除当前用户的所有定时任务。如果希望删除前确认,可以使用`crontab-i-r`或`crontab-ri`,这样系统会询问是否删除[^1]4.**直接编辑系统文件**:还可以通过直接编辑系统文件 `/etc/crontab`来添加定时任务(需要root权限)[^3] 此外,crontab的语法格式为:``` ** ** *command_to_execute|| || || || |-----星期几(0-7)(星期天为0或7)| || -------月份 (1 -12) || ---------日(1-31)| -----------小时 (0 -23) -------------分钟(0-59)``` 例如:-每天凌晨2点执行:`02 ** */path/to/script.sh` -每周一中午12点:`012 **1 /path/to/command` 现在,我将按照用户要求生成相关问题。</think>### 如何在Linux中使用crontab创建和管理定时任务 #### 一、基本操作命令 1. **创建/编辑任务** 使用 `crontab -e` 命令编辑当前用户的定时任务表[^3]。系统会自动打开默认编辑器(如vim),添加格式为: ```bash * * * * * command_to_execute │ │ │ │ │ │ │ │ │ └─ 星期 (0-7, 0和7=周日) │ │ │ └─── 月份 (1-12) │ │ └───── 日 (1-31) │ └─────── 小时 (0-23) └───────── 分钟 (0-59) ``` 示例:每天3:30执行备份脚本 `30 3 * * * /home/user/backup.sh` 2. **查看任务** `crontab -l` 列出当前用户的定时任务[^1][^2] 3. **删除任务** - 删除所有任务:`crontab -r` - 安全删除(需确认):`crontab -i -r` [^1] #### 二、系统级管理 1. **全局任务配置** 管理员可直接编辑 `/etc/crontab` 文件(需root权限)[^3],格式需指定用户: ```bash * * * * * username command ``` 2. **服务状态检查** ```bash systemctl status cron # 检查cron守护进程状态 ``` #### 三、高级技巧 1. **特殊字符** - `*/5 * * * *`:每5分钟 - `0 8-18 * * 1-5`:工作日8-18点整点 2. **日志查看** 任务执行日志位于:`/var/log/syslog`,搜索关键词`CRON` 3. **环境变量问题** 脚本中建议使用绝对路径,或在crontab开头声明环境变量: ```bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ``` #### 四、注意事项 1. 新任务无需重启服务,cron会自动检测文件变化[^2] 2. 测试任务时建议先设置未来2分钟执行,避免长时间等待 3. 权限问题:用户级任务以该用户权限执行,系统级任务需指定用户 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值