GNU/Linux >> Linux の 問題 >  >> Linux

t よりも古いプロセスを強制終了するにはどうすればよいですか?

解決策 1:

GNU Killall は、プロセス名を使用して、特定の経過時間よりも古いプロセスを強制終了できます。

if [[ "$(uname)" = "Linux" ]];then killall --older-than 1h page.py;fi

解決策 2:

クリストファーの答えのおかげで、私はそれを次のように適応させることができました:

find /proc -maxdepth 1 -user apache -type d -mmin +60 -exec basename {} \; \
| xargs ps | grep page.py | awk '{ print $1 }' | sudo xargs kill

-mmin 見落としていた検索コマンドでした。

解決策 3:

find は常に機能するとは限りません。すべてのシステムで etimes が利用できるわけではありません。これは私の正規表現 newb ステータスによるものかもしれませんが、これ以上のものは必要ないと思います:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • すべてのプロセスを一覧表示し、列 PID、ELAPSED(etimes =秒)、COMMAND、USER、TT を提供します (thanks @ahoffman)
  • awk を使用して、4 列目 ($4、USER) にテキスト「builder」が含まれ、5 列目 ($5、TT) にテキスト 'pts' が含まれ、ELAPSED 列の値が 600 秒よりも大きい PID を出力します (thanks @アムト)

その後、それを kill にパイプするか、必要に応じてパイプすることができます。

解決策 4:

# get elapsed time in seconds, filter our only those who >= 3600 sec
ps axh -O etimes  | awk '{if ($2 >= 3600) print $2}'

必要に応じて ps をフィードできます 検索する PID のリストを含む、e.例:

ps h -O etimes 1 2 3

解決策 5:

これらの以前の回答の一部をニーズに合わせて変更できると思います。つまり:

for FILE in (find . -maxdepth 1 -user processuser -type d -mmin +60)
  do kill -9 $(basename $FILE) # I can never get basename to work with find's exec.  Let me know if you know how!
done

または

ps -eo pid,etime,comm | awk '$2!~/^..:..$/ && $3~/page\.py/ { print $1}' | kill -9

2番目があなたのニーズに最も合っていると思います。 find バージョンは、そのユーザーによって他のプロセスを無効にすることになります


--クリストファー・カレル


Linux

メモリ使用量で上位の実行中のプロセスを見つける方法

  1. Korembi 2 –Linux用の完璧なデスクトップおよび壁紙マネージャー

  2. グロブのBashでの設定、*がドットファイルと一致するかどうかを制御するには?

  3. 異なるサイズのドライブを使用した ZFS 初心者セットアップ

実用的な例を使用したBashForLoop

  1. Linux – `hostname`のデフォルトファイルは何ですか?

  2. AWS EC2 で負荷分散された WordPress ウェブサイトをセットアップする – パート 2

  3. cpio コマンド – アーカイブとの間でファイルをコピー、一覧表示、および抽出します

Ubuntu で Vim エディターを使用してファイルをパスワード保護する方法

  1. OS に応じて同じマシンに異なる静的 IP アドレスを割り当てる方法は?

  2. 8 つの重要な Vim エディターのナビゲーションの基礎

  3. Linuxシステムをデフラグする方法