crontabは5分ごとに複数のJavaプロセスを起動しますか?

crontabは5分ごとに複数のJavaプロセスを起動しますか?

私はJava実行可能なjarを持っていて、それが実行されていないか、何らかの理由で終了したらそれを実行する必要があるので、このためにcrontabを使用することにしました。

「poppetapp」ユーザーとしてcrontabを実行する必要があるため、そのユーザーとしてログインし、次のcrontabを作成しました。

*/5 * * * * pgrep -f test_java_10.jar || cd /home/poppetapp && /home/poppetapp/test_java.sh > /home/poppetapp/test_java.out

私のシェルスクリプトは次のとおりです。場所は/home/poppetapp/-

#!/bin/sh
/usr/home/java -jar /home/poppetapp/test_java_10.jar

私のJava実行可能jarは "poppetapp"ユーザーのホームポジションにあります/home/poppetapp/

だから私の質問は - これは正しいと思いますか?test_java_10.jar実行されていないか、何らかの理由で終了した場合にのみ起動するだけで、実行中であることを確認するために5分ごとに実行されるcrontabを作成しました。実行していない場合は、シェルスクリプトを実行してプロセスを開始してくださいtest_java_10.jar

しかし、どういうわけかcrontabを変更すると、多くのtest_java_10.jarプロセスが呼び出されることがわかります。 5分ごとにこれに対する別のプロセスが始まるようです。

直す:-

crontabをこのように修正すると -

*/5 * * * * pgrep -f test_java_10.jar || /home/poppetapp/test_java.sh > /home/poppetapp/test_java.out

その後、次のメールを見ましたが、問題が何であるか説明していないか、説明がありますか?

& t 35
Message 35:
From poppetapp@machineA  Tue Mar 24 17:05:01 2015
X-Original-To: poppetapp
From: root@machineA (Cron Daemon)
To: poppetapp@machineA
Subject: Cron <poppetapp@machineA> pgrep -f test_java_10.jar || /home/poppetapp/test_java.sh > /home/poppetapp/test_java.out
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/poppetapp>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=poppetapp>
Date: Tue, 24 Mar 2015 17:05:01 -0700 (GMT+7)

ベストアンサー1

私の考えではグループ化の問題ではないかと思います。お使いの携帯電話をpgrep簡単または次に置き換えました。truefalse

  • プロセスが実行されていない場合はpgrep失敗します。

    $ false || echo cd && echo run
    cd
    run
    
  • プロセスが実行されている場合はpgrep成功します。

    $ true || echo cd && echo run
    run
    

    この場合、何も実行したくありません!実行時にtrue || (echo cd && echo run)何も表示しないことが私たちが望むものです。

私はそれを試してみることをお勧めしますpgrep -f test_java_10.jar || (cd /home/poppetapp && /home/poppetapp/test_java.sh > /home/poppetapp/test_java.out)

おすすめ記事