我在设置为通过 crontab 每分钟运行一次的 shell 脚本时遇到了一个特殊问题。
我使用 Pelican 作为博客平台,并希望在有新帖子时半自动化网站更新的方式。为此,我创建了一个脚本来查找respawn
在与内容相同的目录中调用的文件(它通过 Dropbox 同步,因此我只需在那里创建同步到服务器的文件)。
编写脚本是为了如果文件respawn
存在,那么它会重建博客并将其删除。如果不是,它将退出。
这是调用的脚本publish.sh
#!/bin/bash
Respawn="/home/user/content/respawn"
if [ -f $Respawn ]
then
sudo /home/user/sb.sh;rm $Respawn
else
exit 0
fi
exit 0
这是 shell 脚本的 crontab
* * * * * /home/user/publish.sh
最后,这里的内容sb.sh
make html -C /var/www/site/
现在,如果我通过 SSH 运行脚本并且respawn
存在,它就可以完美运行。但是,如果我让 cron 执行此操作,则它不会运行 shell 脚本,但仍会删除该respawn
文件。
我还有另一项每 4 小时运行一次的 cron 作业,它运行sb.sh
得非常好(以防我忘记发布某些内容)。
我已经尝试使用用户的 crontab 并将其添加到 root,并且我还将用户添加到 sudoers 文件中,因此它可以在没有密码干预的情况下运行。两者似乎都不起作用。我错过了什么吗?