当我使用 root 手动运行脚本时,它运行良好。当我在 cron 中执行相同的脚本时,它没有运行。我检查了 cron 是否确实在调用该脚本,但该脚本没有执行。我将脚本中的 echos 输出导出到文本文件,但文本文件没有记录任何内容。请检查此 cron
*/10 * * * * sh /var/www/sym_monitor/restart.sh > /var/www/migrate/root_restart.txt
答案1
只有使用 crontab -e 添加时,cron 条目才是正确的。如果直接将其添加到 /etc/crontab,则需要包含运行它的用户名。
如果成功创建,cron 应该会缓存到 /var/spool/cron/ 中。
检查脚本权限,chmod +x。
最好包含 shell 的完整路径 /bin/sh,或者直接将其排除。
*/10 * * * * /bin/sh /var/www/sym_monitor/restart.sh > /var/www/migrate/root_restart.txt
另外,您是否在脚本中包含了 shebang 行?它应该以 #!/bin/sh 或 #!/bin/bash 开头
答案2
尝试将以下内容添加到 crontab 行末尾:
2> /var/www/migrate/error.log.txt
现在提出一些猜想(如果问题不太长的话,您可能已经将脚本添加到问题中):
检查您的脚本以查看是否有一行将变量设置PATH
为与您执行时相同的值:
echo $PATH
请记住,cron 中启动的程序不会执行您登录时发生的任何 shell 初始化文件。
您确定该文件至少具有读取权限吗?...shell 脚本需要的不仅仅是简单的执行权限。您可能ls
还包含了该文件的权限。