2

特定の時間に開始する必要があり、数時間後に強制終了する必要があるさまざまなプロセス (主にシェル スクリプト) がたくさんあります。現在、cron 経由でそれらを開始し、別の cron ジョブを使用してプロセス ID を取得し、それらを強制終了しています。特に同じスクリプトの複数のコピーが実行されている場合は、最もクリーンな方法ではありません。

プロセスを開始し(サブシェルで?またはフォークで?)、特定の時間にそれを強制終了するラッパーが利用できるかどうか疑問に思っていました。グーグルで調べてもあまり成果が得られなかったので、自分の記事を書く前に、すべてを知っているスタックオーバーフロー コミュニティに確認したいと思いました。

ありがとう!

4

2 に答える 2

0

Monitは、プロセスを制御/監視するためのラッパーとして使用する優れたツールです。

あなたの状況は、プロセスの稼働時間に基づいてアクションを実行するサービス テスト機能に該当します。

 check process myapp with pidfile /var/run/myapp.pid
    start program = "/etc/init.d/myapp start"
    stop program = "/etc/init.d/myapp stop"
    if uptime == 3 hours then stop
于 2012-07-03T12:49:14.327 に答える
0

あなたがすでに持っているのは正しい解決策です。cron で開始し、cron で終了します。同じスクリプトの複数のインスタンスの問題について、これが必要ですか。あなたの要件では、同じスクリプトの複数のインスタンスを実行する必要がありますか?

プロセス ID を取得し、それらを強制終了します。スクリプトがそれらを停止するために使用するファイルに pid を記録するという意味ですか? または、ps/pidofを使用しますか?

于 2012-07-03T12:48:18.097 に答える