为什么脚本以用户身份运行而不是以 cron 身份运行?

为什么脚本以用户身份运行而不是以 cron 身份运行?

我有一个脚本,用于检查端口 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

会给你完整的路径。修改您的脚本以使用它而不是lsofseoserver

相关内容