Á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 正在执行脚本,但它似乎没有工作或返回任何内容。我真的很迷失,我不知道我可能做错了什么,所以如果有人可以指导我,我将不胜感激。
(我也尝试过其他类似于一行代码的脚本,但这些脚本都不起作用。)
CMD (root /home/angel/idle.sh)显示 CRON 识别root为命令的一部分并尝试执行它,通常会失败...在 user 中不支持指定用户crontab,因此删除用户部分 ie root。
该命令crontab -e(不带sudo)编辑调用用户的crontab.
如果您需要以提升的权限执行脚本,请添加它将sudo crontab -e编辑root\xe2\x80\x99s user crontab。
\n\n每个用户都有自己的 crontab,任何给定 crontab 中的命令\n都将以拥有该 crontab 的用户身份执行。
\n
和:
\n\n\n下面列出了常规系统范围\n文件的内容
\ncrontab。 与用户的不同crontab,此文件具有用户名字段,\n/etc/crontab。