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

UID を使用してすべてのユーザーのプロセスを強制終了するにはどうすればよいですか

pkill -U UID を使用 または pkill -u UID または UID の代わりにユーザー名。時々 skill -u USERNAME 動作する可能性があります。別のツールは killall -u USERNAME です .

Skill は Linux 固有のもので、現在は古くなっています。pkill はより移植性があります (Linux、Solaris、BSD)。

pkill は、数値と記号の両方の UID を許可し、有効で実際の http://man7.org/linux/man-pages/man1/pkill.1.html

<ブロック引用>

pkill - ... 名前やその他の属性に基づいてプロセスにシグナルを送る

    -u, --euid euid,...
         Only match processes whose effective user ID is listed.
         Either the numerical or symbolical value may be used.
    -U, --uid uid,...
         Only match processes whose real user ID is listed.  Either the
         numerical or symbolical value may be used.

スキルの man ページには、ユーザー ID ではなくユーザー名の使用のみが許可されていると記載されています:http://man7.org/linux/man-pages/man1/skill.1.html

<ブロック引用>

スキル、スナイス... これらのツールは時代遅れで移植性がありません。コマンド構文の定義が不十分です。 killall、pkill の使用を検討してください

  -u, --user user
         The next expression is a username.

killall は Linux では古いものとしてマークされていませんが、数字の UID では機能しません。ユーザー名のみ:http://man7.org/linux/man-pages/man1/killall.1.html

<ブロック引用>

killall - プロセスを名前で強制終了

   -u, --user
         Kill only processes the specified user owns.  Command names
         are optional.

Linux/Solaris スタイルの /proc (procfs) でプロセスを見つけるために使用されるユーティリティは、プロセスの完全なリストを使用すると思います (/proc のいくつかの readdir を実行します)。 )。 /proc 以上繰り返すと思います デジタル サブフォルダーを検索し、見つかったすべてのプロセスが一致するかどうかを確認します。

ユーザーのリストを取得するには、getpwent を使用します (呼び出しごとに 1 人のユーザーを取得します)。

skill (procps &procps-ng) および killall (psmisc) ツールは両方とも getpwnam を使用します -u の引数を解析するためのライブラリ呼び出し オプションであり、ユーザー名のみが解析されます。 pkill (procps &procps-ng) atol と getpwnam の両方を使用して -u を解析します /-U 引数であり、数値とテキストの両方のユーザー指定子を許可します。


kill のいずれかにプロセス ID 引数として -1 を渡すと、 shell コマンドまたは kill C関数の場合、信号は到達できるすべてのプロセスに送信されます。これは、実際には kill を実行しているユーザーのすべてのプロセスを意味します コマンドまたはシステムコール。

su -c 'kill -TERM -1' bob

C の場合 (エラー チェックは省略):

if (fork() == 0) {
    setuid(uid);
    signal(SIGTERM, SIG_DFL);
    kill(-1, SIGTERM);
}

UNIX / Linux ディストリビューションで pkill 機能を使用できない場合は、root ユーザーとして次のコマンドを実行できます:

ps -ef | grep username | grep -v grep | awk '{print $2}' | xargs kill

username は、削除したいプロセスのユーザーです


Linux
  1. Centos7で`user`が所有するすべてのプロセスを強制終了する方法は??

  2. Lsを使用してアクセス許可でファイルを並べ替える方法は?

  3. SSH経由で特定のユーザーのすべてのプロセスを強制終了します

  1. アプリケーションに関連するすべてのプロセスを強制終了します

  2. uidからユーザー名を取得する方法

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

  1. Ansibleを使用してLinuxユーザーを作成する方法

  2. Linuxで実行中のプロセスを強制終了する方法

  3. 停止したすべてのジョブを強制終了するにはどうすればよいですか?