crontab 不执行解决办法

本文介绍了Linux系统下的Crontab定时任务工具的使用方法,包括两种设定任务的方式及重启服务的方法,并针对Crontab执行失败时常见的路径问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

crontab是linux系统下用于定时执行任务的小工具,很好用。

================= crontab 使用方法=================

目前我使用过两种方法设定任务:

1:在终端中运行: EDITOR=vim crontab -e  (=两旁没有空格)    制定好时间,和任务内容,保存退出后,守护进程会自动更新,不需要重启cron服务, 推荐!

2:打开 /var/spool/cron/crontabs  vim打开root文件,可以对root用户设定任务,但这个需要自己手动重启crontab。

重启方法:

1.在系统中有service这个命令时:
这个命令在red hat当中常用,有的linux发行版本中没有这个命令。
$ service crond start //启动服务
$ service crond stop //关闭服务
$ service crond restart //重启服务

2.linux发行版本没有service这个命令时:
/etc/init.d/cron stop
/etc/init.d/cron start


==================错误原因===================

crontab执行失败多数因为路径问题。 举个栗子:

cron命令:  终端中输出crontab -l 可以查看已经设置的任务。

55 14 * * * /usr/bin/python /var/www/hello.py >> /var/www/log/crontab.log

import os
print os.getcwd()</span>

输出: /root 

我的任务,是在14点55分的时候,执行python脚本,hello.py,结果定向输出到log目录下的crontab.log, 将当前任务执行路径输出。 结果显示为root。通过输出crontab执行路径,发现crontab执行的时候,默认从当前用户的根目录,我测试时候使用root,所以目录便从/root开始。

所以说,如果在脚本中使用了相关路径, 比如 '../hello.py' 之类,crontab就无法找到文件了,也就无法执行了。


=================解决办法====================

需要的工作: 告诉crontab,程序执行的从哪个目录开始。

对于python来说, 只需要在开头这样写:

import os
os.chdir('/var/www/')
括号中为项目的所在绝对路径。


至此,问题解决!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值