Perintah pgrep Linux: cari PID berdasarkan nama dan pengguna
Perintah pgrep mencari process ID (PID), yaitu nomor identitas proses, berdasarkan nama atau kriteria seperti pengguna. Gunakan pgrep untuk menemukan target yang ingin diperiksa; pgrep sendiri tidak menghentikan proses. Secara bawaan, pola dicocokkan dengan nama proses, bukan seluruh baris perintah.
Gunakan -x untuk meminta kecocokan seluruh nama, -f untuk mencari pada seluruh baris perintah, dan -a untuk menampilkan baris perintah bersama PID. Ketiga opsi itu mengatur hal yang berbeda: batas kecocokan, bagian yang diperiksa, dan bentuk keluaran.
Sintaks dan arti pola
pgrep [OPSI] POLA
OPSI dan POLA adalah penanda yang diganti dengan pilihan serta pola pencarian. Penjelasan berikut mengacu pada pgrep dari procps-ng. Periksa pgrep --version, pgrep --help, dan man pgrep pada sistem tujuan karena opsi dapat berbeda menurut implementasi.
Pola memakai extended regular expression (ERE), yaitu ekspresi reguler yang dapat menyatakan bentuk teks, bukan hanya kata yang dicari. Misalnya, python3 dapat cocok dengan bagian nama python3.12. Opsi -x meminta seluruh teks yang diperiksa cocok, tetapi tidak mengubah ekspresi reguler menjadi teks literal.
Karakter seperti titik mempunyai arti khusus dalam pola. Beri tanda kutip pada pola yang memakai simbol agar shell tidak menafsirkannya lebih dahulu. Tanda kutip melindungi pola dari shell, bukan menonaktifkan makna ekspresi reguler. Aturannya dijelaskan dalam manual ekspresi reguler Linux.
Temukan PID dan tampilkan perintahnya
Cari berdasarkan nama
pgrep sshd
Contoh ini mencari nama yang cocok dengan sshd, program layanan Secure Shell (SSH). PID yang cocok ditampilkan satu per baris. Jumlah hasil bergantung pada proses yang ada; nama tersebut tidak harus tersedia pada setiap komputer, dan pola tanpa -x tidak membatasi kecocokan ke seluruh nama.
Lihat PID dan seluruh baris perintah
pgrep -a sshd
-a menambahkan baris perintah pada keluaran sehingga Anda dapat memeriksa pekerjaan yang ditemukan. Opsi itu tidak mengubah bidang pencarian menjadi seluruh argumen; untuk mengubah bidang pencarian, gunakan -f. Jangan menganggap -a dan -f saling menggantikan.
Gabungkan pengguna dan nama yang cocok penuh
pgrep -u alice -x python3
Alice adalah akun contoh yang perlu diganti dengan pengguna pada sistem Anda. Perintah ini menggabungkan pengguna dan pola nama: proses harus mempunyai identitas pengguna efektif yang sesuai dan namanya cocok penuh dengan python3. Dengan demikian, proses bernama sama milik pengguna lain tidak ikut dipilih.
Effective user ID (EUID) adalah identitas pengguna efektif proses. Opsi -u memilih berdasarkan EUID; huruf besar -U memakai identitas pengguna nyata atau real user ID. Jadi -u bukan sekadar pemeriksaan bahwa suatu nama pengguna valid.
Baca satu baris hasil dengan benar
pgrep -a sshd
Berikut contoh ilustratif pada sistem yang mempunyai proses sshd tersebut; nomor PID dan argumen pada komputer Anda dapat berbeda:
1234 /usr/sbin/sshd -D
1234 adalah PID contoh, sedangkan /usr/sbin/sshd -D adalah baris perintah yang ditampilkan. Satu PID dapat membantu Anda menemukan target untuk pemeriksaan berikutnya, tetapi hasil itu bukan bukti bahwa layanan menerima koneksi dengan benar.
Jika tidak ada baris, periksa kondisi dan status keluar. Proses mungkin tidak cocok, telah berakhir, atau tidak terlihat dari lingkungan pencarian. Jangan langsung memperluas pola ke semua argumen lalu meneruskan hasilnya ke perintah penghentian tanpa membaca kembali setiap target.
Opsi utama
| Opsi | Kegunaan |
|---|---|
-a |
Menampilkan PID beserta seluruh baris perintah. |
-x |
Meminta pola cocok dengan seluruh nama; bersama -f, dengan seluruh baris perintah. |
-f |
Mencari pada seluruh baris perintah, bukan hanya nama proses. |
-u PENGGUNA |
Membatasi pencarian menurut identitas pengguna efektif. |
-n-o |
Memilih kecocokan yang paling baru dimulai atau paling lama dimulai. |
PENGGUNA adalah penanda nama atau nomor pengguna. -n dan -o mengacu pada waktu proses dimulai, bukan memilih PID terbesar atau terkecil. Jangan menganggap proses yang paling baru selalu merupakan target yang benar hanya karena beberapa baris cocok.
Makna opsi, status keluar, dan batas nama dijelaskan dalam manual pgrep dari procps-ng. Sumber manual pada proyek procps-ng juga tersedia untuk memeriksa rincian implementasi.
Bedakan tidak cocok dari kesalahan perintah
Periksa status segera setelah pgrep, misalnya dengan printf '%s\n' "$?". Pada procps-ng, status 0 berarti ada kecocokan, 1 tidak ada kecocokan, 2 kesalahan sintaks perintah, dan 3 kesalahan fatal. Status 1 berbeda dari kesalahan penulisan opsi atau pola.
Hasil kosong bukan diagnosis lengkap kesehatan layanan. Periksa waktu pengamatan, ejaan pola, perbedaan nama dan baris perintah, pengguna efektif, serta cakupan proses yang terlihat. Proses yang berhenti tepat setelah pencarian juga tidak akan tetap tersedia untuk langkah berikutnya.
Periksa nama panjang dan hasil -f
Nama proses dapat berbeda dari perintah beserta argumennya. Manual procps-ng yang dirujuk mencatat batas 15 karakter untuk nama yang dipakai dalam pencocokan. Karena itu, saat nama panjang tidak cocok seperti yang diharapkan, baca batas implementasi terpasang dan pertimbangkan -f dengan pola yang lebih spesifik.
-f dapat cocok dengan teks pada argumen, termasuk pekerjaan lain yang kebetulan memuat teks tersebut. Baca keluaran -a untuk memastikan target. Tinjau lagi hasil dengan ps -p PID -o cmd=, dengan mengganti PID menggunakan nomor sebenarnya; panduan ps untuk PID dan kolom perintah menjelaskan pembacaannya.
Proses dapat berakhir dan PID dapat digunakan kembali, sehingga pemeriksaan ulang perlu dilakukan sebelum mengirim sinyal. Menemukan PID adalah langkah identifikasi, bukan instruksi untuk langsung menghentikannya.
FAQ
Apakah pgrep tanpa hasil selalu berarti perintahnya salah?
Tidak. Pada procps-ng, status 1 menunjukkan tidak ada kecocokan. Bedakan dari status 2 untuk kesalahan sintaks dan periksa kriteria serta waktu pengamatan sebelum menyimpulkan keadaan layanan.
Apakah pgrep -a mencari seluruh baris perintah?
-a mengatur keluaran agar menyertakan baris perintah. Untuk melakukan pencarian pada seluruh baris perintah, gunakan -f. Anda dapat menggabungkannya saat memang perlu, sambil memeriksa agar hasil tidak terlalu luas.




