Bisakah output perintah ps Linux difilter oleh pengguna DAN perintah?


8

Saya membutuhkan pid untuk proses yang diberikan pemiliknya dan perintahnya. Saya dapat memfilter proses per pengguna dengan "ps -u xxx" dan perintahnya dengan "ps -C yyy", tetapi ketika saya mencoba "ps -u xxx -C yyy", mereka digabungkan menggunakan logika OR. Saya perlu DAN logika. Bagaimana saya bisa mencapai ini?

Jawaban:


11

Gunakan pgrep?

pgrep -U xxx yyy

hanya mengembalikan pid (atau pids, jika lebih dari satu proses cocok).



2

Anda menggunakan communtuk menemukan PID yang umum untuk kedua kondisi:

ps -u xxx | sort > /tmp/ps-uxxx
ps -C yyy | sort > /tmp/ps-Cyyy
comm -1 -2 /tmp/ps-uxxx /tmp/ps-Cyyy

Menggunakan bash, Anda dapat menggunakan subtitusi proses untuk menghindari kebutuhan file sementara:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)

Bekerja, terima kasih banyak. ... Tetapi apakah tidak ada cara yang lebih mudah (tanpa menggunakan pgrep, karena ini tidak tersedia dalam konteks saya)?
guettli

Apa yang tidak mudah tentang ini?
GargantuChet

Saya tahu apa yang commdilakukan. Tapi saya menggunakannya hanya setahun sekali. Ini tidak intuitif untuk saya. Saya kira semua orang yang menggunakannya setiap hari melihat ini berbeda. Ada alasan bagus mengapa pgrep ada. Sayangnya pgrep tidak tersedia dalam konteks saya .... Tapi itu terpecahkan sekarang. Akar masalahnya adalah (menurut sudut pandang saya), bahwa saya perlu mendukung sistem operasi yang sangat lama tanpa pgrep.
guettli
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.