我有一个脚本,用于检查端口 4000 是否打开并正在侦听,如果返回 true,则启动一个也输出日志文件的服务。如果我以用户身份执行该脚本,则该脚本运行良好,但如果我将其添加为 cron,则它不会运行。我以root身份登录,该脚本由root拥有,该脚本具有可执行权限,并且我crontab -e
以root身份运行。
#!/bin/bash
if lsof -Pi :4000 -sTCP:LISTEN -t >/dev/null ; then
return 1
else
seoserver -p 4000 start > /var/www/vhosts/domain.com/httpdocs/seoserver.log &
fi
这是我的 cron
*/5 * * * * /usr/bin/seoStart
答案1
Cron 不会以用户拥有的公共环境变量(包括 $PATH)启动。
您的 cron 中有完整路径,这很好,但您还需要将其添加到脚本中。
which lsof
和
which seoserver
会给你完整的路径。修改您的脚本以使用它而不是lsof
和seoserver
。