Perintah pgrep: mencari PID berdasarkan nama, opsi -f, dan perbedaan pidof dan pkill
Untuk mencari nomor (PID) proses yang sedang berjalan berdasarkan nama, akun, atau baris perintahnya, gunakan perintah pgrep. Di server AlmaLinux 9, kami menyalin program sleep dengan nama lain, menjalankan tiga proses, lalu membandingkan proses yang ditemukan setiap opsi. Saat mencari berdasarkan nama, hanya tiga proses itu yang muncul, sedangkan saat mencari di seluruh baris perintah dengan -f, timeout yang menjalankannya juga ikut muncul.
Keluaran di bawah adalah hasil menjalankan perintah dengan akun root di server AlmaLinux 9.8 dan akun biasa di server Debian 12. Proses yang dicari adalah salinan sleep bernama pgdemo-a dan pgdemo-b yang dijalankan dengan timeout 300 agar berhenti sendiri setelah 5 menit. Nomor proses (PID) dan nama akun Debian (user1) diganti dengan nilai contoh, dan versi procps-ng di server AlmaLinux hanya ditulis sampai versi mayor dan minor.
1️⃣ Cara dasar menggunakan perintah pgrep
Jika Anda menulis sebagian nama setelah pgrep, perintah ini mencetak nomor proses yang namanya mengandung karakter itu, satu per baris. Pencarian pgdemo menghasilkan tiga nomor: dua pgdemo-a dan satu pgdemo-b.
pgrep pgdemo2143
2152
2155Saat nama ditulis sampai pgdemo-a, hanya dua pgdemo-a yang tersisa.
pgrep pgdemo-a2143
2152Teks yang dicari dibaca sebagai ekspresi reguler yang diperluas, dan tanpa opsi pgrep hanya mencari di nama proses.
Jika tidak ada proses yang cocok, pgrep selesai tanpa mencetak apa pun, jadi hasilnya diperiksa dengan kode keluar. Setelah mencari nama yang tidak ada, pgdemo-zz, menjalankan [echo $?] menghasilkan 1.
pgrep pgdemo-zzecho $?1Saat dijalankan tanpa kondisi apa pun, muncul galat di bawah bersama kode keluar 2. Halaman man menjelaskan kode keluar sebagai 0 (ditemukan), 1 (tidak ditemukan), 2 (galat sintaks baris perintah), dan 3 (galat fatal seperti kehabisan memori).
pgreppgrep: no matching criteria specified
Try `pgrep --help' for more information.echo $?2Jika kode keluar ini dipakai sebagai kondisi alih-alih keluarannya, skrip dapat memeriksa apakah suatu proses sedang berjalan. Versinya diperiksa dengan [pgrep -V]. Server Debian 12 memakai procps-ng 4.0.2, dan server AlmaLinux 9.8 memakai procps-ng 3.3.
pgrep -Vpgrep from procps-ng 4.0.22️⃣ Opsi pgrep -f dan keluaran -l, -a
Dari nomornya saja tidak terlihat proses apa itu, jadi cetak juga namanya dengan -l atau seluruh baris perintahnya dengan -a.
pgrep -l pgdemo2143 pgdemo-a
2152 pgdemo-a
2155 pgdemo-bpgrep -a pgdemo2143 ./pgdemo-a 300
2152 ./pgdemo-a 301
2155 ./pgdemo-b 300Angka 300 dan 301 di akhir keluaran -a adalah argumen dalam detik yang diberikan ke sleep. Dengan argumen ini kami membedakan dua pgdemo-a yang namanya sama.
Dengan -f, pgrep mencari di seluruh baris perintah, bukan di nama. Saat pgdemo-a dicari dengan -f, nomornya bertambah dari dua menjadi empat.
pgrep -f pgdemo-a2141
2143
2150
2152Setelah -a ikut ditambahkan, terlihat bahwa dua baris tambahan itu adalah timeout yang menerima pgdemo-a sebagai argumen. Namanya timeout, tetapi baris perintahnya mengandung pgdemo-a sehingga cocok dengan kondisi -f.
pgrep -af pgdemo-a2141 timeout 300 ./pgdemo-a 300
2143 ./pgdemo-a 300
2150 timeout 300 ./pgdemo-a 301
2152 ./pgdemo-a 301Saat memakai -f di dalam skrip, periksa apakah skrip itu sendiri ikut muncul di hasil. pgrep tidak pernah memasukkan dirinya sendiri ke hasil, tetapi jika baris perintah skrip yang menjalankan pgrep mengandung teks yang dicari, skrip itu juga muncul.
Saat pgdemo-a dicari dengan chk.sh, skrip yang meneruskan teks yang diterimanya apa adanya ke [pgrep -af], di baris terakhir bertambah skrip itu sendiri: bash chk.sh pgdemo-a.
bash chk.sh pgdemo-a2141 timeout 300 ./pgdemo-a 300
2143 ./pgdemo-a 300
2150 timeout 300 ./pgdemo-a 301
2152 ./pgdemo-a 301
2160 bash chk.sh pgdemo-aPola [p]gdemo-a, yang mengurung huruf pertama dalam kurung siku, sebagai ekspresi reguler mencari teks yang sama dengan pgdemo-a, tetapi di baris perintah skrip kurung sikunya tertulis apa adanya sehingga tidak lagi cocok. Saat pola ini diberikan ke skrip yang sama, baris skrip hilang dan hanya empat baris yang tersisa.
bash chk.sh '[p]gdemo-a'2141 timeout 300 ./pgdemo-a 300
2143 ./pgdemo-a 300
2150 timeout 300 ./pgdemo-a 301
2152 ./pgdemo-a 3013️⃣ Opsi kondisi pgrep
Dengan -x, pgrep hanya mencari proses yang seluruh namanya sama, bukan sebagian. Dengan pgdemo tidak ada yang muncul, dan dengan pgdemo-a muncul dua.
pgrep -x pgdemopgrep -lx pgdemo-a2143 pgdemo-a
2152 pgdemo-a-u memilih proses berdasarkan akun yang menjalankannya. Jika beberapa akun ditulis dengan pemisah koma, semua proses milik salah satu akun itu akan ditemukan. Ketiga proses yang dijalankan sebagai root muncul semua dengan [-u root], dan dengan [-u daemon] tidak ada satu pun.
pgrep -u root -l pgdemo2143 pgdemo-a
2152 pgdemo-a
2155 pgdemo-bpgrep -u daemon -l pgdemopgrep -u root,daemon -c pgdemo3Saat menulis akun yang tidak ada, muncul galat [invalid user name] bersama kode keluar 2.
pgrep -u no-such-user9 pgdemopgrep: invalid user name: no-such-user9Di akun biasa server Debian 12, kami juga menemukan satu sleep yang dijalankan dengan akun itu sendiri menggunakan opsi yang sama.
pgrep -u user1 -l sleep3047 sleeppgrep -u user1 -a sleep3047 sleep 60Jika ada beberapa proses dengan nama yang sama, -n hanya mencetak yang paling baru dijalankan dan -o hanya yang paling awal dijalankan. Dari dua pgdemo-a yang dijalankan berselang 2 detik, -n memilih yang belakangan dan -o yang lebih dulu.
pgrep -n pgdemo-a2152pgrep -o pgdemo-a2143Halaman man menyebutkan bahwa -n dan -o tidak dapat dipakai bersamaan. Saat keduanya ditulis, hanya petunjuk penggunaan yang muncul, tanpa pesan galat.
-c mencetak jumlah, bukan nomor. Jika tidak menemukan apa pun, perintah ini mencetak 0 dan kode keluarnya 1.
pgrep -c pgdemo3pgrep -c pgdemo-zz0Berikut ringkasan opsi pgrep.
| Opsi | Salin | Penjelasan |
|---|---|---|
| -f--full | Mencari di seluruh baris perintah, bukan di nama | |
| -l--list-name | Mencetak nama bersama nomor | |
| -a--list-full | Mencetak seluruh baris perintah bersama nomor | |
| -x--exact | Hanya mencari proses yang seluruh namanya sama | |
| -u--euid | Hanya proses yang dijalankan akun tertentu; jika beberapa ditulis dengan koma, salah satunya | |
| -n--newest | Yang paling baru dijalankan di antara yang cocok | |
| -o--oldest | Yang paling awal dijalankan di antara yang cocok | |
| -c--count | Mencetak jumlah, bukan nomor; kode keluar 1 jika 0 | |
| -d--delimiter | Menentukan pemisah antarnomor (baris baru secara bawaan) | |
| -V--version | Mencetak versi |
| Opsi | Salin | Penjelasan |
|---|---|---|
| -i--ignore-case | Mencari tanpa membedakan huruf besar dan kecil | |
| -v--inverse | Mencari proses yang tidak cocok | |
| -P--parent | Hanya proses anak dari nomor induk (PPID) tertentu | |
| -t--terminal | Hanya proses yang terhubung ke terminal tertentu | |
| -g--pgroup | Hanya proses dalam nomor grup proses tertentu | |
| -s--session | Hanya proses dalam nomor sesi tertentu | |
| -U--uid | Hanya proses dengan ID pengguna nyata yang sama | |
| -G--group | Hanya proses dengan ID grup nyata yang sama | |
| -w--lightweight | Mencetak semua nomor thread, bukan nomor proses |
🔲 Simulator perintah pgrep
Simulator di bawah dimulai dengan daftar enam baris pgdemo dan timeout ditambah proses contoh. Ketuk chip untuk membandingkan baris yang ditemukan setiap opsi di daftar sebelah kiri, lalu lihat dengan [pgrep -l pgdemo] bagaimana hasilnya berkurang setelah [pkill pgdemo-b].
4️⃣ Perbedaan pgrep, pidof, dan pkill
pidof hanya mencari proses yang seluruh nama programnya sama, tanpa ekspresi reguler, dan mencetak nomor dalam satu baris yang dipisahkan spasi. Saat pgdemo-a dicari, dua nomor muncul dalam satu baris, dan 2152 yang dijalankan belakangan ada di depan.
pidof pgdemo-a2152 2143Dengan sebagian nama pgdemo, berbeda dari pgrep, pidof tidak menemukan apa pun dan kode keluarnya 1. Jika hanya perlu satu nomor, tambahkan -s. [pidof -s pgdemo-a] hanya mencetak 2152.
pidof pgdemopidof -s pgdemo-a2152Untuk melihat waktu mulai dan nomor induk (PPID) dari nomor yang ditemukan, gabungkan nomor itu dengan koma menggunakan pgrep -d lalu berikan ke -p pada perintah ps.
pgrep -d, pgdemo2143,2152,2155ps -fp $(pgrep -d, -x pgdemo-a)UID PID PPID C STIME TTY TIME CMD
root 2143 2141 0 15:59 ? 00:00:00 ./pgdemo-a 300
root 2152 2150 0 15:59 ? 00:00:00 ./pgdemo-a 301Angka 2141 dan 2150 di kolom PPID adalah nomor timeout yang menjalankan kedua pgdemo-a.
pkill mencari proses dengan kondisi yang sama seperti pgrep, tetapi mengirim sinyal alih-alih mencetak nomornya. Jika sinyal tidak ditulis, pkill mengirim SIGTERM, dan sinyal dapat diganti seperti [pkill -HUP nama].
pkill langsung mengirim sinyal begitu menemukan proses, jadi periksa dulu targetnya dengan [pgrep -a] atau [pgrep -af] dengan kondisi yang sama. Jika mencari dengan -f, timeout atau skrip yang baris perintahnya mengandung teks yang sama juga menjadi target. Jika nomornya sudah diketahui, kirim sinyal hanya ke nomor itu dengan perintah kill.
| Perintah | Dasar pencarian | Output | Fungsi |
|---|---|---|---|
| pgrep | Sebagian nama (regex), dengan -f seluruh baris perintah | Nomor; nama dan baris perintah dengan -l, -a | Hanya mencari |
| pidof | Seluruh nama program | Nomor dalam satu baris | Hanya mencari |
| pkill | Kondisi sama dengan pgrep | Tidak ada | Sinyal ke proses yang ditemukan (bawaan SIGTERM) |
🔢 FAQ & Konten yang Direkomendasikan
Pemeriksaan real-time
Perintah top Linux (memeriksa pemakaian CPU dan memori)
Perintah untuk melihat secara real-time berapa banyak CPU dan memori yang dipakai setiap proses.
File yang terbuka
[Linux] Perintah lsof: menampilkan informasi file yang sedang dipakai
Perintah untuk melihat file yang dibuka suatu proses bersama PID-nya.
Kontrol job
Latar belakang (Back Ground) dan latar depan (Fore Ground) di Linux: mengendalikan proses
Cara kontrol job untuk mengirim perintah ke latar belakang lalu membawanya kembali ke latar depan.
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.