Bash

為什麼腳本以使用者身份執行而不是以 cron 身份執行?

  • February 24, 2015

我有一個腳本檢查埠 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

Cron 不會以使用者擁有的公共環境變數開始,包括 $PATH。

您的 cron 中有完整路徑,這很好,但您還需要將其添加到您的腳本中。

which lsof

which seoserver

會給你完整的路徑。修改您的腳本以使用它而不是lsofand seoserver

引用自:https://unix.stackexchange.com/questions/186650