GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mematikan semua proses pengguna menggunakan UID mereka

Gunakan pkill -U UID atau pkill -u UID atau nama pengguna, bukan UID. Terkadang skill -u USERNAME mungkin berfungsi, alat lain adalah killall -u USERNAME .

Skill adalah khusus linux dan sekarang sudah usang, dan pkill lebih portabel (Linux, Solaris, BSD).

pkill mengizinkan UID numerik dan simbolik, efektif dan nyata http://man7.org/linux/man-pages/man1/pkill.1.html

pkill - ... proses sinyal berdasarkan nama dan atribut lainnya

    -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.

Halaman manual keterampilan mengatakan apakah diperbolehkan hanya menggunakan nama pengguna, bukan id pengguna:http://man7.org/linux/man-pages/man1/skill.1.html

skill, snice ... Alat-alat ini sudah usang dan tidak dapat dibawa-bawa. Sintaks perintah tidak didefinisikan dengan baik. Pertimbangkan untuk menggunakan killall, pkill

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

killall tidak ditandai sebagai kedaluwarsa di Linux, tetapi juga tidak akan berfungsi dengan nomor UID; hanya nama pengguna:http://man7.org/linux/man-pages/man1/killall.1.html

killall - bunuh proses dengan nama

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

Saya pikir, utilitas apa pun yang digunakan untuk menemukan proses dalam gaya Linux/Solaris /proc (procfs) akan menggunakan daftar lengkap proses (melakukan beberapa readdir dari /proc ). Saya pikir, mereka akan mengulangi /proc subfolder digital dan periksa kecocokan setiap proses yang ditemukan.

Untuk mendapatkan daftar pengguna, gunakan getpwent (itu akan mendapatkan satu pengguna per panggilan).

skill (procps &procps-ng) dan killall (psmisc) tools keduanya menggunakan getpwnam panggilan perpustakaan untuk mengurai argumen -u opsi, dan hanya nama pengguna yang akan diuraikan. pkill (procps &procps-ng) menggunakan atol dan getpwnam untuk mengurai -u /-U argumen dan izinkan penentu pengguna numerik dan tekstual.


Jika Anda meneruskan -1 sebagai argumen ID proses ke kill perintah shell atau kill C, kemudian sinyal dikirim ke semua proses yang dapat dijangkau, yang dalam praktiknya berarti semua proses pengguna menjalankan kill perintah atau syscall.

su -c 'kill -TERM -1' bob

Di C (pemeriksaan kesalahan dihilangkan):

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

Jika fungsi pkill tidak tersedia pada distribusi UNIX / Linux Anda, Anda dapat menjalankan perintah berikut sebagai pengguna root:

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

di mana nama pengguna adalah pengguna yang ingin Anda hapus


Linux
  1. Bagaimana Cara Membunuh Semua Proses yang Dimiliki Oleh `pengguna` Di Centos 7??

  2. Bagaimana Mengurutkan File Berdasarkan Izinnya Menggunakan Ls?

  3. Bagaimana cara mematikan proses di Linux menggunakan perintah?

  1. Bagaimana cara mematikan semua proses dengan nama parsial yang diberikan?

  2. Cara mematikan semua proses yang dikembalikan oleh pgrep

  3. Bagaimana cara mematikan semua layar?

  1. Cara mendapatkan nama pengguna dari uid

  2. Bagaimana cara mematikan proses yang lebih lama dari t?

  3. Bagaimana saya bisa membunuh semua pekerjaan yang dihentikan?