スクリプトがcronの代わりにユーザーとして実行されるのはなぜですか?

スクリプトがcronの代わりにユーザーとして実行されるのはなぜですか?

ポート4000が開いていてリッスンしていることを確認し、trueを返すと、ログファイルも出力するサービスを開始するスクリプトがあります。ユーザーとして実行するとスクリプトは正しく実行されますが、cronとして追加すると実行されません。私はrootとしてログインし、スクリプトはrootが所有しており、スクリプトには実行権限があり、rootcrontab -eとして実行しています。

#!/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

これは私のクローンです。

*/5     *       *       *       *       /usr/bin/seoStart

ベストアンサー1

Cronは、ユーザーが所有するパブリック環境変数($ PATHを含む)で始まりません。

cronにフルパスがあることをお勧めしますが、それをスクリプトに追加する必要があります。

which lsof

そして

which seoserver

完全な道を教えてくれます。lsof代わりにスクリプトを使用してスクリプトを変更してくださいseoserver

おすすめ記事