You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器Crontab定时任务无法正常执行问题求助

Ubuntu服务器Crontab定时任务无法正常执行问题求助

问题描述

我是Ubuntu Server的新手,这周在配置crontab定时任务时遇到了大麻烦,试了各种方法都没解决,实在摸不着头脑了。

我写了一个脚本,功能是检测SSH无活动一段时间后自动关机。手动运行脚本完全正常,但用crontab定时执行就没反应了。

以下是我的脚本代码:

#!/bin/bash

set -o nounset -o errexit -o pipefail

MARKER_FILE="/tmp/ssh-inactivity-flag"

STATUS=$(netstat | grep ssh | grep ESTABLISHED &>/dev/null && echo active || echo inactive)

if [ "$STATUS" == "inactive" ]; then

if [ -f "$MARKER_FILE" ]; then

echo "Powering off due to ssh inactivity."

rm --force "$MARKER_FILE"

/sbin/poweroff  

else

echo "El cabron aun no se ha ido :("

touch "$MARKER_FILE"

fi

else

rm --force "$MARKER_FILE"

echo "No se va el pussi"

fi

我的crontab设置:

*/1 *   * * *   root    /home/angel/idle.sh

从/var/log/syslog里能看到cron确实执行了脚本,但就是没效果,也看不到脚本的输出:

Jun 29 13:37:01 torreon CRON[1951]: (angel) CMD (root    /home/angel/idle.sh)

而且我试了其他只有一行代码的简单脚本,用crontab执行也不行,求各位大神指点!


问题排查与解决方案

我帮你梳理几个crontab最容易踩的坑,你可以逐一排查:

  1. Crontab语法错误(最可能的原因)
    普通用户的crontab条目不需要指定用户,只有系统级的/etc/crontab才需要写用户字段。你现在的crontab里多了root,导致cron把整个root /home/angel/idle.sh当成了要执行的命令,自然跑不起来。

解决方法:

  • 如果要以普通用户angel身份运行,直接改成:
    */1 * * * * /home/angel/idle.sh
    
  • 如果必须以root身份运行,不要在angel的crontab里加root,而是用sudo crontab -e编辑root用户的定时任务,然后写入:
    */1 * * * * /home/angel/idle.sh
    
  1. 脚本权限问题
    确保脚本有可执行权限,执行以下命令:
chmod +x /home/angel/idle.sh
  1. 命令绝对路径问题
    Cron的环境变量PATH非常有限,很多命令可能找不到(比如netstat)。你可以先查一下命令的绝对路径:
which netstat

然后把脚本里的netstat替换成查到的绝对路径(比如/usr/bin/netstat)。

  1. 捕获脚本执行日志
    把脚本的输出和错误信息重定向到日志文件,方便排查问题。修改crontab条目:
*/1 * * * * /home/angel/idle.sh >> /var/log/idle_script.log 2>&1

之后查看/var/log/idle_script.log就能看到脚本执行时的具体错误了。

  1. 环境变量缺失
    如果脚本依赖某些环境变量,cron默认的环境可能没有。可以在脚本开头添加环境变量配置:
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 后面的脚本内容不变

按上面的步骤排查,应该能解决你的问题!

备注:内容来源于stack exchange,提问作者Ángel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:44:37