crontab 不执行我的脚本?

crontab 不执行我的脚本?

我将此规则添加到 crontab 的底部

* * * * * /root/test.sh

它基本上重置了 iptables,这样我就可以闲逛了。如果我搞砸了,我不会被锁在我的盒子外面。当我以 bash 编写运行脚本时,/root/test.sh它会按预期清除所有内容。但是,如果我等一下,它似乎不会执行。

我运行了下面的命令,可以看到它似乎每分钟都在运行我的脚本,但我的脚本没有执行任何操作。

grep CRON /var/log/syslog

IIRC 强制脚本以所有者身份运行的方法是chmod a+s file。所以我就这么做了。stat显示这一行

Access: (6755/-rwsr-sr-x)  Uid: (    0/    root)   Gid: (    0/    root)

cron 不应该以 root 身份运行我的脚本吗?为什么它看起来没有执行?我正在运行 Debian 7(喘息)

答案1

您无法使用 SUID 权限运行脚本(而不是二进制文件)。您的脚本正在执行,但作为您的用户而不是 root,因此它的iptables调用不起作用。

来自 cron 作业的错误消息将发送到本地电子邮件。确保本地电子邮件配置正确(某些发行版默认情况下不这样做)。

简单的解决方案(因为您具有 root 访问权限)是在 root 用户的 crontab 中安装该脚本,或者使用/etc/crontab以下行:

* * * * * root /root/test.sh

相关内容