Yang Perlu Anda Ketahui Tentang Proses di Linux [Panduan Komprehensif]


Pada artikel ini, kita akan membahas pemahaman dasar tentang proses dan melihat secara singkat cara mengelola proses di Linux menggunakan perintah tertentu.

Proses mengacu pada program yang sedang dieksekusi; ini adalah contoh program yang sedang berjalan. Itu terdiri dari instruksi program, data yang dibaca dari file, program lain atau masukan dari pengguna sistem.

Jenis Proses

Pada dasarnya ada dua jenis proses di Linux:

  • Proses latar depan (juga disebut sebagai proses interaktif) – proses ini diinisialisasi dan dikontrol melalui sesi terminal. Dengan kata lain, harus ada pengguna yang terhubung ke sistem untuk memulai proses tersebut; mereka belum memulai secara otomatis sebagai bagian dari fungsi/layanan sistem.
  • Proses latar belakang (juga disebut sebagai proses non-interaktif/otomatis) – adalah proses yang tidak terhubung ke terminal; mereka tidak mengharapkan masukan pengguna apa pun.

Apa itu Daemon

Ini adalah jenis proses latar belakang khusus yang dimulai saat startup sistem dan terus berjalan selamanya sebagai layanan; mereka tidak mati. Mereka dimulai sebagai tugas sistem (dijalankan sebagai layanan), secara spontan. Namun, mereka dapat dikontrol oleh pengguna melalui proses init.

Pembuatan Proses di Linux

Proses baru biasanya dibuat ketika proses yang sudah ada membuat salinan persis dari dirinya di memori. Proses anak akan mempunyai lingkungan yang sama dengan induknya, namun hanya nomor ID prosesnya saja yang berbeda.

Ada dua cara konvensional yang digunakan untuk membuat proses baru di Linux:

  • Menggunakan Fungsi System() – metode ini relatif sederhana, namun tidak efisien dan memiliki risiko keamanan tertentu yang signifikan.
  • Menggunakan Fungsi fork() dan exec() – teknik ini sedikit lebih maju namun menawarkan fleksibilitas, kecepatan, dan keamanan yang lebih baik.

Bagaimana Linux Mengidentifikasi Proses?

Karena Linux adalah sistem multi-pengguna, artinya pengguna yang berbeda dapat menjalankan berbagai program di sistem, setiap program yang berjalan harus diidentifikasi secara unik oleh kernel.

Dan suatu program diidentifikasi berdasarkan ID prosesnya (PID) serta ID proses induknya (PPID), sehingga proses selanjutnya dapat dikategorikan menjadi:

  • Proses induk – ini adalah proses yang membuat proses lain selama run-time.
  • Proses turunan – proses ini dibuat oleh proses lain selama waktu proses.

Proses Init

Proses Init adalah induk (induk) dari semua proses pada sistem, ini adalah program pertama yang dijalankan ketika sistem Linux melakukan booting; ia mengelola semua proses lain pada sistem. Ini dimulai oleh kernel itu sendiri, jadi pada prinsipnya tidak memiliki proses induk.

Proses init selalu memiliki ID proses 1. Ini berfungsi sebagai orang tua angkat untuk semua proses yatim piatu.

Anda dapat menggunakan perintah pidof untuk menemukan ID suatu proses:

pidof systemd
pidof top
pidof httpd

Untuk menemukan ID proses dan ID proses induk dari shell saat ini, jalankan:

echo $$
echo $PPID

Memulai Proses di Linux

Setelah Anda menjalankan perintah atau program (misalnya cloudcmd – CloudCommander), itu akan memulai proses di sistem. Anda dapat memulai proses latar depan (interaktif) sebagai berikut, proses tersebut akan terhubung ke terminal dan pengguna dapat mengirimkan masukannya:

cloudcmd

Pekerjaan Latar Belakang Linux

Untuk memulai proses di latar belakang (non-interaktif), gunakan simbol &, di sini proses tidak membaca masukan dari pengguna sampai dipindahkan ke latar depan.

