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 : Diprakarsai oleh sebuah shell dan berjalan dalam foreground dan
Background.
Batch : Secara tipical merupakan sebuah seri dari proses-proses yang
dijadwalkan untuk dieksekusi pada suatu waktu tertentu
Daemon : 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.
7.1 Background Proses
Untuk menghasilkan sebuah background proses, dapat dilakukan dengan
menjalankan perintah yang diakhiri dengan simbol &. Pada kondisi
seperti ini, sehll 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.
7.2 Status Proses
Instruksi ps (proses 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 tentang setiap proses yang berjalan dalam komputer.
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, bahkan jika
mereka menjalankan sampai 132 kolom.
Field-field dalam output ps diantaranya :
USER : username dari proses. (Jika proses memiliki UID yang tidak sesuai
dengan /etc/passwd, perlu berhati-hati karena dimungkinkan terjadi
proses penyerangan.
PID : Proses Identification Number
%CPU : Prosentasi CPU yang digunakan
%MEM : Prosentasi MEMORY yang digunakan
SZ : Jumlah virtual memori yang digunakan proses
RSS : Resident set size, jumlah proses physical memory yang ditempati proses
TT : Terminal yang mengontrol proses
STAT : Field yang menunjukkan status proses
TIME : CPU time yang sedang digunakan
COMMAND : Nama perintah
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 :
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
: 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
7.3 Menghentikan Proses (Kill)
Kadang ada keinginan untuk membunuh atau menghentikan sebuah proses.
Suatu alasan yang umum untuk menghentikan proses diantaranya :
- Proses terlalu banyak menghabiskan CPU time
- Proses berjalan terlalu lama tanpa menghasilkan output yang
diharapkan.
- Proses memproduksi terlalu banyak output pada layar atau ke sebuah
file.
- Proses mengunci terminal atau beberapa sesi lain.
- Proses menggunakan file-file yang salah baik input maupun output,
disebabkan kesalahan operator atau programming yang error.
- Proses sudah tidak diperlukan lagi.
Sebenarnya untuk menghentikan proses yang tidak berada pada background,
cukup dengan menekan . 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.
Jobs control adalah fasilitas yang memungkinkan suatu program dihentikan
secara sementara dan kemudian dijalankan kembali. Fasilitas ini dapat
dipakai untuk memindahkan program yang sedang berjalan secara background
(dilatar belakang) ke foreground (di latar depan) atau sebaliknya.
Fasilitas ini meniru fasilitas pada C shell.
Jika seseorang memberikan perintah (script shell, utilitas atau
program), perintah tersebut akan menjadi sebuah job, terlepas perrintah
itu dijalankan dilatar depan atau belakang.
Jobs control biasanya diaktifkan secara otomatis begitu berada di prompt
(shell). Untuk mengetahui fasilitas ini sudah dijalankan atau belum,
dapat deketahui dengan perintah :
$ set –o | grep monitor
monitor on
Jika perintah di atas menghasilkan informasi berupa “monitor on” berarti
fasilitas job control sudah diaktifkan. Apabila fasilitas tesebut belum
aktif, dapat diaktifkan dengan perintah :
$ set -o monitor
$ set -m
Untuk menjalankan perintah di background, perlu akhiran & disetiap perintah yang akan dijalankan.
$find / -name *.c –print > c.out 2> c.error &
Perintah diatas dipakai untuk memperoleh semua file berakhiran *.c dari
root (/) danhasilnya ditempatkan ke file c.out. Adapun kalau ada sesuatu
kesalahan (misalnya karena tidak diperkanankan membaca direktori
tertentu berhubungan dengan ijin akses) kesalahan tersebut direkam ke
file c.error. Proses ini dilakukan dibelakang layar, dan diberi nomor
job dan identitas proses (PID).
Apabila nomor job adalah satu dan jobs belum berakhir, maka jika diberikan job kedua, maka nomor job tersebut sama dengan 2.
$ du / > du.out 2>1 &
[2] 272
Perintah du digunakan untuk memperoleh blok dari setiap file atau
direktori. Setelah nomor job kedua diatas, jika dijalankan satu job
lagi, maka :
$ sleep 500 & #tidak melakukan apa-apa selama 500 detik
[3] 273
Untuk melihat status proses dari perintah yang dieksekusi dilatar belakang, dapat digunakan perintah jobs.
$ jobs
[1] Stopped vi file1.txt &
[2] – Running ps –aux &
[3] + Running sleep 500 &
Informasi dibagian kiri menyatakan nomor job. Tanda + sesudah nomor job
menyatakan job yang terbaru. Tanda – menyatakan job kedua yang terbaru.
Informasi seperti running menyatakan bahwa perintah job sedang
dieksekusi (belum selesai). Kemungkinan lain informasi adalah :
Stopped : job sedang berhenti secara sementara (ditangguhkan)
Done : job sudah selesai dikerjakan.
Bagian terkanan menyatakan nama perintah. Pemakai dapat memberikan
pilihan –p pada perintah jobs. Pilihan ini akan menyebabkan jobs
menampilkan PID dari semua proses yang dieksekusi dilatar belakang.
$ jobs –p
300
302
Artinya ada dua proses di latar belakang dengan PID 300 dan 302. Pilihan
(option) –l akan menampilkan informasi seperti jobs tanpa option dan
informasi PID (nomor proses)
$ jobs –l
[2] + 300 Running sleep 300 &
[1] – 302 Running sleep 150 &
Job yang berjalan dilatar depan dapat dihentikan dengan menekan tombol . Sebagai contoh, saat menjalankan perintah sleep 500 di latar depan, kemudian menekan tombol , maka proses tersebut akan dihentikan sementara.
$ sleep 500
[1] + Stopped sleep 500
Dengan menggunakan perintah jobs, status proses tersebut diatas dapat diketahui, sebagai berikut :
$ jobs
[1] + Stopped sleep 500
Job yang sedang ditangguhkan dapat diaktifkan kembali dengan cara
diaktifkan dilatar belakang dan diaktifkan dilatar depan. Job yang
sedang berhenti secara sementara dapat dijalankan kembali dilatar depan
dengan cara menjalankan perintah fg. Dengan menjalankan perintah fg maka
sleep 500 akan dijalankan di foreground, dan jika setelah di depan
ingin ditangguhkan kembali tinggal menjalankan perintah bg.
$ sleep 500
[1] + Stopped sleep 500
$ bg #Eksekusi kelatar belakang
[1] sleep 500
Pada bentuk fg dan bg tanpa argumen, job terbarulah yang diproses.
Sedangkan jika %n digunakan, job dengan nomor n yang diproses.
$ jobs
[2] + Running sleep 1000 &
[1] – Running sleep 200 &
$ fg %1
sleep 200 &
Proses yang sedang ditangguhkan ataupun yang sedang berada di latar belakang dapat dimatikan dengan menggunakan perintah kill.
$ kill %1 # job nomor 1 dihapus
[1] – Terminated sleep 200 &
Jika dikehendaki, pemakai dapat menyuruh shell menunggu suatu proses
dilatar belakang selesai dieksekusi. Perintah yang diperlukan adalah
wait. Perintahnya adalah wait %n, dengan n adalah nomor job dari proses
latar belakang yang ditunggu.
sumber: http://gomu2no.blogspot.com/2011/06/manajemen-proses-di-linux-debian.html