非対話型シェルでスクリプトを実行しますか?

非対話型シェルでスクリプトを実行しますか?

スクリプトを実行するクローンジョブがあります。対話型シェル(sshからbashまで)を介してスクリプトを実行すると、正常に動作します。スクリプトがcronを介して独自に実行されると失敗します。

私の考えでは、対話型シェルに設定されたいくつかの環境変数を使用しているようです。スクリプトの問題を解決して削除します。

変更したら、cronにスクリプトをキューに入れて正常に実行できることを知っていますが、コマンドラインでスクリプトを実行する方法はありますが、cronで実行されているかのように(非対話型環境で)実行するように指示できますか?

ベストアンサー1

cronでコマンドを実行することとコマンドラインでコマンドを実行することの主な違いは次のとおりです。

  • cronは他のシェル(通常/bin/sh)を使用できます。
  • cronは確かに小規模環境で実行されます(環境はcronの実装によって異なりますので、マニュアルページを確認してください。通常、cron(8)Maybe、Maybe、Maybe、および小規模環境のみ)。crontab(5)HOMESHELLLOGNAMEUSERPATH
  • cronは%この文字を特別に扱います(改行文字に変換)。
  • クローンジョブを実行するために端末やグラフィック環境は必要ありません。

次の呼び出しは、cronで呼び出されたようにシェルフラグメントを実行します。フラグメントに文字'またはが含まれていないとします%

env - HOME="$HOME" USER="$USER" PATH=/usr/bin:/bin /bin/sh -c 'shell snippet' </dev/null >job.log 2>&1

また、見ることができますcronでshスクリプトを実行する、トラブルシューティングに役立ちます。

おすすめ記事