スクリプトが実行されていることを確認してください。

スクリプトが実行されていることを確認してください。

test.shジョブは5分ごとに実行されるようにスケジュールされており、別のジョブtest1.shは午後12時30分@ 12.30に実行するようにスケジュールされています。両方のジョブが実行され、デッドロックに陥ります。したがって、私が使用しているtest.shジョブが実行されていることを確認する必要があります。

ps -ef | grep test1.sh

しかし、これは同じコマンドに対して1行を生成するので、常に正しいようです。

  # ps -ef | grep test1.sh
team 24896   607  0 11:55 pts/11   00:00:00 test1.sh
team 24925   523  0 11:55 pts/4    00:00:00 grep test1.sh

grep印刷を避ける方法はtest1.sh

私はUnixに初めて触れました。

ありがとう、アン

答え1

ps出力をパイプするのではなく実行中であることを確認するには、をgrep使用しますpgrep。これはプロセスのPIDのみを出力するので、はるかに効率的です。-xtest1.shとフルネームが一致するようにフラグを使用しています。

pgrep -x test1.sh
876

コマンド名を表示するには、この-lフラグを使用することもできます。

pgrep -xl test1.sh
876 test1.sh

部分一致が必要な場合は削除できます。-x

pgrep -l test
876 test1.sh
877 test2.sh
888 test123.sh
8745 test.bin

答え2

1つずつ従うとgrepを無視できます。

ps -ef | grep test1.sh | grep -v grep

その他:-

ps -ef | grep "[t]est1.sh"

二つ目は下を見下ろして多くの時間を節約します。

答え3

grepこれは、プロセスpsが並列で始まり、ターゲットgrep文字列が引数として表示されるtest1.shため、プロセスが一致するために発生しますps。この問題を解決する簡単ですが、おそらく最適ではない方法は次のとおりです。

ps -ef | grep "test1.sh" | grep -v "grep"

2番目のパイプは最初のパイプの出力を取得し、文字列 "grep"に一致する行を除外します。

関連情報