GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada cara untuk memilih beberapa kondisi di `ps`?

ps menjengkelkan seperti itu. Untungnya, ada pgrep , yang memiliki opsi pemilihan serupa, tetapi mengharuskan semuanya cocok dan kemudian menampilkan pid yang cocok. Secara default menghasilkan satu per baris, tetapi dapat diminta untuk menggunakan pembatas yang berbeda sehingga akan bekerja dengan ps :

ps -f -p"$(pgrep -d, -u $USER -P 1)"

Sayangnya ps hanya dapat membatalkan pilihan, sepertinya tidak ada and operator atau kemampuan untuk menambahkan penyempurnaan.

Anda dapat meminta bantuan pgrep untuk mendapatkan daftar PID dan memasukkannya ke ps namun. Misalnya:

$ ps -f $(pgrep -P 1 -u saml)
UID        PID  PPID  C STIME TTY      STAT   TIME CMD
saml      1986     1  0 Jul25 ?        SLl    0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
saml      2003     1  0 Jul25 ?        S      0:00 dbus-launch --sh-syntax --exit-with-session
saml      2004     1  0 Jul25 ?        Ss     0:23 /bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
saml      2147     1  0 Jul25 ?        S      0:04 /usr/libexec/gconfd-2
saml      2156     1  0 Jul25 ?        Ssl    0:09 /usr/libexec/gnome-settings-daemon
saml      2162     1  0 Jul25 ?        S      0:00 /usr/libexec/gvfsd
saml      2178     1  0 Jul25 ?        Ssl    0:01 /usr/bin/pulseaudio --start --log-target=syslog
saml      2180     1  0 Jul25 ?        Ssl    0:04 /usr/libexec//gvfs-fuse-daemon /home/saml/.gvfs
saml      2191     1  0 Jul25 ?        S      0:12 syndaemon -i 0.5 -k
saml      2193     1  0 Jul25 ?        S      0:00 /usr/libexec/gvfs-gdu-volume-monitor

ps tidak memiliki filter yang sangat fleksibel. Jadikan itu menampilkan lebih dari yang Anda butuhkan, tentukan formatnya secara eksplisit, dan filter hasilnya. Awk akan sering bekerja dengan baik untuk tugas ini.

ps -o pid= -o ppid= -o user= -o comm= -o args= |
awk -v uid="$(id -un myuser)" '$2 == 1 && $3 == uid'

Tanda sama dengan setelah nama kolom menekan baris header. Jika Anda ingin melihat baris tajuk, buat filter mencetak baris pertama tidak berubah:

ps -o pid -o ppid -o user -o comm -o args |
awk -v uid="$(id -un myuser)" 'NR == 1 || ($2 == 1 && $3 == uid)'

Jika Anda ingin melakukan beberapa pemrosesan otomatis, Anda harus menghapus data menjadi PID saja.

ps -o pid= -o ppid= -o user= |
awk -v uid="$(id -un myuser)" '$2 == 1 && $3 == uid {print $1}'

Linux
  1. Dhcpd:Adakah Cara Untuk Memeriksa Status Kumpulan Dhcp?

  2. Apakah ada cara untuk 'uniq' dengan kolom?

  3. Apakah ada cara untuk memeriksa rpath saat ini di Linux?

  1. Apakah ada cara untuk mengonversi dari UTF8 ke ISO-8859-1?

  2. Apakah ada cara untuk me-restart badblock?

  3. Apakah ada cara untuk membatasi konsumsi CPU secara keseluruhan?

  1. Apakah ada cara untuk mendapatkan gcc untuk menghasilkan biner mentah?

  2. Apakah ada cara untuk memotong file NETCDF?

  3. Apakah ada cara untuk mendengarkan proses?