VMを含むすべてのユーザープロセスを停止できるLinuxユーティリティはありますか?

VMを含むすべてのユーザープロセスを停止できるLinuxユーティリティはありますか?

私はシステムV killコマンドkillall5について知っています。

すべてのユーザープロセス(ホストOSとゲストOSの両方)にSIGSTOPを送信するための同様の機能はありますか?

たぶんkillall-SIGSTOPでしょうか?

答え1

もしあなたなら本当にこれをしたい、次はルートによって実行され、STOP信号は次に送信されます。すべて:

kill -STOP -1

ただし、これを行うとシステムが深刻に損傷する可能性があります。しないでください。

-1プロセスIDで指定されています(kill()SUSv4のCライブラリ仕様から):

pidが-1の場合、プロセスはシグナルを送信する権限を持つすべてのプロセス(指定されていないシステムプロセスセットを除く)にsigを送信する必要があります。

ユーザーが実行すると、そのユーザーが所有するすべてのプロセスに対して同じ操作が実行されます。現在のシェルを含みます。。だからそれもしないでください。

代わりに、特定のユーザーのすべてのプロセスを停止します。存在するこのユーザー(つまり、あなたはrootです):

pkill -STOP -u otheruser 

sudoログインした状態でこれを実行すると、otheruserまだ問題が発生するため、それもしないでください。

STOPユーザーに送信されたすべてのプロセスを表示できる唯一の理由は、そのユーザーが非常に限られた数のジョブを実行しているデーモンユーザーであることです。

CONT後で投稿するときに注意してください...

答え2

pkill(pgrepを参照)は、もともとSolaris 7オペレーティングシステムで使用するために作成されたコマンドラインユーティリティです。その後、Linuxと一部のBSDに再実装されました。

kill および killall コマンドと同様に、pkill はプロセスにシグナルを送信するために使用されます。 pkillコマンドを使用すると、拡張正規表現パターンやその他の一致条件を使用できます。

特定のユーザーのすべてのプロセスにシグナルを送信するには、次のようにします。

pkill -signal <signalname> -u <userid>    //(by default it will send SIGTERM)

pgrepを実行する前にテストして、シグナルをエクスポートするプロセス名とpidを確認できます。

pgrep  -u  <userid> -l 

kill -lpkillでは、すべての信号(参考資料を参照)を使用できます。バラよりman pkill


マニュアルページの情報
pgrepは、現在実行中のプロセスを検索し、標準出力の選択基準に一致するプロセスIDを一覧表示します。すべての基準が一致する必要があります。
たとえば、pgrep -u root sshd

名前がsshdで、ルートが所有するプロセスのみが一覧表示されます。一方、

pgrep -u

root,daemon

ルートまたはデーモンが所有するプロセスが一覧表示されます。

pkillはstdoutにリストするのではなく、指定された信号(デフォルトではSIGTERM)を各プロセスに送信します。

オプション

-d delimiter 出力で各プロセスIDを区切るために使用される文字列を設定します(デフォルトは改行)。 (pgrepのみ)
-f このパターンは通常、プロセス名のみと一致します。 -fを設定すると、コマンドライン全体が使用されます。
-g pgrp,... リストされたプロセスグループIDのプロセスのみが一致します。プロセスグループ0は、pgrepまたはpkillの独自のプロセスグループに変換されます。
-G gid,... リストされている実際のグループIDを持つプロセスのみが一致します。数値または記号の値を使用できます。
-l プロセス名とプロセスIDをリストします。 (pgrepのみ)
-n 最新の(最も最近開始された)一致プロセスのみを選択します。
-o 最も古い(最も最近開始された)一致プロセスのみが選択されます。 -P ppid,... 親プロセスIDがリストされているプロセスのみが一致します。
-s sid,... プロセスセッションIDがリストされているプロセスのみが一致します。セッションID 0は、pgrepまたはpkillの独自のセッションIDに変換されます。
-t term,... 制御端末がリストされているプロセスのみが一致します。指定された端末名には「/dev/」プレフィックスを含めないでください。
-u euid,... リストされた有効なユーザーIDを持つプロセスのみが一致します。数値または記号の値を使用できます。
-U uid,... 実際のユーザーIDをリストしたプロセスのみが一致します。数値または記号の値を使用できます。
-v 否定的な一致。
-x 名前(または-fが指定されている場合はコマンドライン)がパターンと正確に一致するプロセスのみが一致します。
-signal 一致する各プロセスに送信される信号を定義します。数字または記号信号名を使用できます。 (pkillのみ)。

答え3

KillはPIDパラメータに特別な値を受け入れます。これは、「このプロセスがこのシグナルを送信する権限を持つすべてのプロセス(指定されていないシステムプロセスセットを除く)」を意味します-1killall5停止信号番号:

kill -SIGSTOP -1

関連情報