cloudcmd &
jobs

Anda juga dapat mengirim suatu proses ke latar belakang dengan menangguhkannya menggunakan [Ctrl + Z], ini akan mengirimkan sinyal SIGSTOP ke proses tersebut, sehingga menghentikan operasinya; itu menjadi menganggur:

tar -cf backup.tar /backups/*  #press Ctrl+Z
jobs

Untuk terus menjalankan perintah yang ditangguhkan di atas di latar belakang, gunakan perintah bg:

bg

Untuk mengirim proses latar belakang ke latar depan, gunakan perintah fg bersama dengan ID pekerjaan seperti ini:

jobs
fg %1

Anda mungkin juga menyukai: Cara Memulai Perintah Linux di Latar Belakang dan Melepaskan Proses di Terminal

Status Proses di Linux

Selama eksekusi, suatu proses berubah dari satu keadaan ke keadaan lain tergantung pada lingkungan/keadaannya. Di Linux, suatu proses memiliki kemungkinan status berikut:

  • Berjalan – di sini sedang berjalan (proses saat ini dalam sistem) atau siap dijalankan (menunggu untuk ditugaskan ke salah satu CPU).
  • Menunggu – dalam keadaan ini, suatu proses menunggu terjadinya peristiwa atau sumber daya sistem. Selain itu, kernel juga membedakan dua jenis proses menunggu; proses menunggu yang dapat diinterupsi – dapat diinterupsi oleh sinyal dan proses menunggu yang tidak dapat diputus – menunggu secara langsung pada kondisi perangkat keras dan tidak dapat diinterupsi oleh kejadian/sinyal apa pun.
  • Berhenti – dalam keadaan ini, suatu proses telah dihentikan, biasanya dengan menerima sinyal. Misalnya, suatu proses yang sedang di-debug.
  • Zombie – di sini, suatu proses mati, telah dihentikan namun masih ada entri di tabel proses.

Cara Melihat Proses Aktif di Linux

Ada beberapa alat Linux untuk melihat/mendaftar proses yang berjalan pada sistem, dua yang tradisional dan terkenal adalah perintah ps dan top:

1. ps Perintah

Ini menampilkan informasi tentang pilihan proses aktif pada sistem seperti yang ditunjukkan di bawah ini:

ps 
ps -e | head 

2. atas – Alat Pemantauan Sistem

top adalah alat canggih yang menawarkan tampilan real-time dinamis dari sistem yang sedang berjalan seperti yang ditunjukkan pada gambar di bawah:

top 

Baca ini untuk contoh penggunaan teratas lainnya: 12 Contoh Perintah TOP di Linux

3. sekilas – Alat Pemantauan Sistem

glance adalah alat pemantauan sistem yang relatif baru dengan fitur-fitur canggih:

glances

Untuk panduan penggunaan yang komprehensif, bacalah: Sekilas – Alat Pemantauan Sistem Real Time Tingkat Lanjut untuk Linux

Ada beberapa alat pemantauan sistem Linux berguna lainnya yang dapat Anda gunakan untuk membuat daftar proses aktif, buka tautan di bawah untuk membaca lebih lanjut tentang proses tersebut:

  1. 20 Alat Baris Perintah untuk Memantau Kinerja Linux
  2. 13 Alat Pemantauan Linux yang Lebih Berguna

Cara Mengontrol Proses di Linux

Linux juga memiliki beberapa perintah untuk mengendalikan proses seperti kill, pkill, pgrep dan killall, berikut adalah beberapa contoh dasar cara menggunakannya:

pgrep -u tecmint top
kill 2308
pgrep -u tecmint top
pgrep -u tecmint glances
pkill glances
pgrep -u tecmint glances

Untuk mempelajari cara menggunakan perintah ini secara mendalam, untuk mematikan/menghentikan proses aktif di Linux, buka tautan di bawah:

  1. Panduan Perintah Kill, Pkill dan Killall untuk Menghentikan Proses Linux
  2. Cara Menemukan dan Menghentikan Proses yang Berjalan di Linux

Perhatikan bahwa Anda dapat menggunakannya untuk mematikan aplikasi yang tidak responsif di Linux ketika sistem Anda macet.

Mengirim Sinyal Ke Proses

Cara mendasar untuk mengendalikan proses di Linux adalah dengan mengirimkan sinyal ke proses tersebut. Ada beberapa sinyal yang dapat Anda kirim ke suatu proses, untuk melihat semua sinyal yang dijalankan:

kill -l

Untuk mengirim sinyal ke suatu proses, gunakan perintah kill, pkill atau pgrep yang telah kami sebutkan sebelumnya. Namun program hanya dapat merespons sinyal jika diprogram untuk mengenali sinyal tersebut.

Dan sebagian besar sinyal ditujukan untuk penggunaan internal oleh sistem, atau untuk pemrogram saat mereka menulis kode. Berikut ini adalah sinyal yang berguna bagi pengguna sistem:

  • SIGHUP 1 – dikirim ke suatu proses ketika terminal pengontrolnya ditutup.
  • SIGINT 2 – dikirim ke suatu proses oleh terminal pengontrolnya ketika pengguna menghentikan proses dengan menekan [Ctrl+C].
  • SIGQUIT 3 – dikirim ke suatu proses jika pengguna mengirimkan sinyal keluar [Ctrl+D].
  • SIGKILL 9 – sinyal ini segera menghentikan (mematikan) suatu proses dan proses tersebut tidak akan melakukan operasi pembersihan apa pun.
  • SIGTERM 15 – ini adalah sinyal penghentian program (kill akan mengirimkannya secara default).
  • SIGTSTP 20 – dikirim ke suatu proses oleh terminal pengontrolnya untuk memintanya berhenti (terminal stop); dimulai oleh pengguna dengan menekan [Ctrl+Z].

Berikut ini adalah contoh perintah kill untuk mematikan aplikasi Firefox menggunakan PID-nya setelah macet:

pidof firefox
kill 9 2687
OR
kill -KILL 2687
OR
kill -SIGKILL 2687  

Untuk mematikan aplikasi menggunakan namanya, gunakan pkill atau killall seperti:

pkill firefox
killall firefox 

Mengubah Prioritas Proses Linux

Pada sistem Linux, semua proses aktif memiliki prioritas dan nilai bagus tertentu. Proses dengan prioritas lebih tinggi biasanya akan mendapatkan lebih banyak waktu CPU dibandingkan proses dengan prioritas lebih rendah.

Namun, pengguna sistem dengan hak akses root dapat mempengaruhi hal ini dengan perintah bagus dan renice.

Dari output perintah teratas, NI menunjukkan nilai proses yang bagus:

top  

Gunakan perintah bagus untuk menetapkan nilai bagus untuk suatu proses. Perlu diingat bahwa pengguna biasa dapat mengatribusikan nilai bagus dari nol hingga 20 ke proses yang mereka miliki.
Hanya pengguna root yang dapat menggunakan nilai negatif Nice.

Untuk renice prioritas suatu proses, gunakan perintah renice sebagai berikut:

renice +8  2687
renice +8  2103

Lihat beberapa artikel bermanfaat kami tentang cara mengelola dan mengontrol proses Linux.

  1. Manajemen Proses Linux: Boot, Shutdown, dan Segala Sesuatu di Antaranya
  2. Temukan 15 Proses Teratas berdasarkan Penggunaan Memori dengan 'atas' dalam Mode Batch
  3. Temukan Proses yang Berjalan Teratas berdasarkan Memori Tertinggi dan Penggunaan CPU di Linux
  4. Cara Menemukan Nama Proses Menggunakan Nomor PID di Linux

Itu saja untuk saat ini! Jika Anda memiliki pertanyaan atau ide tambahan, sampaikan kepada kami melalui formulir masukan di bawah.