使用crontab不能正常执行的问题

本文分享了Crontab定时任务的实际操作经验,包括编辑、安装及遇到的问题解决方法。重点介绍了如何避免覆盖原有任务、确保命令正确执行及注意新安装的任务有延迟生效的特点。

 

crontab -l:
   列出当前用户的crontab列表
crontab -e:
   以vi打开crontab文件,可以进行编辑。如果需要加新的自启动项目,可以在此进行添加后再输入:wq

保存。

   "crontab.XXXXGoo5MX" 25L, 1611C written                                              
   crontab: installing new crontab
   表示新的crontab已经load进去了。

虽然crontab看起来比较简单,但是第一次使用时还是遇到了不大不小的麻烦。

问题一、
    按照网上介绍的方法,自己编辑了一个文件
    vi my.crontab
    然后在命令行中输入:crontab cronfile
   
    杯具了,当前用户原先设置的时程表被我给覆盖了,汗!幸好系统有crontab的备份,不然死惨了。

解决方法:
    恢复备份。
    用crontab -e打开进入编辑状态即可写入自己要的自启动项目

问题二、
    crontab -e
    加入测试用的自启动项目
    12 11 * * * echo "test"
    到了指定的时间11:22,未见打印出test
    猜想也许是进程已经执行了,但是未能写到标准输出而已
   

问题三、将上面的测试项目改为
    15 11 * * * echo "test" < /home/user_01/study/test.txt
   
    还是不能正确执行!

    请教了可爱的vincent同学才知道,new crontab installed之后三分钟之内是不能执行的。尝试将时

间延迟一点。

    30 11 * * * echo "test" < /home/user_01/study/test.txt
    这回终于搞定了

    另外,待执行的命令或者shell脚本必须给出绝对路径,否则也是不能成功执行的
   

 

### 检查 crontab 脚本是否成功执行的方法 1. **检查 crontab 日志** Linux 系统通常会记录 crontab执行日志。可以通过查看 `/var/log/cron` 或 `/var/log/syslog`(Debian/Ubuntu)来确认任务是否被触发。 使用命令 `grep CRON /var/log/syslog` 或 `tail -f /var/log/cron` 来过滤和追踪定时任务的执行情况。 2. **脚本中添加日志输出** 在脚本中将执行信息输出到日志文件,可以明确知道脚本是否被执行以及执行过程中是否有错误。例如: ```bash #!/bin/bash echo "Script started at $(date)" >> /path/to/script.log # 你的脚本内容 echo "Script finished at $(date)" >> /path/to/script.log ``` 这样可以确认脚本是否在预期时间运行,并帮助定位错误。 3. **检查环境变量问题** crontab执行环境与用户 shell 不同,缺少某些环境变量可能导致脚本失败。可以尝试在脚本中显式设置所需环境变量,或者在 crontab 中添加 `SHELL=/bin/bash` 和 `PATH` 变量以确保执行环境与手动执行一致[^3]。 4. **验证脚本权限** 确保脚本具有可执行权限。使用 `chmod +x script.sh` 命令赋予执行权限,并在 crontab使用绝对路径调用脚本。 5. **测试脚本执行命令** 将脚本中的命令单独提取出来,在命令行中模拟执行,确保命令本身没有问题。例如,如果有 `jcmd` 和 `lsof` 命令,可以分别运行这些命令以检查是否正常工作[^4]。 6. **检查文件路径和重定向** 确保脚本使用的所有文件路径都是绝对路径,特别是在重定向输出时。crontab 执行时的工作目录可能不是用户的主目录,因此需要明确指定输出文件的完整路径[^2]。 7. **使用 `systemctl` 或 `journalctl` 查看服务状态** 对于某些 Linux 发行版,可以使用 `systemctl status cron` 或 `journalctl` 来查看 cron 服务的状态和执行日志,确认任务是否正常调度。 8. **设置测试任务** 可以临时设置一个简单的测试任务,例如: ``` * * * * * echo "Test cron job" >> /tmp/cron_test.log ``` 等待几分钟后检查 `/tmp/cron_test.log` 文件,确认任务是否成功执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值