Crontab 在 ubuntu 服务器上永远无法运行

Crontab 在 ubuntu 服务器上永远无法运行

我对 ubuntu 服务器还很陌生,这周我在使用 crontab 时遇到了很多问题,我真的不知道它出了什么问题,我尝试了这里看到的所有方法都无济于事。

因此,我有一个脚本,理论上应该在网络不活动几分钟后关闭服务器。该脚本执行没有任何问题,如果手动执行,效果很好。我遇到的问题发生在我尝试设置 cron 来执行此脚本时。

以下是代码

#!/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  # See https://unix.stackexchange.com/a/196014/56711
  else
    # Create a marker file so that it will shut down if still inactive on the next time this script runs.
    echo "El cabron aun no se ha ido :("
    touch "$MARKER_FILE"
  fi
else
  # Delete marker file if it exists
  rm --force "$MARKER_FILE"
  echo "No se va el pussi"
fi

这是 crontab 设置:

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

以下是它在 /var/log/syslog 上返回的内容

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

理论上 cron 正在执行脚本,但它似乎不起作用或返回任何内容。我真的迷茫了,我不知道我可能做错了什么,所以如果有人能指导我,我将不胜感激。

(我也尝试过其他就像一行代码一样的脚本,但它们也不起作用。)

答案1

CMD (root /home/angel/idle.sh)表明 CRON 将其识别root为命令的一部分并尝试执行它,通常会失败...这里不支持在用户中指定用户crontab,因此请删除用户部分,即root

命令crontab -e没有sudo) 编辑调用用户的crontab

如果您需要以提升的权限执行脚本,则添加它将sudo crontab -e编辑root用户crontab

man crontab

每个用户都有自己的 crontab,并且任何给定 crontab 中的命令都将以拥有该 crontab 的用户的身份执行。

和:

下面列出了常规系统范围文件的内容crontab不同于 用户的crontab,此文件具有用户名字段,如 所用/etc/crontab

相关内容