Crontab 无法在 ubuntu 服务器上运行

Áng*_*gel 4 server command-line bash scripts cron

我对 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
Run Code Online (Sandbox Code Playgroud)

这是 crontab 设置:

*/1 *   * * *   root    /home/angel/idle.sh
Run Code Online (Sandbox Code Playgroud)

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

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

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

(我也尝试过其他类似于一行代码的脚本,但这些脚本都不起作用。)

Raf*_*ffa 7

CMD (root /home/angel/idle.sh)显示 CRON 识别root为命令的一部分并尝试执行它,通常会失败...在 user 中不支持指定用户crontab,因此删除用户部分 ie root

\n

该命令crontab -e不带sudo)编辑调用用户的crontab.

\n

如果您需要以提升的权限执行脚本,请添加它将sudo crontab -e编辑root\xe2\x80\x99s user crontab

\n

man crontab

\n
\n

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

\n
\n

和:

\n
\n

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

\n
\n