GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana agar hanya pengguna, pid dan perintah yang dijalankan untuk proses tertentu? (Ubuntu 11.10)

Saya rasa Anda sedang mencari argumen -o:

-o format:

format.format yang ditentukan pengguna adalah argumen tunggal dalam bentuk daftar yang dipisahkan kosong atau dipisahkan koma, yang menawarkan untuk menentukan kolom keluaran individual. Kata kunci yang dikenali dijelaskan di bagian STANDARDFORMAT SPESIFIERS di bawah ini. Header dapat diganti namanya(ps -o pid,ruser=RealUser -o comm=Command) sesuai keinginan. Jika semua header kolom kosong (ps -o pid=-o comm=)maka baris header tidak akan ditampilkan. Lebar kolom akan bertambah sesuai kebutuhan untuk header lebar; ini dapat digunakan untuk memperluas kolom seperti WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Kontrol lebar eksplisit (ps opid,wchan:42,cmd) juga ditawarkan. Perilaku ps -o pid=X,comm=Y bervariasi dengan kepribadian; output mungkin satu kolom bernama "X, comm=Y" atau dua kolom bernama "X" dan "Y". Gunakan multiple -ooptions jika ragu. Gunakan variabel lingkungan PS_FORMAT untuk menentukan default seperti yang diinginkan; DefSysV dan DefBSD adalah makro yang dapat digunakan untuk memilih kolom default UNIX atau BSD.

Jadi perintah yang Anda inginkan adalah (Ubuntu):

ps -o uid,pid,cmd -ef|grep python

di bawah OpenSolaris perintahnya adalah:

ps -o ruser,pid,comm -ef|grep python

Yang paling sederhana mungkin adalah:

$ ps o uid=,pid=,cmd= -C python
1000 26126 python

Dengan begitu Anda mendapatkan semuanya langsung dari ps dan tidak perlu menguraikan apa pun.

Dari ps halaman manual:

-o format

Format yang ditentukan pengguna. format adalah argumen tunggal dalam bentuk daftar yang dipisahkan kosong atau dipisahkan koma, yang menawarkan cara untuk menentukan kolom keluaran individual. [...] Header dapat diganti namanya (ps -o pid,ruser=RealUser -o comm=Command) sesuai keinginan. Jika semua header kolom kosong (ps -o pid=-o comm=) maka baris header tidak akan ditampilkan.

-C cmdlist
     Select by command name.  This selects the processes whose executable 
     name is given in cmdlist.

-C opsi akan berfungsi jika Anda menjalankan python secara interaktif, bukan jika python menjalankan skrip. Dalam hal ini Anda harus menggunakan -C scriptname.py sebagai gantinya.


ps -eo user,pid,cmd | grep [p]ython

Contoh:

$ ps -eo user,pid,cmd | grep [p]ython
root      1056 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1735 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
user     16613 /usr/bin/python3 /usr/share/system-config-printer/applet.py

Penjelasan:

  • -e semua proses
  • -o format yang ditentukan pengguna
  • user,pid,cmd Tampilkan pengguna, ID proses, kolom perintah

Catatan: jika Anda menggunakan -f dengan -o seperti yang disarankan orang lain, Anda mungkin mendapatkan kesalahan. Hal ini karena kedua parameter ini mengontrol format keluaran, dan hanya salah satunya yang harus digunakan:

$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined  -f full
-j,j job control   s  signal

Linux
  1. Cara menjalankan perintah "find" hanya pada direktori saat ini dan bukan pada sub-direktori

  2. Bagaimana cara menjalankan server web Golang saya di latar belakang?

  3. Bagaimana cara agar sistem Ubuntu mem-boot dan menjalankan sepenuhnya dalam RAM?

  1. CentOS / RHEL :Bagaimana menemukan pengguna mana yang menjalankan perintah tertentu?

  2. Bagaimana cara mendapatkan pid dari suatu proses dan mengaktifkan kill -9 di skrip Shell?

  3. Bagaimana cara menggunakan nohup untuk terus menjalankan perintah setelah pengguna logout?

  1. Cara menonaktifkan perintah khusus untuk pengguna tertentu di Linux

  2. Bagaimana cara menemukan ID proses di Ubuntu?

  3. Bagaimana cara mendapatkan argumen baris perintah diteruskan ke proses yang sedang berjalan pada sistem unix/linux?