X分より古い名前付きプロセスを終了しますか? (killall -o を除く)

X分より古い名前付きプロセスを終了しますか? (killall -o を除く)

さて、最初の投稿!そのため、特定のプロセス名で5分以上経過したプロセスを確認する必要があります。問題は、システムがCentOS 4のカスタムビルドであるため、pmisc 21.4があり、killallが22.9まで-o / - -older-thanを統合していないことです。システムをアップグレードするオプションがないので、そう提案しないでください。これは外部からアクセスできない内部システムなので、潜在的なセキュリティ問題はこの顧客にとって大きな問題ではありません。

エンジニアはこのプロセスが時折中断される理由を特定するためにソリューションを研究していますが、その間にスクリプトをクローンしてプロセスを確認し、5分以上実行している場合は終了します。なぜなら、一般的に30~45秒しかかからないからです。完了します。

ps出力、いくつかのegrep、およびregex構文を使用してこれを行うことができると確信していますが、それらをすべて統合する方法がわかりません。

このプロセスを「同期化」といいます。誰かが私に次の提案コードを与えましたが、うまくいかないようです。

#!/bin/bash

for i in $(pgrep -f synch)
do
TIME=$(ps --no-headers -o etime $i | cut -d":" -f 2)
if [ "$TIME" -gt 4 ] ; then
kill $i
fi
done

ベストアンサー1

-o etimes人間に優しい表現ではなく、秒単位で時間を表現してみてください。その後、削除してcut時間が300秒以上であることを確認できます。

#!/bin/bash

for i in $(pgrep -f synch)
do
    TIME=$(ps --no-headers -o etimes $i)
    if [ "$TIME" -ge 300 ] ; then
        kill $i
    fi
done

おすすめ記事