手动跑得好好的脚本,放进crontab就悄悄不执行,日志里连报错都没有。crontab的环境和登录shell不是一回事,手动能跑不等于定时能跑。定时任务失效,先别怀疑脚本写错了,路径与环境变量先核对,这两处占了大半原因。
⚡ 先确认任务到底跑没跑
查的第一步是确认任务有没有被执行,而不是猜。crontab里加一行把输出写进日志文件,比如结尾加上 >> /tmp/cron.log 2>&1,到了时间点看文件有没有内容。系统日志也可以看,grep CRON /var/log/syslog 能看到每次任务的触发记录。更直接的办法是在脚本开头写一行带时间的标记,比如 date >> /tmp/cron-run.log,时间到了文件里有没有新的一行,一看就知道任务跑没跑。跑都没跑,是调度的问题;跑了但没结果,是脚本里的问题,两条线分开查。
⚡ 路径问题:相对路径在定时任务里不认
手动执行时当前目录是你站的地方,脚本里写 ./backup.sh 或者 data/file.txt 都能找到。crontab执行时当前目录一般是用户家目录,相对路径指的地方完全不一样,文件找不到就直接失败。解决办法是全改成绝对路径,脚本路径、读写的文件、调用的命令,全部写全。命令也别只写名字,which python3 看一下完整路径写进去。脚本开头加一行 cd 到工作目录,能省掉很多麻烦,但文件路径还是建议写绝对的,稳妥。
ShockHosting是一家美国主机商家,2013年成立,总部在美国新泽西州,从虚拟主机与域名注册起家,2014年上线分销主机,2015年加入VPS,2025年11月成为ICANN认证注册商。它的虚拟主机与VPS都带面板,定时任务可以在面板里设,也可以在系统里用crontab管。
相关服务:ShockHosting
具体参考文章:ShockHosting 2026年最新虚拟主机注册教程:三档套餐怎么选
路径与环境都核对过还不行,先别急着提工单,主机商客服响应慢:先自查再提工单的清单里有先自查再提工单的清单,把日志与报错贴上去,客服定位起来也快得多。
⚡ 环境变量问题:PATH与家目录都要对上
crontab里的环境变量少得可怜,PATH只有系统默认的那几项,手动装在 /usr/local/bin 或者家目录下的命令,定时任务里找不到。解决办法有两个,要么在crontab开头写上完整的PATH,要么在脚本里用绝对路径调用每个命令。家目录相关的变量也一样,脚本里用到 ~ 或者 $HOME 的地方,定时任务里不一定能展开,直接写绝对路径最稳。改完之后别等下一个整点,用 crontab 里的时间格式先设一个两分钟后执行的测试任务,确认跑通了再改回正式时间。
VPSMVP部落 - 便宜VPS|VPS优惠|VPS测评|美国VPS|VPS教程






