Minggu, 30 Oktober 2011

Management Proses pada Linux


Setiap kali instruksi diberikan pada Shell Linux, kernel akan menciptakan proses-id. Proses ini disebut juga dalam terminologi UNIX sebagai JOB.
Proses-id (PID) dimulai dari 0, yaitu proses INIT, kemudian diikuti oleh proses berikutnya (dapat dilihat dalam daftar urutan pada /etc /inittab).

Proses-proses sistem terbagi dalam tiga tipe utama, yaitu :
  • Interactive, yaitu proses yang diprakarsai oleh sebuah shell dan berjalan dalam foreground dan background.
  • Batch, yaitu proses yang secara tipical merupakan sebuah seri dari proses-proses yang dijadwalkan untuk dieksekusi pada suatu waktu tertentu
  • Daemon, yaitu proses yang secara tipikal diinisialisasi saat boot untuk membentuk fungsi-fungsi sistem yang dibutuhkan, seperti LPD, NFS dan DNS

Proses Interaktive terdiri dari atas :
  • Proses fireground adalah
    suatu proses yang ketika berjalan, shell tidak menampilkan prompt hingga proses berakhir.
  • Proses background adalah suatu proses yang sewaktu-waktu berjalan, pemakai tetap dapat memberikan perintah yang lain. Sebab begitu perintah background diberikan (setelah di tekan ENTER), prompt akan ditampilkan kembali dan shell siap menerika perintah berikutnya.

BACKGROUND PROSES
Untuk menghasilkan sebuah background proses, dapat dilakukan dengan menjalankan perintah yang diakhiri dengan simbol &. Pada kondisi seperti ini, shell tidak akan menunggu sampai eksekusi perintah berakhir. Begitu perintah berakhiran & diberikan, shell siap menerima perintah lain. Kegunaan perintah ini misalnya untuk memperoleh daftar seluruh file dari direktori root (/) beserta anak-anaknya dan menempatkannya ke sebuah file. Karena proses ini Kemungkinan memakan waktu yang cukup lama, pemakai dapat mengatur agar eksekusinya dilakukan dilatar belakang. Sehingga sementara sistem sedang memprosesnya, pemakai tetap dapat bekerja memberikan perintah-perintah lainnya.
Contoh :
$ ls –lR / > lsroot 2>&1 &
Pada contoh tersebut, perintah ls beserta pesan kesalahan ditempatkan ke file lsroot dan dilakukan secara background. Proses latar belakang cocok untuk proses yang tidak menggunakan keluaran ke layar terminal atau masukkan dari keyboard.

STATUS PROSES
Instruksi ps (process status) digunakan untuk melihat kondisi proses yang ada. Ketika tidak ada option sama sekali, ps akan menampilkan proses yang saat itu dilakukan oleh sebuah terminal (tty?).

$ ps PID TT STAT TIME COMMAND 29384 p0 Is 0:00.01 -ksh (ksh) 27221 p0 R+ 0:00.00 ps
Proses ksh adalah proses shell yang aktif pada saat user login ke dalam sistem dan proses ksh ini akan menunggu instruksi dari pemakai. Bila shell menjalankan instruksi, maka shell menciptakan proses anak dan menunggu hingga proses tersebut selesai.

$ ps -u USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND dsn970210 29384 0.0 0.1 404 328 p0 Ss 7:35PM 0:00.01 -ksh (ksh) dsn970210 21658 0.0 0.1 284 164 p0 R+ 7:42PM 0:00.00 ps -u
Sebuah sistem yang dibangun oleh serangkain proses, dengan perintah ps –e (everthing) dapat ditampilkan sejumlah proses-proses tersebut.
$ ps –e


PID TTY TIME COMMAND
1 ? 00:00:05 init
2 ? 00:00:00 klogd
3 ? 00:00:00 inetd
—cut——

Semakin banyak pemakai yang sedang menggunakan sistem, semakin banyak proses yang akan ditampilkan. Tanda tanya (?) menyatakan bahwa proses tersebut adalah proses daemon (proses yang hidup terus selama sistem hidup dan berjalan dilatar belakang).
Sejumlah proses yang ditampilkan melalui ps –e berkedudukan sebagai pemimpin group proses (proses group leader), yaitu proses yang menjalankan proses yang lain. Sebagai contoh jika dijanlankan perintah ps –f (full listing), dengan hasil sebagai berikut :
$ ps –f
UID PID PPID C STIME TTY TIME CMD
dsn970210 8907 1094 0 12:44 tty02 00:00:00 -bash
dsn970210 9205 8907 0 13:02 tty02 00:00:00 ps -f
Proses sh sebenarnya memimpin group proses. Tampak bahwa PID dari bash tercantum dalam PPID dari proses ps –f. PPID (parrent PID) menyatakan proses induk dari proses yang sedang berjalan, dan STIME menyatakan awal proses dimulai.

