linux系统添加定时任务

本文介绍了如何在Linux环境中使用Vim编辑crontab文件添加定时任务,执行脚本backtomcat.sh。同时,展示了如何使用zip命令打包ApacheTomcat目录为备份文件,并利用find命令查找并删除超过10天的备份zip文件。

vim /etc/crontab
末尾追加一行代码,例如: 0 */4 * * * /usr/local/deploy/alidata/backtomcat.sh:
其中,0 /4 * * * 是定时的时间的cron表达式
/usr/local/deploy/alidata/backtomcat.sh:是要定时执行的脚本
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用
或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
5.重启crontab:
service crond restart

将指定目录文件打包为指定文件

zip -r /usr/local/deploy/caseiBackups/$(date -d "today" +"%Y%m%d_%H%M%S").zip /usr/local/deploy/apache-tomcat-7.0.57

-r 递归处理,将指定目录下的所有文件和子目录一并处理
/user/local/deploy/caseiBackups/$(date -d “today” +“%Y%m%d_%H%M%S”).zip: 打好的压缩包路径。
$(date -d “today” +“%Y%m%d_%H%M%S”):获取系统当前时间。
/usr/local/deploy/apache-tomcat-7.0.57 :需要打包的文件的路径。

查找小于10天的备份文件,并删除:

find /usr/local/deploy/caseiBackups/ "*.zip" -type f -mtime +10 -exec rm {} \>/dev/null 2>&1

/usr/local/deploy/caseiBackups/ :要查找的目录。
-type 表示查找普通类型的文件,f表示普通文件。
-mtime 按照文件的更改时间来查找文件,+5表示文件更改时间距现在5天以前;如果是 -mmin +5 表示文件更改时间距现在5分钟以前。
-exec rm {} \表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。
/dev/null 表示空设备文件 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。

<think>嗯,用户想了解在Linux系统中部署定时任务的方法。参考了用户提供的几篇引用内容,这些内容都集中在crontab命令的使用上。 用户可能是运维人员或者开发者,需要在Linux服务器上设置自动化任务。从引用看,用户已经收集了一些基础资料,但可能对实际操作细节或常见问题有疑问。 考虑从几个关键点展开:首先是编辑定时任务的方法,引用1和2都提到了crontab -e命令;其次是任务格式的编写规则,引用1和2给出了具体示例;然后是常见问题处理,引用3提到的环境变量问题很典型;最后是系统级任务配置,引用4展示了/etc/crontab文件结构。 需要特别注意引用3提到的环境问题,这在实际操作中很常见,应该重点说明。另外引用4的系统级crontab目录结构也很实用,但用户可能更关注用户级任务配置。 准备在回答时强调几个易错点:环境变量差异、路径使用绝对地址、日志记录必要性。对于用户这种技术型需求,提供具体命令示例会更帮助,比如测试任务的设置方法。 考虑到用户可能还会遇到权限问题,准备在相关注意事项里补充sudo的使用场景。毕竟有些任务可能需要root权限才能执行。 </think>在Linux系统中部署定时任务主要通过**crontab服务**实现,以下是详细步骤和注意事项: --- ### **一、部署流程** 1. **编辑定时任务列表** 执行命令进入编辑模式: ```bash crontab -e ``` *首次使用会提示选择编辑器(如nano/vim)* 2. **编写任务规则** 在打开的文件中添加任务行,格式为: ``` * * * * * 要执行的命令或脚本 ``` **时间字段说明(从左到右)**: | 字段 | 含义 | 取值范围 | |------|------|----------| | 1 | 分钟 | 0-59 | | 2 | 小时 | 0-23 | | 3 | 日期 | 1-31 | | 4 | 月份 | 1-12 | | 5 | 星期 | 0-7 (0和7均为周日) | **示例**: - 每天0点执行任务: `0 0 * * * /path/to/script.sh` - 每5分钟执行: `*/5 * * * * /home/test.sh` [^2] 3. **保存并退出** 按编辑器规则保存(如vim按`:wq`) 4. **查看任务列表** ```bash crontab -l # 列出当前用户的任务 ``` 5. **日志检查** 任务输出默认通过邮件发送,建议重定向到日志文件: ```bash * * * * * /path/script.sh > /tmp/script.log 2>&1 ``` --- ### **二、关键注意事项** 1. **环境变量问题** - crontab环境与用户登录环境不同,**必须使用绝对路径** - 脚本中涉及的命令(如`java`、`curl`)需写全路径,可通过`which command`查找 ```bash # 错误示例:可能报"找不到jar包" java -jar app.jar # 正确示例(使用绝对路径) /usr/bin/java -jar /opt/app.jar ``` [^3] 2. **脚本权限** ```bash chmod +x /path/to/script.sh # 添加可执行权限 ``` 3. **系统定时任务** 需编辑`/etc/crontab`文件(需root权限),格式需指定用户: ``` * * * * * root /sbin/system_command ``` 系统预设任务目录: - `/etc/cron.hourly`(每小时) - `/etc/cron.daily`(每天)[^4] --- ### **三、调试技巧** 1. **手动测试脚本** ```bash bash /path/to/script.sh # 确认脚本可独立运行 ``` 2. **查看系统日志** ```bash tail -f /var/log/syslog | grep cron # Ubuntu/Debian tail -f /var/log/cron # CentOS/RHEL ``` 3. **捕获错误输出** ```bash * * * * * /path/script.sh >> /tmp/debug.log 2>&1 ``` --- ### **四、常用命令总结** | 命令 | 作用 | |------|------| | `crontab -e` | 编辑任务 | | `crontab -l` | 列出任务 | | `crontab -r` | **删除所有任务**(慎用!) | | `systemctl status cron` | 检查cron服务状态 | > ⚠️ **避坑提示**: > - 脚本中的文件路径必须为**绝对路径** > - 复杂任务建议先写完整测试脚本 > - 生产环境务必添加日志记录(参考[^1]的日志重定向示例) --- ### 相关问题 1. 如何让crontab任务使用与终端相同的环境变量? 2. Linux定时任务执行失败有哪些常见原因? 3. 除了crontab,还有哪些Linux定时任务工具(如at、systemd timer)? 4. 如何实现秒级精度的定时任务
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值