Monday, April 02, 2007

LINUX BASIC, Apakah yang dimaksud proses dalam Linux?

Menampilkan proses yang sedang berjalan

Linux adalah sistem operasi multitasking, yang berarti memungkinkan lebih dari satu proses berjalan pada saat yang sama. Untuk mengetahui task apa saja yang sedang berjalan di sistem anda pada saat yang sama, gunakan command:

ps -f
UID PID PPID STIME TTY TIME COMD
hermie 24 1 00:35:28 tty1 0:01 bash
hermie 137 24 00:36:39 tty1 0:00 ps –f

output dari command tersebut menampilkan detail dari masing-masing task berupa UID (pemilik task), PID (task ID), PPID (parent task ID), STIME (waktu task mulai aktif), TIME (sudah berapa lama task aktif), dan CMD (command line yang digunakan untuk mengaktifkan task). Jika anda memperhatikan PID dan PPID, anda dapat melihat bahwa bash menjalankan command ps –f, karena PPID dari ps –f adalah merupakan ID dari bash.

Menjalankan task di foreground dan background.

Misalkan anda memiliki task yang memerlukan waktu lama (misal: meng-compile suatu program berukuran besar) untuk menyelesaikannya, dan misal pada saat yang sama anda juga ingin melakukan pekerjaan lainnya. Linux membolehkan anda menjalankan suatu task di background dan menjalankan task lainnya melalui command prompt. Dengan menambahkan tanda & (ampersand) di tiap akhir command, anda menjalankan task tersebut di background dan kembali pada prompt command, contoh command berikut ini:

cc hugepgm.c > outlist &

akan menjalankan cc (Compiler C) sebagai task di background, menjalankannya secara paralel dengan task-task lain di sistem anda.

Catatan:sangat dianjurkan untuk me-redirect output/result dari task background ke dalam satu file, sebagaimana ditunjukkan disini, karena task background masih berbagi console dengan task foreground. Jika tidak melakukan ini, task background dapat menimpa output screen dari task yang sedang dijalankan ketika misalnya anda meng-edit satu file atau menjalankan satu command.

Jika anda menjalankan satu task yang perlu waktu lama dan lupa menambahkan tanda &, anda masih dapat mengalihkan task tersebut ke background. Jangan menekan ctrl-C (yang akan mengakhiri task foreground) tetapi cukup tekan ctrl-Z setelah command mulai berjalan, ketik bg, dan tekan enter. Anda akan mendapatkan kembali prompt anda dan melanjutkan menjalankan command lain. Gunakan command fg untuk menarik proses yang sedang berjalan di background untuk ditampilkan dan berjalan di foreground.

Anda juga mungkin juga bertanya-tanya mengapa perlu suatu task dijalankan berpindah-pindah dari foreground ke background dan sebaliknya, fitur ini sangat berguna misalnya anda sedang menjalankan proses compile yang perlu waktu lama dan anda perlu segera menjalankan command dari prompt shell. Sementara proses kompilasi terus berjalan, anda dapat menekan ctrl-Z dan mengetikkan command bg untuk mengalihkan kompiler bekerja di background. Kemudian dapat menyelesaikan pekerjaan lain di prompt dan setelah selesai dapat menjalankan command fg untuk mengembalikan task compiler ke foreground. Menekan ctrl-Z juga berfungsi sama pada editor teks Emacs dan program email Pine. Anda dapat menghentikan sementara kedua program dan mengembalikan lagi kedua program tersebut dengan command fg.

Tentu saja, dilingkungan X Windows, semua proses mengetikkan command ini tidak diperlukan. Anda cukup membuka jendela shell dan menjalankan command lain di jendela tersebut. Anda dapat menyaksikan kedua proses berjalan di jendela terpisah pada saat yang sama, dan anda tidak perlu kuatir harus menambahkan tanda &, melakukan piping ke file, atau memperhatikan proses yang berjalan di background atau foreground.

Sunday, April 01, 2007

LINUX BASIC, Apakah pipeline dalam Linux dapat membuat kita kaya?

Mengirim output dari satu program ke dalam program lainnya.

Linux menyediakan banyak utiliti untuk memanipulasi data. Anda dapat melakukan proses search, sort, slice, dice dan transform data yang disimpan dalam file dengan bermacam cara. Suatu pipe (juga disebut pipeline) adalah fitur dari shell yang sangat berguna yang memungkinkan anda mengirim output dari satu program langsung ke program lainnya.

Misalnya, anda memiliki satu file berisi informasi dari sejumlah orang, termasuk keterangan mengenai nama, umur, kode pos dan nomer telepon dari tiap-tiap orang seperti berikut ini:

Roosevelt Tommy 38 54579 555-1212
Nixon Edward 19 37583 246-3457
Roosevelt Freddie 47 11745 674-6972
Lincoln Albert 26 26452 916-5763

Jika anda ingin mencari semua entri berisi Roosevelt dan mengurutkan berdasar kode pos, dapat menjalankan command berikut:

grep Roosevelt people.txt > grep.out
sort +3 grep.out
rm grep.out

karena command grep dan sort belum dibahas, command diatas dapat diartikan seperti berikut ini:
carilah entri/baris yang berisi kata Roosevelt dalam file people.txt dan simpan dalam satu file bernama grep.out. Kemudian urutkan file grep.out pada kolom ke-4 dan tampilkan hasilnya di console sebelum menghapus file grep.out. (tanda +3 artinya memerintahkan proses pengurutan berdasar kolom ke-4).

Namun anda dapat menghindari menjalankan proses membuat dan menghapust file temporer (grep.out) dengan mengkombinasikan operasi tersebut dalam command seperti berikut ini:

grep Roosevelt people.txt | sort +3

garis vertikal memerintahkan shell supaya output dari program sebelah kiri (grep) dikirim atau menjadi input dari program sebelah kanan (sort). Di background, shell mungkin saja menjalankan tiga command seperti pada contoh sebelumnya, tapi anda tidak perlu memperhatikan ini, anda sudah mengkombinasikannya menjadi satu command.

Anda dapat menjalankan berapapun perintah atau command dalam pipeline, bahkan dapat mengkombinasikan pipe dengan redirection, sebagaimana contoh berikut:

grep Roosevelt people.txt | sort +3 > sort-results

disini, dikerjakan proses yang sama seperti contoh sebelumnya, tetapi hasilnya disimpan dalam satu file bernama sort-results.