Contoh lain perintah ps :
ps –u anjik : untuk menampilkan proses yang terkait dengan seorang pemakai
ps –t tty02 : untuk menampilkan proses yang terkait dengan terminal
ps –auxww : untuk menampilkan informasi detail setiap proses yang berjalan dalam komputer.
Option =
a : Mendaftar semua proses
u : menampilkan informasi dalam “user-oriented style”
x : memasukkan informasi dalam proses yang tidak menampilkan kontrol ttys.
ww : memasukkan baris perintah dengan komplit sampai 132 kolom.

Field-field dalam output ps diantaranya :
  1. USER yaitu username dari proses. (Jika proses memiliki UID yang tidak sesuai dengan /etc/passwd, perlu berhati-hati karena dimungkinkan terjadi proses penyerangan.
  2. PID (Proses Identification Number)
  3. %CPU yaitu presentasi CPU yang digunakan
  4. %MEM yaitu presentasi MEMORY yang digunakan
  5. SZ yaitu jumlah virtual memori yang digunakan proses
  6. RSS yaitu Resident Set Size, jumlah proses physical memory yang ditempati proses
  7. TT yaitu terminal yang mengontrol proses
  8. STAT yaitu field yang menunjukkan status proses
  9. TIME yaitu CPU time yang sedang digunakan
  10. COMMAND yaitu nama perintah yang dijalankan

Pada field STAT yang merupakan status proses dapat digunakan sebagai indikator terhadap suatu proses, sejumlah status tersebut dapat diketaui dari huruf pertama field STAT adalah :
STATUS
PENGERTIAN
R
actually running or runnable
S
Sleeping (sleeping > 20 seconds)
I
Idle (sleeping < 20 seconds)
T
stop
H
Halted
P
In page wait
D
In disk wait
Z
Zombie
<blank>
In core
W
Swapped out
>
Proses yang telah melampaui soft limit ketetapan memori

Pada huruf ketiga field STAT menunjukkan keterangan apakah proses berjalan dengan altered CPU Schedule, antara lain :
  • N = proses berjalan pada prioritas rendah
  • # = nice (nomor yang lebih tinggi dari 0)
  • < = proses berjalan pada prioritas tinggi

Beberapa pilihan perintah ps, sebagai berikut :
  • a : Menampilkan semua proses (termasuk milik user)
  • c : Menampilkan nama perintah dari environment task_struct
  • e : Menampilkan environment setelah baris perintah dan “and”
  • f : Menampilkan “forest” fromat pohon (proses dan subproses)
  • h : Tidak ada header
  • j : Jobs format
  • l : Long format
  • m : Menampilkan info memori
  • n : Output memori untuk USER dan WCHAN
  • r : Hanya proses-proses yang berjalan
  • s : Format signal
  • S : Menambah child CPU time dan page fault
  • t xx : Proses-proses yang hanya diasoasikan dengan ttyxx
  • u : Format user, memberikan nama user dan waktu mulai
  • v : format vm (virtual memory)
  • w : Wide output
  • x : Menampilakn proses-proses tanpa mengontrol terminal

MENGHENTIKAN PROSES
Kadang ada keinginan untuk membunuh atau menghentikan sebuah proses. Suatu alasan yang umum untuk menghentikan proses diantaranya :
  1. Proses terlalu banyak menghabiskan CPU time
  2. Proses berjalan terlalu lama tanpa menghasilkan output yang diharapkan.
  3. Proses memproduksi terlalu banyak output pada layar atau ke sebuah file.
  4. Proses mengunci terminal atau beberapa sesi lain.
  5. Proses menggunakan file-file yang salah baik input maupun output, disebabkan kesalahan operator atau programming yang error.
  6. Proses sudah tidak diperlukan lagi.

Sebenarnya untuk menghentikan proses yang tidak berada pada background, cukup dengan menekan <CTRL+C>. Namun jika proses tersebut bekerja pada background, proses dapat dihentikan dengan perintah kill. Perintah kill bekerja dengan cara mengirim signal ke proses yang sedang berjalan melalui nomer proses yang sudah diketahui. Kill hanya dapat digunakan untuk menghentikan proses dari masing-masing user, hanya superuser saja yang berwenang untuk menghentikan proses user lain.
Format penulisan perintah kill sebagai berikut :
kill [-s signal_name] pid [...]
kill -l [exit_status]
kill -signal_name pid [...]
kill -signal_number pid [...]

Beberpa signal tersebut diantaranya :
1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
6 ABRT (abort)
9 KILL (non-catchable, non-ignorable kill)
14 ALRM (alarm clock)
15 TERM (software termination signal)

Contoh :
$ kill 123 = Menghentikan proses dengan PID 123
$ kill -9 1234 = Menghentikan dengan paksa proses dengan PID 1234.
# kill -HUP `cat /var/run/inetd.pid` = Mengirimkan hang up signal kepada daemon ined dengan PID seperti yang terseimpan pada /var/run/inetd.pid, dan meminta proses untuk membaca ulang susunan konfigurasi /etc/inetd.conf.
# kill 0 = Menghentikan semua proses yang berjalan dalam background.

Tidak ada komentar:

Posting Komentar