Modul Praktikum Sistem Operasi [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

MODUL PRAKTIKUM “SISTEM OPERASI”



LABORATORIUM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA 2011



Universitas Sriwijaya Fakultas Ilmu Komputer Laboratorium



No. Dokumen Revisi



LEMBAR PENGESAHAN MODUL PRAKTIKUM



SISTEM MANAJEMEN MUTU ISO 9001:2008



……. 0



4 JUNI 2011 2 DARI 94



Tanggal Halaman



MODUL PRAKTIKUM



Mata Kuliah Praktikum Kode Mata Kuliah Praktikum SKS Program Studi Semester



: Sistem Operasi : FSK27311 :1 : Sistem Komputer : 4 (Genap)



DIBUAT OLEH



DISAHKAN OLEH



DIKETAHUI OLEH



TIM LABORAN LABORATORIUM FASILKOM UNSRI



TIM DOSEN SISTEM KOMPUTER FASILKOM UNSRI



KEPALA LABORATORIUM



2



Daftar Isi



Cover ......................................................................................................



1



Lembar Pengesahan ...............................................................................



2



Daftar Isi .................................................................................................



3



Instalasi Fedora Core 2 ...........................................................................



4



Perintah-Perintah Dasar Sistem Operasi Linux ......................................



17



Shell pada Sistem Operasi Linux dan Editor Vi ....................................



23



Sistem File ..............................................................................................



30



Proses I/O ................................................................................................



39



Shell Lanjutan ........................................................................................



44



Manajemen Proses ..................................................................................



53



Utilitas Linux .........................................................................................



58



Pemrograman Shell (1) ...........................................................................



66



Pemrograman Shell (2) ...........................................................................



80



Pemrograman Shell (3) ...........................................................................



90



3



Praktikum 1



Instalasi Fedora Core 2 Ubah boot pertama ke CD ROM Masukkan CD Fedora Ini adalah tampilan pertama instalasi Fedora 2, Tekan Enter



Tampilan berikut adalah untuk mengecek CD instalasi. Anda bisa memilih skip



Klik Next



4



Pilih English Language, Next



Pilih US English, Next



5



Layar berikut adalah untuk memilih monitor, bila monitor anda terdeteksi maka akan langsung terpilih, bila monitor anda Unprobed Monitor klik Next saja



Anda bisa memilih tipe instalasi sesuai kebutuhan, misal Workstation



6



Untuk menentukan partisi secara manual, pilih manually



Klik Yes



7



Klik partisi yang disediakan untuk instalasi Linux, kemudian klik New



Tentukan SWAP, besarnya 2x atau 4x RAM, pilih Fixed Size, kemudian OK



8



Kemudian pilih partisi yang masih FREE, klik NEW



Tentukan besar partisi Root ( / ), dengan File System EXT3, tidak usah tentukan besar MB, tapi pilih FILL TO MAXIMUM ALLOWABLE SIZE, kemudian klik OK



9



Kemudian klik NEXT



Klik NEXT



10



Anda bisa memilih service firewall yang akan diinstal, klik NEXT



Klik NEXT



11



Pilih Time Zone ASIA/JAKARTA



Isi password root, kemudian NEXT



12



Pilih Customize bila ingin memilih paket lainnya untuk diinstal, kemudian klik NEXT



Kemudian NEXT



13



Klik Continue



Instalasi dimulai



14



Proses akan meminta CD 2, masukkan CD 2, kemudian OK



15



Selesai, kemudian Reboot



16



Praktikum 2



Perintah - Perintah Dasar Sistem Operasi Linux A. T U J U A N 1. 2. 3. 4.



Menggunakan perintah-perintah dasar untuk informasi user Mengenal format instruksi pada system operasi Linux Menggunakan perintah-perintah dasar pada system operasi Linux Mempelajari utilitas dasar pada system operasi Linux



B. DASAR TEORI Setiap pemakai LINUX harus mempunyai nama login (user acount) yang sebelumnya harus didaftarkan pada administrator system. Nama login umumnya dibatasi maksimum 8 karakter dan umumnya dalam huruf kecil. Prompt dari shel bash pada LINUX menggunakan tanda “$”. Sebuah sesi LINUX terdiri dari : 1. Login 2. Bekerja dengan Shel / menjalankan aplikasi 3. Logout Tergantung atas shel yang digunakan, pada Linux bash maka pada proses login akan mengeksekusi program /etc/profile (untuk semua pemakai) dan file .base_profile di direktori awal (HOME) masing-masing. Pada saat logout, maka program shel bash akan mengeksekusi script yang bernama .bash_logout. Format Instruksi Linux Instruksi Linux standar mempunyai format sebagai berikut : $ NamaInstruksi [pilihan] [argumen]



Pilihan adalah option yang dimulai dengan tanda – (minus). Argumen dapat kosong, satu atau beberapa argumen (parameter). Contoh : $ $ $ $ $ $



ls ls ls ls ls ls



–a /bin /bin /etc /usr –l /usr –la /bin /etc



tanpa argumen option adalah –a = all, tanpa argumen tanpa option, argumen adalah /bin ada 3 argumen 1 option dan 1 argumen l = long list 2 option –l dan –a dan 2 argumen



Manual Linux menyediakan manual secara on-line. Beberapa kunci keyboard yang penting dalam menggunakan manual adalah : 17



Q



b /teks n



untuk keluar dari program man ke bawah, baris per baris ke bawah, per halaman ke atas, 1 halaman mencari teks (string) meneruskan pencarian string sebelumnya



Manual dibagi atas Bab-bab sebagai berikut : Bab 1 2 3 4 5 6 7 8 9 N



Isi User commands System cals Library cals Devices File formats Games Miscelaneous System commands Kernel internals Tcl/Tk command



C. LANGKAH-LANGKAH 1. Hidupkan komputer : tekan tombol POWER pada CPU dan tekan tombol POWER pada monitornya. 2. Masuk ke sistem operasi Linux 3. Tunggu sampai ada perintah login untuk mengisi nama user dan perintah password untuk mengisi password dari user. Nama user disi dengan : mahasiswa Password disi dengan : mahasiswa 4. Untuk keluar dari sistem gunakan perintah logout atau exit 5. Gunakan perintah perintah untuk informasi user : id, hostname, uname, w, who, whoami, chfn, finger



6. Gunakan perintah-perintah dasar (basic command) : date, cal, man, clear, apropos, whatis



7. Gunakan perintah-perintah dasar untuk manipulasi file : ls, file, cat, more, pg, cp, mv, rm, grep



D. PERCOBAAN Percobaan 1 : Melihat identitas diri (nomor id dan group id) $ id



Percobaan 2 :Mengganti prompt dengan “$” $ PS1=”$ ”



18



Percobaan 3 :Melihat tanggal dan kalender dari sistem 1. Melihat tanggal saat ini $ date



2. Melihat kalender $ cal 9 2002 $ cal -y



Percobaan 4 : Melihat identitas mesin $ hostname $ uname $ uname -a



Percobaan 5 : Melihat siapa yang sedang aktif 1. Mengetahui siapa saja yang sedang aktif $ w $ who $ whoami



2. Mengubah informasi finger $ chfn mahasiswa Changing finger information for student. Password: Name[Student]: Office[ ]: Lab Linux Office Phone [ ]: 9999999 Home Phone [ ]: 888888 Finger information changed.



3. Melihat informasi finger $ finger $ finger mahasiswa



Percobaan 6 : Menggunakan manual $ $ $ $



man man man man



ls man –k file 5 passwd



Percobaan 7 : Menghapus layar $ clear



Percobaan 8 : Mencari perintah yang deskripsinya mengandung kata kunci yang dicari.



19



$ apropos date $ apropos mail $ apropos telnet



Percobaan 9 : Mencari perintah yang tepat sama dengan kunci yang dicari. $ whatis date



Percobaan 10 : Manipulasi berkas (file) dan direktori 1. Menampilkan curent working directory $ ls



2. Melihat semua file lengkap $ ls –l



3. Menampilkan semua file atau direktori yang tersembunyi $ ls –a



4. Menampilkan semua file atau direktori tanpa proses sorting $ ls –f



5. Menampilkan isi suatu direktori $ ls /usr



6. Menampilkan isi direktori root $ ls /



7. Menampilkan semua file atau direktori dengan menandai : tanda (/) untuk direktori, tanda asterik (*) untuk file yang bersifat executable, tanda (@) untuk file symbolic link, tanda (=) untuk socket, tanda (%) untuk whiteout dan tanda (|) untuk FIFO. $ ls –F /etc



8. Menampilkan file atau direktori secara lengkap yaitu terdiri dari nama file, ukuran, tanggal dimodifikasi, pemilik, group dan mode atau atributnya. $ ls –l /etc



9. Menampilkan semua file dan isi direktori. Argumen ini akan menyebabkan proses berjalan agak lama, apabila proses akan dihentikan dapat menggunakan ^c $ ls –R /usr



Percobaan 11 : Melihat tipe file $ file $ file *



20



$ file /bin/ls



Percobaan 12 : Menyalin file 1. Mengkopi suatu file. Berikan opsi –i untuk pertanyaan interaktif bila file sudah ada. $ $ $ $



cp ls cp cp



/etc/group f1 –l –i f1 f2 –i f1 f2



2. Mengkopi ke direktori $ $ $ $ $ $



mkdir backup cp f1 f3 cp f1 f2 f3 backup ls backup cd backup ls



Percobaan 13 : Melihat isi file 1. Menggunakan instruksi cat $ cat f1



2. Menampilkan file per satu layar penuh $ more f1



Percobaan 14 : Mengubah nama file 1. Menggunakan instruksi mv $ mv f1 prog.txt $ ls



2. Memindahkan file ke direktori lain. Bila argumen terakhir adalah nama direktori, maka berkas-berkas akan dipindahkan ke direktori tersebut. $ mkdir mydir $ mv f1 f2 f3 mydir



Percobaan 15 : Menghapus file $ $ $ $ $



rm cp cp rm rm



f1 mydir/f1 f1 mydir/f2 f2 f1 –i f2



Percobaan 16 : Mencari kata/kalimat dalam file



21



$ grep root /etc/passwd $ grep “:0:” /etc/passwd $ grep student /etc/passwd



E. LATIHAN 1. Ubahlah informasi finger pada komputer Anda. 2. Lihatlah user-user yang sedang aktif pada komputer Anda. 3. Perintah apa yang digunakan untuk melihat kalender satu tahun penuh ? 4. Bagaimana anda dapat melihat manual dari perintah cal ? 5. Bagaimana melihat perintah manual ls dengan kata kunci sort ? 6. Berikan contoh menggunakan manual untuk bab user command. 7. Tampilkan semua file termasuk yang hidden file pada direktori /etc. 8. Tampilkan semua file secara lengkap pada direktori /etc. 9. Buatlah direktori prak1 pada direktori aktif, kemudian copy-kan file /etc/group ke file tes1, tes2 dan tes3 pada direktori ini. 10.Tampilkanisifile tes1 per satu layar penuh. 11. Pindahkan file tes1 dan tes2 ke home direktori. 12. Hapus file tes1 dan tes dengan konfirmasi.



22



Praktikum 3



Shell Pada Sistem Operasi Linux dan Editor vi A. T U J U A N 1. Menggunakan shell pada system operasi Linux 2. Menggunakan pipeline, regular expression dan redirection. 3. Menggunakan teks editor vi, dan mengerti fungsi dari tiap kunci yang ada dalam teks editor ini B. DASAR TEORI Pipeline Pada Linux, hasil keluaran suatu proses program dapat diberikan sebagai input pada proses lainnya. Tanda vertical bar (|) adalah tanda yang digunakan untuk pipeline. Penggunaan pipeline pada perintah-perintah Linux tidak terbatas. Regular Expression Regular expresion adalah cara untuk menentukan sebuah pola karakter untuk pencarian dan pemfilteran. Dengan regular expresion, kita tidak harus menentukan pola karakter yang eksak. Untukmenggunakan regular ekspression, kita harus mengenal karakter-karakter khusus yang memiliki arti tersendiri jika digunakan di dalam pola regular ekspression. Karakter



Arti



.



Cocok dengan sembarang satu karakter



*



Cocok dengan sembarang lebih dari satu karakter



^



Cocok dengan awal baris



$



Cocok dengan akhir baris



\




Cocok dengan akhir kata



[]



Cocok dengan salah satu karakter yang terdapat di dalam kurung siku



[^ ]



Cocok dengan salah satu karakter yang tidak terdapat pada kurung siku



\



Karakter selanjutnya akan dianggap literal



23



Redirection Pada UNIX terdapat istilah standard input, standard output, dan standard eror. Standard input adalah masukan atau input standard dari suatu perintah atau program. Input standar ini adalah keyboard. Standard output adalah keluaran atau output standar dari suatu perintah atau program. Outpot standar ini adalah layar monitor atau terminal. Standard eror adalah keluaran atau output standar jika pada program atau perintah terjadi eror. Keluaran ini berupa pesan-pesan kesalahan yang berguna bagi pembuat program atau orang lain yang membutuhkan. Standard eror biasanya dalah layar console. Pada UNIX pula, kita dapat membelok-belokkan standard input, standard output dan standard eror menuju ke tujuan lain. Misalnya membelokkan standard output suatu program ke file atau membelokkan standard input suatu program dari suatu file. Proses pembelokan ini disebut redirection, dan menggunakan symbol > (membelokkan standard output ke file), < (membelokkan standard input dari file). Pengeditan Perintah Dengan bash shel, kita dapat mengedit suatu baris perintah cukup dengan tombol panah kiri dan panah kanan pada keyboard. Setelah selesai mengedit, kita dapat langsung menekan tomboh [ENTER] untuk menjalankan perintah. History Dengan bash shel, kita dapat memanggil kembali perintah-perintah yang pernah diketikkan sebelumnya dengan menggunakan tombol panah atas dan panah bawah pada keyboard. Setelah menemukan perintah yang dimaksud, kita dapat langsung menekan tombol [ENTER] untuk menjalankan perintah ini. Editor vi Vi adalah ful screen editor, artinya editor tersebut dapat memanfaatkan fasilitas satu layar penuh. Vi mempunyai 2 buah modus, yaitu : •Command line Editor vi mengintepretasikan input sebagai instruksi untuk dieksekusi oleh editor, contoh seperti mencari teks, mengganti teks secara otomatis dan lainnya. •Editing Editor vi mengintepretasikan input sebagai teks yang akan dimasukkan ke dalam bufer editor. Pada bagian bawah layar akan tampil teks “INSERTING”. Pada awal vi dijalankan, maka program memasuki command mode. Dengan menekan tombol “i” maka akan memasuki editing. Untuk kembali ke command mode, tekan tombol Esc. Kunci-kunci teks editor vi dapat dilihat pada tabel sebagai berikut : KUNCI / KEY H J K



KETERANGAN Pindah kursor ke kiri satu karakter Pindah kursor ke kanan satu karakter Pindah kursor ke atas



24



L O



I (shift i)



Pindah kursor ke Menyisipkan teks posisi kursor) Menyisipkan teks posisi kursor) Menyisipkan teks posisi kursor) Menyisipkan teks baris)



A (shift a)



Menyisipkan teks (di posisi akhir baris)



I A



bawah (satu baris setelah (di sebelah kiri (di sebelah kanan (di posisi awal



Note : untuk keluar dari 5 model kunci insert diatas ( yaitu o, i, a, I, A) tekan ESC



KUNCI / KEY



KETERANGAN



X



Menghapus 1 huruf (di sebelah kanan posisi kursor) Manghapus 1 kata (di sebelah kanan posisi kursor) Menghapus 1 baris (di sebelah kanan posisi kursor) Mengkopi 1 baris Mengkopi 2 baris ( Paste) Menampilkan baris kalimat yang sudah dikopi dengan kunci yy Mengganti 1 kata yang telah ditulis di sebelah kanan posisi kursor dengan kata lain Mengganti 1 baris kalimat yang telah ditulis di sebelah kanan posisi kursor dengan kalimat lain Mundur satu layer Maju satu layer Maju setengah layer Menggerakkan kursor ke kiri satu kata Manggerakkan kursor ke kanan satu kata Pergi ke awal baris Pergi ke akhir baris Membatalkan perintah yang terakhir kali Membatalkan seluruh perubahan teks pada baris tempat kursor berada Keluar untuk sementara dari editor vi dan menjalankan perintah yang lain Write dan quite, simpan berkas dan keluar Keluar vi tanpa menyimpan Menampilkan semua pilihan set status Menampilkan nomor baris pada kiri layar Mencari string ke arah depan Mencari string ke arah belakang Meneruskan pencarian untuk arah yang sama Meneruskan pencarian untuk arah yang berbeda



Dw Dd Yy 2yy P Cw



Cc



ctrl-b ctrl-f ctrl-d B W ^ $ U U :!



:wq :q! :se all :se nu /string ?string N N



25



C. LANGKAH - LANGKAH 1. 2. 3. 4.



Masuk ke sistem operasi Linux Login sebagai mahasiswa Gunakan perintah-perintah pada shell : Gunakan editor vi untuk percobaan 5 .



 ,  , wildcard, pipeline, redirection.



D. PERCOBAAN Percobaan 1 : Menggunakan pipelines $ ls -l /etc | more $ ls -l /etc | sort | more



Percobaan 2 : Mengulang perintah sebelum atau sesudah 1. Gunakan tombol  untuk mengulang perintah sebelumnya, maka didapatkan hasil sebagai berikut: $ ls -l /etc | more



2. Gunakan tombol  untuk mengulang perintah sesudahnya, maka didapatkan hasil sebagai berikut: $ ls -l /etc | sort | more



Percobaan 3 : Menggunakan regular expression 1. Tanda * digunakan untuk mencocokkan sejumlah karakter dengan panjang bebas $ $ $ $ $ $



cd touch contoh1 contoh2 contoh3 ls ls c* rm c* ls c*



2. Tanda ? digunakan untuk mencocokkan dengan karakter sebanyak jumlah karakter ? $ $ $ $ $



touch cth1 cth2 cth3 ls ls cth? rm cth? ls cth?



3. Tanda [ ] digunakan untuk mencocokkan sembarang karakter tunggal yang terdapat dalam tanda kurung siku $ $ $ $



touch cth4 cth5 cth6 ls rm cth[456] ls



26



4. Tanda [ - ] digunakan untuk mencocokkan sembarang karakter tunggal yang terdapat di antara tanda [ - ] dan sesudahnya $ $ $ $



touch cth7 cth8 cth9 ls rm cth[7-9] ls



Percobaan 4 : Menggunakan redirection 1. Menyalin suatu file teks dengan menggunakan perintah cat $ cat > tes1 Baris pertama dari file tes1 Baris kedua dari file tes1 A B C D . . [Lanjutkan] ^D $ cat tes1 $ cat tes1 > tes2 $ ls $ cat tes2



2. Menggabungkan suatu file teks dengan menggunakan perintah cat $ cat tes1 >> tes2 $ cat tes2



3. Menggabungkan beberapa file teks dengan menggunakan perintah cat $ cat Baris Baris ^D $ cat $ ls $ cat $ cat



> tes2 pertama dari file tes2 kedua dari file tes2 tes1 tes2 > tes3 tes3 tes1 tes2 >> tes3



4. Mengurut file teks $ sort < tes3 $ sort < tes3 > tes4 $ cat tes4



Percobaan 5 : Menggunakan vi 1. Memulai vi. $ vi latihan



27



2. Sisipkan teks sebagai awal dari editing. iKalimat pertama Kalimat kedua Kalimat ketiga



3. Sisipkan judul pada awal kalimat, diatas kalimat pertama. Gunakan kursor arows-key ke baris pertama. Sisipkan dengan O. Olatihan dengan vi



4. Sisipkan pada “Kalimat kedua” dengan kata “yang” di tengah kedua kata tersebut. 5. Sisipkan kata pada awal baris kedua. Arahkan kursor ke awal baris dengan tanda ^ kemudian i untuk insert dan tulis “Ini adalah”. 6. Arahkan kursor pada huruf p, lalu gunakan tombol R (SHIFT+r) untuk mengganti huruf dengan huruf yang diketik sampai ditekan. Rawal yang ditulis



7. Arahkan kursor ke depan kata “Kalimat” (huruf K), kemudian gunakan instruksi cw, setelah itu tulis “Baris”. cwBaris



8. Hasil yang diperoleh harusnya : Latihan dengan vi _ Baris awal yang ditulis Ini adalah Kalimat yang kedua Kalimat ketiga ~ ~



E. Latihan 1. Lihat semua file dan direktori /usr per halaman 2. Lihat semua file dan dan direktori /usr dan carilah file yang mengandung kata "passwd" 3. Daftar file dari direktory / masukkan ke dalam file xx1 4. Daftar file dari direktory /usr masukkan ke dalam file xx2 5. Daftar file dari direktory /bin masukkan ke dalam file xx3 6. Beberapa daftar file dari direktory /usr masukkan ke dalam file xx4 7. Gabunglah file xx1 dengan file xx2 dengan menggunakan perintah cat 8. Gabunglah file xx2 dengan file xx3 dengan menggunakan perintah cat 9. Siapkan file latihan dengan isi sebagai berikut : Latihan dengan vi _ Baris awal yang ditulis Ini adalah Kalimat yang kedua



28



Kalimat ketiga



a. Hapus baris ke 2 dengan perintah dd b. Hapus 3 baris sekaligus dengan instruksi 3dd c. Batalkan penghapusan tersebut dengan u (undo) 10. Ketikkan text di bawah ini dengan menggunakan teks editor vi. Simpanlah dengan nama teks.txt. Gunakan kunci-kunci vi. Happiness doesn't always go with money. It often happens that success comes after many failures. I quite agree, though I never thought of this before. I'm very happy that your health is showing signs of improvement. All I want is some peace and quiet. We have visited this island year in year out and we never get bored. Everyone but myself, I said; to everyone else this be clear, but not to me. While I understand what you say, I can't agree with you. It gives me pleasure to see you looking happy. He has been able to tell us more about computer than anyone can do.



Gunakan perintah di bawah ini untuk memeriksa apakah speling dari teks berbahasa Inggris yang anda ketikkan di atas benar atau tidak: $ spell teks.txt



29



Praktikum 4



Sistem File A. T U J U A N 1. 2. 3. 4. 5.



Mengenal organisasi File di Linux Menciptakan dan manipulasi direktori Mempelajari ijin akses (permission) dari file dan direktori Mengenal konsep Owner dan Group Mengerti konsep Link dan symbolic link



B. DASAR TEORI ORGANISASI FILE Sistem file pada Linux menyerupai pepohonan (tree), yaitu dimulai dari root, kemudian direktori dan sub direktori. Sistem file pada Linux diatur secarahirarkhikal, yaitu dimulai dari root dengan symbol “/”. /



etc



dev



usr bin



bin



tmp



lib



Kita dapat menciptakan File dan Direktori mulai dari root ke bawah. Direktori adalah file khusus, yang berisi nama file dan INODE (pointer yang menunjuk ke data / isi file tersebut). Secara logika, Direktori dapat berisi File dan Direktori lagi (disebut juga Subdirektori). DIREKTORI STANDAR Setelah proses instalasi, Linux menciptakan system file yang baku, terdiri atas direktori sebagai berikut : Direktori



Deskripsi



/etc



Berisi file administrative (konfigrasidll) dan file executable atau script yang berguna untuk administrasi system.



/dev



Berisi file khusus yang merepresentasikan peralatan hardware seperti memori, disk, printer, tape, floppy, jaringan dll.



/bin



Berisi program standar Linux (binary). 30



/usr/sbin /usr/bin



Berisi utilitas Linux.



/usr/lib



Berisi program library yangdiperlukan untuk kompilasiprogram (misalnya C). Berisi instruksi (command)misalnya untuk Print Spooler (lpadmin)dl.



/tmp



Berisi file sementara, yang pada saat Bootstrap akan dihapus



/boot



Berisi file yang sangat penting untuk proses bootstrap. Kernel vmlinuz disimpan di direktori ini.



/proc



Berisi informasi tentangkernel Linux, proses dan virtual system file.



/var



Direktori variable, artinya tempan penyimpanan LOG (catatan hasil output program), file inidapat membengkak dan perlu dimonitor perkembangannya.



/home



Berisi direktori untuk pemakai Linux (pada SCO diletakkan pada /usr)



/mnt



Direktori untuk mounting system file



/root



Homedirektori untuk superuser (root)



/usr/bin/X11



Symbolic link ke /usr/X11R6/bin, program untuk X-Window



/usr/src



Sourcecode untukLinux



/opt



Option, direktori ini biasanyaberisi aplikasi tambahan (“add-on”) seperti Netscape Navigator, kde, gnome, applix dll.



Direktori /etc Berisi file yang berhubungan dengan administrasi system, maintenance script, konfigurasi, security dl. Hanya superuser yang boleh memodifikasi file yang berada di drektori ini. Subdirektori yang sering diakses pada direktori /etc antara lain : • httpd, apache web server. • ppp, point to point protocol untuk koneksi ke Internet. • rc.d atau init.d, inisialisasi (startup) dan terminasi (shutdown) proses di Linux dengan konsep runlevel. • cron.d, rincian proses yang dieksekusi dengan menggunakan jadwal(time dependent proces) • FILES, file security dan konfigurasi meliputi : paswd, hosts, shadow, ftpaces, inetd.conf, lilo.conf, motd, printcap, profile, resolv.conf, sendmail.cf, syslog.conf, dhcp.conf, smb.conf, fstab. Direktori /dev Konsep Unix dan Linux adalah memperlakukan peralatan hardware sama seperti penanganan file. Setiap alat mempunyai nama file yang disimpan pada direktori /dev.



31



Peralatan



Direktori



Floppy



/dev/fd0



Harddisk



IDE : /dev/had, /dev/hdb, /dev/hdc, /dev/hdd SCSI : /dev/sda, /dev/sdb, /dev/sdc



CDROM



SCSI : /dev/scd0, /dev/scd1 IDE : /dev/gscd, /dev/sonycd Universal : /dev/cdrom (link dari actual cdrom ide atau scsi)



Mouse



PS2 : /dev/lp0 Universal : /dev/mouse



Paralel Port



LPT1 : /dev/lp0 LPT2 : /dev/lp1



Serial Port



COM1 : /dev/ttyS0 COM2 : /dev/ttyS1 Universal : /dev/modem (link dari S0 atau S1)



Direktori /proc Direktori /proc adalah direktori yang dibuat diatas RAM (Random Access Memory) dengan system file yang diatur oleh kernel. /proc berisi nomor proses dari system dan nama driver yang aktif di system. Semua direktori berukuran 0 (kosong) kecuali file kcore dan self. Setiap nomor yang ada pada direktori tsb merepresentasikan PID (Process ID). TIPE FILE Pada Linux terdapat 6 buah tipe file yaitu • Ordinary file • Direktori • Block Device (Peralatan I/O) Merupakan representasi dari peralatan hardware yang menggunakan transmisi data per block (misalnya 1 KB block), seperti disk, floppy, tape. • Character Device (Peralatan I/O) Merupakan representasi dari peralatan hardware yang menggunakan transmisi data karakter per karakter, seperti terminal, modem, ploter dl • Named Pipe (FIFO) File yang digunakan secara intern oleh system operasi untuk komunikasi antar proses • Link File PROPERTI FILE File mempunyai beberapa atribut, antara lain : • Tipe file : menentukan tipe dari file, yaitu :



32



Karakter



Arti



d l b c s p



File biasa Direktori Symbolic link Block special file Character special file Socket link FIFO



• Ijin akses : menentukan hak user terhadap file ini. • Jumlah link : jumlah link untuk file ini. • Pemilik (Owner) : menentukan siapa pemilik file ini • Group : menentukan group yang memiliki file ini • Jumlah karakter : menentukan ukuran file dalam byte • Waktu pembuatan : menentukan kapan file terakhir dimodifikasi • Nama file : menentukan nama file yang dimaksud Contoh : -rw-rw-r--



1



Tipe jml link izin akses



bin



auth



1639



Oct 31 20:19



pemilik group



waktu



/etc/passwd



nama file



jml karakter



NAMA FILE Nama file maksimal terdiri dari 255 karakter berupa alfanumerik dan beberapa karakter spesial yaitu garis bawah, titik, koma dan lainnya kecuali spasi dan karakter “&”, “;”, “|”, “?”, “`”, “”, “’”, “[“, “]”, “(“, “)”, “$”, “”, “{“, “}”, “^”, “#”, “\”, “/”. Linux membedakan huruf kecil dengan huruf besar (case sensitive). Contoh nama file yang benar : Abcde5434 3 prog.txt PROG.txt Prog.txt,old report_101,v2.0.1 5-01.web.html



IJIN AKSES Setiap obyek pada Linux harus mempunyai pemilik, yaitu nama pemakai Linux (account) yang terdaftar pada /etc/passwd. Ijin akses dibagi menjadi 3 peran yaitu : • Pemilik (Owner) • Kelompok (Group) • Lainnya (Others) Setiap peran dapat melakukan 3 bentuk operasi yaitu : 33



• Pada File R (Read) Ijin untukmembaca W (Write) Ijin untuk mengubah / membuat X (Execute) Ijin untuk menjalankan program • Pada Direktori R (Read) Ijin untukmembaca daftar file dalam direktori W (Write) Ijin untuk mengubah/membuat file di direktori X (Execute) Ijin untuk masuk ke direktori (cd) Pemilik File/Direktori dapat mengubah ijin akses sebagai berikut : -rwxrwxrwx 1 student test 1639 Oct 31 20:19 file



other group user Format untuk mengubah ijin akses chmod [ugoa] [= + -] [rwx] File(s) chmod [ugoa] [= + -] [rwx] Dir(s)



dimana



u = user (pemilik) g = group (kelompok) o = others (lainnya) a = al



Format lain dari chmod adalah menggunakan bilangan octal sebagai berikut r 4



w 2



x 1



=



7



USER MASK Untuk menentukan ijin akses awal pada saat file atau direktori dibuat digunakan perintah umask. Untuk menghitung nilai default melalui umask pada file, maka dapat dilakukan kalkulasi sebagai berikut : Kreasi file (biasa) Nilai umask



666 022 ------- 644



Kreasi direktori Nilai umask



777 022 ------- 755



34



SYMBOLIC LINK Link adalah sebuah teknik untuk memberikan lebih dari satu nama file dengan data yang sama. Bila file asli dihapus, maka data yang baru juga terhapus. Format dari Link : ln fileAsli fileDuplikat



Symbolic Link diperlukan bila file tersebut di “link” dengan direktori /file yang berada pada partisi yang berbeda. Tipe file menjadi l (link) dan file tersebut menunjuk ke tempat asal. Format : ln –s /FULLPATH/fileAsli /FULLPATH/fileDuplikat



C. LANGKAH – LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai root. 3. Buatlah user baru studentOS dengan group yang sama dengan mahasiswa. 4. Logout dan login kembali sebagai mahasiswa. 5. Gunakan perintah ps dan procinfo untuk melihat status dan nomor proses pada direktori /proc. 6. Gunakan perintah ls untuk melihat tipe file. 7. Gunakan perintah-perintah direktori : pwd, cd, mkdir dan rmdir. 8. Gunakan perintah-perintah ijin akses : id, grep, chmod, chown, chgrp. 9. Gunakan perintah user mask : umask. 10. Gunakan perintah link ln. D. PERCOBAAN Percobaan 1 : Melihat ps (process status) dan status direktori /proc 1. ps menampilkan PID (Process ID) untuk shel dan proses ps itu sendiri $ ps $ ls -l /proc/[Nomor PID]



2. Melihat status proses $ cat /proc/[Nomor PID]/status



3. Melihat nilai pada variabel /proc $ ls /proc/sys/net/ipv4



4. Melihat isi salah satu variabel $ cat /proc/sys/net/ipv4/ip_forward $ echo 1 > /proc/sys/net/ipv4/ip_forward (tidak bekerja)



5. Mengubah kernel variable harus dengan ijin akses root. Menjadi root dengan utilitas su (subtitute user) 35



$ su Password: # echo 1 > /proc/sys/net/ipv4/ip_forward # exit



6. Kembali ke user semula dan tampilkan variable kernel dengan nilai baru $ cat



/proc/sys/net/ipv4/ip_forward



Percobaan 2 : Melihat tipe file 1. Melihat block device (peralatan I/O) $ ls -l /dev/fd0



2. Melihat character device (peralatan I/O) $ ls -l /dev/ttys0



3. Melihat named pipe (FIFO) $ ls -l /dev/syslog



4. Melihat direktori $ ls -ld /dev



5. Melihat ordinary file $ ls -l /etc/passwd



Percobaan 3 : Direktori 1. Melihat direktori HOME $ pwd $ echo $HOME



2. Melihat direktori aktual dan parent direktori $ $ $ $ $



pwd cd . pwd cd .. pwd



3. Membuat satu direktori, lebih dari satu direktori atau sub direktori $ $ $ $ $



pwd mkdir A B C A/D A/E B/F A/D/A ls -l ls -l A ls -l A/D



4. Menghapus satu atau lebih direktori hanya dapat dilakukan pada direktori kosong dan hanya dapat dihapus oleh pemiliknya kecuali bila diberikan ijin aksesnya 36



$ $ $ $



rmdir ls -l rmdir ls -l



B (Terdapat pesan error) B B/F B B



5. Navigasi direktori dengan instruksi cd untuk pindah dari satu direktori ke direktori lain. $ $ $ $ $ $ $ $ $ $



pwd ls -l cd A pwd cd .. pwd cd /home/mahasiswa/C pwd cd pwd



Percobaan 4 : Ijin Akses 1. Melihat identitas diri melalui etc/passwd atau etc/group $ id $ grep mahasiswa /etc/passwd $ grep [Nomor group id] etc/group



2. Memeriksa direktori home $ ls -ld /home/mahasiswa



3. Mengubah Ijin akses (chmod) $ $ $ $ $ $ $ $ $ $ $ $ $



touch ls -l chmod chmod chmod ls -l chmod chmod ls -l chmod chmod chmod ls -l



f1 f2 f3 u+x f1 g=w f1 o-r f1 a=x f2 u+x,g-r,o=w f3 751 f1 624 f2 430 f3



Percobaan 5 : Simbolic Link 1. Link file $ $ $ $ $ $



echo "Hallo apa khabar" > halo.txt ls -l ln halo.txt z ls -l cat z mkdir mydir



37



$ ln z mydir/halo.juga $ cat mydir/halo.juga $ ls -l mydir



2. Symbolic Link file $ $ $ $ $



mount ln /home/mahasiswa/z /tmp/halo.txt ln -s /home/mahasiswa/z /tmp/halo.txt ls -l /tmp/halo.txt cat /tmp/halo.txt



E. Latihan 1. Tampilkan PID dari proses yang berjalan dengan option –ax dan perhatikan prosesproses yang ditampilkan. 2. Lihat peralatan I/O, character device, named pipe yang ada pada system komputer. 3. Buatlah sub direktori januari, pebruari dan maret sekaligus pada direktori latihan5. 4. Buatlah file dataku yang berisi nama, nrp dan alamat anda pada sub direktori januari dan copy-kan file tersebut ke sub direktori pebruari dan maret. 5. Ubahlah ijin akses file dataku pada sub direktori januari sehingga group dan others dapat melakukan write. 6. Ubahlah ijin akses file dataku pada sub direktori pebruari sehingga user dapat melakukan baik write, read maupun execute, tetapi group dan others hanya bisa read dan execute. 7. Ubahlah ijin akses file dataku pada sub direktori maret sehingga semua dapat melakukan write, read dan execute. 8. Hapuslah direktori maret. 9. Ubahlah kepemilikan file dataku pada sub direktori januari menjadi milik studentOS. 10. Ubahkan kepemilikan sub direktori pebruari sehingga user dan group hanya dapat melakukan read, dan cobalah untuk membuat direktori baru haha pada sub direktori pebruari. 11. Modifikasi umask dari file dataku pada sub direktori januari menjadi 027 dan berapakan nilai default-nya ? 12. Buatlah link dari file dataku ke file dataku.ini dan file dataku.juga dan dengan perintah list perhatikan berapa link yang terjadi ?



38



Praktikum 5



Proses I/O A. T U J U A N 1. Mengenal konsep proses I/O dan redirection 2. Memahami standar input, output dan error 3. Menggunakan notasi output, append dan here document 4. Mengenal konsep PIPE dan filter B. DASAR TEORI PROSES I/O Sebuah proses memerlukan Input dan Output.



Input



Proses



Output



Instruksi (command) yang diberikan pada Linux melalui Shel disebut sebagai eksekusi program yang selanjutnya disebut proses. Setiap kali instruksi diberikan, maka Linux kernel akan menciptakan sebuah proses dengan memberikan nomor PID (Process Identity). Proses dalam Linux selalu membutuhkan Input dan menghasilkan suatu Output. Dalam konteks Linux input/output adalah : • Keyboard (input) • Layar (output) • Files • Struktur data kernel • Peralatan I/O lainnya (misalnya Network) FILE DESCRIPTOR Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan melalui angka yang dimulai dari 0, 1, 2 dan seterusnya. Tiga buah file descriptor standar yang lalu diciptakan oleh proses adalah : • 0 = keyboard (standar input) • 1 = layar (standar output) • 2 = layar (standar error)



1 Input (keyboard)



0



Output (monitor)



Proses 2



39



Linux tidak membedakan antara peralatan hardware dan file, Linux memanipulasi peralatan hardware sama dengan file. PEMBELOKAN (REDIRECTION) Pembelokan dilakukan untuk standard input, output dan error, yaitu untuk mengalihkan file descriptor dari 0, 1 dan 2. Simbol untuk pembelokan adalah : 0< atau < pengganti standard input 1> atau > pengganti standard output 2> PIPA (PIPELINE) Mekanisme pipa digunakan sebagai alat komunikasi antar proses. Input  Proses1  Output = Input  Proses2  Output Proses 1 menghasilkan output yang selanjutnya digunakan sebagai input oleh Proses 2. Hubungan output input ini dinamakan pipa, yang menghubngkan Proses 1 dengan Proses2 dan dinyatakan dengan symbol “|”. Proses1



|



Proses2



FILTER Filter adalah utilitas Linux yang dapat memproses standard input (dari keyboard) dan menampilkan hasilnya pada standard output (layar). Contoh filter adalah cat, sort, grep, pr, head, tail, paste dan lainnya. Pada sebuah rangkaian pipa : P1 | P2 | P3 ……. | Pn-1 | Pn Maka P2 sampai dengan Pn-1 mutlak harus utilitas Linux yang berfungsi sebagai filter. P1 (awal) dan Pn (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya who, ls, ps, lp, lpr, mail dan lainnya. Beberapa perintah Linux yang digunakan untuk proses penyaringan antara lain : •Perintah grep Digunakan untuk menyaring masukannya dan menampilkan baris-baris yang hanya mengandung pola yang ditentukan. Pola ini disebut regular expression. •Perintah wc Digunakan untuk menghitung jumlah baris, kata dan karakter dari baris-baris masukan yang diberikan kepadanya. Untuk mengetahui berapa baris gunakan option –l, untuk mengetahui berapa kata, gunakan option –w dan untuk mengetahui berapa karakter, gunakan option –c. Jika salah satu option tidak digunakan, maka tampilannya adalah jumlah baris, jumlah kata dan jumlah karakter. •Perintah sort Digunakan untuk mengurutkan masukannya berdasarkan urutan nomor ASCI dari karakter. 40



•Perintah cut Digunakan untuk mengambil kolom tertentu dari baris-baris masukannya, yang ditentukan pada option –c. •Perintah uniq Digunakan untuk menghilangkan baris-baris berurutan yang mengalami duplikasi, biasanya digabungkan dalam pipeline dengan sort. C. LANGKAH – LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai root. 3. Gunakan file descriptor : standard output, standard input dan standard error. 4. Gunakan redirection untuk membelokkan standard output, standard input dan standard error. 5. Gunakan notasi 2>&1, notasi 1>&2 (atau >&2), notasi >>, notasi here document ( myerror.txt # cat myerror.txt



Logout dari root dan login kembali sebagai mahasiswa 4. Notasi 2>&1 : pembelokan standar error (2>) adalah identik dengan file descriptor 1. $ find /var/spool/cron –print (Terdapat pesan error) $ find /var/spool/cron –print 2> out.txt $ cat out.txt



5. Notasi 1>&2 (atau >&2) : pembelokan standar output adalah sama dengan file descriptor 2 yaitu standar error $ find /var/spool/cron –print 2> outx.txt 1>&2 $ cat outx.txt



6. Notasi >> (append) $ $ $ $ $ $



echo “kata echo “kata echo “kata cat surat echo “kata cat surat



pertama” > surat kedua” >> surat ketiga” >> surat keempat” > surat



7. Notasi here document (’. Instruksi export diperlukan dengan parameter nama variable tersebut, agar perubahan variable PS1 dikenal oleh semua shell PS1=’> ‘ export PS1



50



b. Eksperimen hasil PS1 : $ PS1=“\! > “ 69 > PS1=”\d > “ Mon Sep 23 > PS1=”\t > “ 10:10:20 > PS1=”Saya=\u > “ Saya=mahasiswa > PS1=”\w >” ~ > PS1=\h >”



3. Logout Edit file .bash_logout, tampilkan pesan dan tahan selama 5 detik, sebelum eksekusi logout Echo “Terima kasih atas sesi yang diberikan” Sleep 5 clear



4. Bash script a. Buat 3 buah script p1.sh, p2.sh, p3.sh dengan isi masing-masing : p1.sh #! /bin/bash echo “Program p1” ls –l p2.sh #! /bin/bash echo “Program p2” who p3.sh #! /bin/bash echo “Program p3” ps x



b. Jalankan script tersebut sebagai berikut : $ $ $ $



./p1.sh ; ./p3.sh ; ./p2.sh ./p1.sh & ./p1.sh $ ./p2.sh & ./p3.sh & ( ./p1.sh ; ./p3.sh ) &



5. Jobs a. Buat shell-script yang melakukan loop dengan nama pwaktu.sh, setiap 10 detik, kemudian menyimpan tanggal dan jam pada file hasil. #!/bin/bash while [ true ] do date >> hasil sleep 10 done



51



b. Jalankan sebagai background; kemudian jalankan satu program (utilitas find) di background sebagai berikut : $ jobs $ find / -print > files 2>/dev/null & $ jobs



c. Jadikan program ke 1 sebagai foreground, tekan ^Z dan kembalikan program tersebut ke background $ fg %1 $ bg



d. Stop program background dengan utilitas kil $ ps x $ kill [Nomor PID]



6. History a. Ganti nilai HISTSIZE dari 1000 menjadi 20 $ HISTSIZE=20 $ h



b. Gunakan fasilitas history dengan mengedit instruksi baris ke 5 dari instruksi yang terakhir dilakukan $ !-5



c. Ulangi instruksi yang terakhir. Gunakan juga ^P dan ^N untuk bernavigasi pada history bufer $ !!



d. Ulangi instruksi pada history bufer nomor 150 $ !150



e. Ulangi instruksi dengan prefix “ls” $ !ls



52



Praktikum 7



Manajemen Proses A. T U J U A N 1. Mengenal konsep proses di Linux 2. Mengerti konsep sinyal dan bagaimana cara mengelola sinyal tersebut B. DASAR TEORI KONSEP PROSES DI LINUX Setiap kali instruksi diberikan pada Linux shell, maka kernel akan menciptakan sebuah prosesid. Proses ini disebut juga dengan terminology Unix sebagai sebuah Job. Proses Id (PID) dimulai dari 0, yaitu proses INIT, kemudian dikuti oleh proses berikutnya (terdaftar pada /etc/initab). Beberapa tipe proses : • Foreground Proses yang diciptakan oleh pemakai langsung pada terminal (interaktif, dialog) • Batch Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu). Proses Batch tidak diasosiasikan (berinteraksi) dengan terminal. • Daemon Proses yang menunggu permintaan (request) dari proses lainnya dan menjalankan tugas sesuai dengan permintaan tersebut. Bila tidak ada request, maka program ini akan berada dalam kondisi “idle” dan tidak menggunakan waktu hitung CPU. Umumnya nama proses daemon di UNIX berakhiran d, misalnya inetd, named, popd dl SINYAL Proses dapat mengirim dan menerima sinyal dari dan ke proses lainnya. Proses mengirim sinyal melalui instruksi “kill” dengan format kill [-nomor sinyal] PID



Nomor sinyal : 1 s/d maksimum nomor sinyal yang didefinisikan system Standar nomor sinyal yang terpenting adalah : NoSinyal



Nama



Deskripsi



1



SIGHUP



Hangup, sinyal dikirim bila proses terputus, misalnya melaluiputusnya hubungan modem



2



SIGINT



Sinyal interupt, melalui ^C 53



3



SIGQUIT



Sinyal Quit,melalui ^\



9



SIGKILL



Sinyal Kill, menghentikan proses



15



SIGTERM



Sinyal terminasi software



MENGIRIM SINYAL Mengirim sinyal adalah satu alat komunikasi antar proses, yaitu memberitahukan proses yang sedang berjalan bahwa ada sesuatu yang harus dikendalikan. Berdasarkan sinyal yang dikirim ini maka proses dapat bereaksi dan administrator/programmer dapat menentukan reaksi tersebut. Mengirim sinyal menggunakan instruksi kill [-nomor sinyal] PID



Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui terlebih dahulu. C. LANGKAH – LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai mahasiswa. 3. Gunakan instruksi status proses : ps. 4. Gunakan instruksi untuk mengelola sinyal : kill, trap, nohup D. PERCOBAAN Percobaan 1 : Status Proses 1. Instruksi ps (process status) digunakan untuk melihat kondisi proses yang ada. PID adalah Nomor Identitas Proses, TTY adalah nama terminal dimana proses tersebut aktif, STAT berisi S (Sleeping) dan R (Running), COMMAND merupakan instruksi yang digunakan. $ ps



2. Untuk melihat factor/elemen lainnya, gunakan option –u (user). %CPU adalah presentasi CPU time yang digunakan oleh proses tersebut, %MEM adalah presentasi system memori yang digunakan proses, SIZE adalah jumlah memori yang digunakan, RSS (Real System Storage) adalah jumlah memori yang digunakan, START adalah kapan proses tersebut diaktifkan $ ps -u



3. Mencari proses yang spesifik pemakai. Proses diatas hanya terbatas pada proses milik pemakai, dimana pemakai teresbut melakukan login $ ps –u mahasiswa



4. Mencari proses lainnya gunakan option a (al) dan au (al user) $ ps –a $ ps –au



54



Percobaan 2 : Sinyal 1. Membuat shell script dengan nama loop.sh $ vi loop.sh ## Sebuah shell script : loop.sh while [ 1 ] do echo “.\c” sleep 10 done



2. Eksekusi file loop.sh sebagai background $ chmod +x loop.sh $ ./loop.sh &



( tunggu beberapa saat…) 3. Melihat proses id $ ps



4. Menghentikan proses. Nomor 15 (SIGTERM) merupakan default $ kill –15 [nomor PID] atau $ kill [nomor PID]



5. Menghentikan proses secara mutlak $ kill –9 [nomor PID]



Percobaan 3 : Mengelola sinyal 1. Membuat file prog.sh $ vi prog.sh #!/bin/sh echo “Program berjalan …” while : do echo “X” sleep 20 done



2. Jalankan program tersebut. Karena program melakukan looping, maka stop dengan mengirim sinyal interupt (^C) $ chmod +x prog.sh $ ./prog.sh



3. Jalankan program tersebut sebagai background. Catat nomor PID proses, tekan Enter untuk ke foreground dan periksa melalui instruksi ps $ ./prog.sh & $ ps



55



4. Kirimkan sinyal terminasi sebagai berikut $ kill [Nomor PID]



5. Ubahlah program prog.sh dengan instruksi trap untuk menangkap sinyal yang dikirim $ vi prog.sh #!/bin/sh trap “ “ 1 2 3 15 echo “Program berjalan …” while : do echo “X” sleep 20 done



6. Jalankan program tersebut sebagai background. Coba lakukan kill dengan nomor PID proses tersebut. $ $ $ $ $



./prog.sh & kill [Nomor PID] atau kill –1 [Nomor PID] atau kill –2 [Nomor PID] atau kill –15 [Nomor PID]



7. Perintah kil diatas tidak akan menghentikan proses karena dihalangi dengan perintah trap. Cobalah menggunakan Nomor sinyal 9 $ kill –9 [Nomor PID]



E. Latihan 1. Login sebagai studentOS dan lihat status proses, perhatikan kolom keluaran ps –au sebagai berikut : a. b. c. d. e.



Sebutkan nama-nama proses yang bukan root Tulis PID dan COMMAND dari proses yang paling banyak menggunakan CPU time Sebutkan buyut proses dan PID dari proses tersebut Sebutkan beberapa proses daemon Pada prompt login lakukan hal-hal sebagai berikut : $ $ $ $ $ $



csh who bash ls sh ps



Sebutkan PID yang paling besar dan kemudian buat urut-urutan proses sampai ke PPID =1. Lakukan ^d atau exit atau logout sampai kembali muncul login: prompt 2. Modifikasi program prog.sh sebagai berikut : $ vi prog.sh #!/bin/sh



56



trap “echo Hello Goodbye ; exit 0 “ echo “Program berjalan …” while : do echo “X” sleep 20 done



1



2



3



15



Jalankan program tersebut sebagai background. Coba lakukan kil dengan nomor sinyal 1, 2, 3 dan 15 pada nomor PID proses tersebut. Apakah proses berhenti atau tetap berjalan ? Nomor sinyal berapa yang digunakan untuk menghentikan proses diatas ? 3. Modifikasi program myjob.sh. Buatlah trap sedemikian rupa, sehingga bila proses tersebut dihentikan (kil), otomatis file berkas akan terhapus. $ vi myjob.sh #!/bin/sh trap ______________________________ i=1 while : do find / -print > berkas sort berkas –o hasil echo “Proses selesai pada ‘date’” >> proses.log sleep 60 done



$ kill –15 [Nomor PID] $ ls -l



Maka file berkas tidak ada lagi !



57



Praktikum 8



Utilitas Linux A. T U J U A N 1. Mengenal utilitas dasar Linux dan Unix 2. Merangkaikan utilitas dengan pipe 3. Mempelajari konsep delimiter B. DASAR TEORI SORTIR Sortir dengan utilitas sort akan menyusun data berdasarkan criteria. Utilitas sort dilakukan dengan format sort option file(s) Adapun option yang dapat diberikan : • -r (reserve) yaitu menyusun terbalik dari Z ke A • ±f.c yaitu penyusunan berdasarkan pointer yang diperintahkan. f adalah nomor field, c adalah nomor karakter Contoh : +2 berarti pointer berada setelah 2 field +2.3 berarti pointer berada setelah 2 field + 3 karakter -2 berarti pointer berada sebelum 2 field -2.5 berati pointer berada sebelum 2 field + 5 karakter • -n yaitu komparasi untuk menyusun berdasarkan nilai numeric. • -t yaitu sebagai pemberitahuan suatu pemisah (delimiter) dari suatu table. PREFORMAT Instruksi pr (preformat) digunakan untuk menyusun data sebelum dicetak ke printer. Instruksi pr akan menyiapkan header, nomor halaman dan lainnya. Opsi untuk instruksi pr antara lain : • • • • •



-n : menampilkan nomor baris -Nr : menampilkan nomor halaman dimulai dengan Nr -t : tidak menggunakan header atau trailer -h teks : menampilkan teks sebagai judul -l jml : jumlah baris dalam jml, default adalah 66 baris



WORD COUNT Utilitas wc (word count) digunakan untuk



58



• -c : menghitung jumlah karakter (chars) • -w : menghitung jumlah kata (words) • -l : menghitung jumlah baris (lines) Utilitas wc banyak digunakan untuk pemrograman shel, terutama untuk sysadmin, misalnya melihat jumlah pemakai yang terdaftar di etc/passwd atau melihat jumlah group dalam system. TRANSLATE Utilitas tr (translate) mengubah pengulangan karakter menjadi karakter yang lain. Utilitas tr akan membaca input dari standard input, kemudian mengubahnya dari satu pola ke karakter yang lain. Opsi untuk instruksi tr antara lain : • -s : menghapus pengulangan (squeeze repeats) • -d : menghapus karakter tertentu MEMOTONG KARAKTER Utilitas cut (memotong karakter) digunakan untuk memotong karakter dari sebuah kata dalam baris. Opsi untuk instruksi cut antara lain : • -f : memenggal berdasarkan posisi field. Opsi in hanya akan berhasil bila antara kata dipisahkan dengan delimiter (separator) yaitu tabulator. Bila delimiter bukan tab, maka opsi –d harus ditambahkan sebagai info tentang delimiter yang dimaksud. • -c : memenggal berdasarkan posisi karakter. HEAD DAN TAIL Utilitas head akan menampilkan isi file dari awal hingga akhir, sesuai dengan opsi yang diberikan. Utilitas tail akan menampilkan isi file dari akhir hingga awal, sesuai dengan opsi yang diberikan. Utilitas ini sangat bermanfaat terutama untuk menampilkan awal atau akhir dari satu bagian file yang besar. FIND Utilitas find digunakan untuk menemukan file dengan criteria tertentu. Utilitas ini banyak digunakan untuk melokalisasi file dan kepentingan backup. Sintak dari utilitas find : find [daftar direktori] [ekspresi] Opsi dari utilitas find : • -print : menampilkan hasil pencarian ke standard output • -name [Namafile] : mencari file dengan nama yang sama dengan [Namafile] • -type [Tipefile] : mencari file dengan tipe file seperti ordinary (-), directory (d), pipe, socket (s), block device (b), character device (c) dl • -links ±n : mencari file dengan jumlah link sama dengan n, lebih besar atau lebih kecil dari n • -user [NamaUser] : mencari file dengan nama user sama dengan nama yang terdafter di /etc/passwd 59



• -group [NamaGroup] : mencari file dengan nama group yang sama dengan nama yang terdaftar di /etc/group • -perm [Mode] : mencari file dengan ijin akses tertentu • -inum [Nomor] : mencari file dengan nomor inode tertentu. Setiap file mempunyai nomor inode yang dapa dilihat dengan opsi –I pada instruksi lss • -size ±n[c|k] : mencari file dengan jumlah karakter (c) tertentu atau dalam kilobyte (b) • -atime ±n : mencari file yang terakhir diakses pada jumlah hari tertentu • -mtime ±n : mencari file yang terakhir dimodifikasi pada jumlah hari tertentu • -newer [NamaFile] : mencari file yang berusia lebih baru dari [NamaFile] • -exec [command]\ : bila criteria terpenuhi, maka command akan dieksekusi • -ok [command]\ : sama dengan exec, kecuali find akan memberikan pertanyaan yes atau no untuk mengeksekusi command tersebut. • -depth : mengolah subdirektori terlebih dahulu • -nouser : mencari file yang pemiliknya tidak lagi terdaftar pada /etc/paswd • -nogroup : mencari file yang groupnya tidak lagi terdaftar pada /etc/group C. LANGKAH – LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai mahasiswa. 3. Gunakan utilitas linux : sort, pr, wc, tr, cut, head, tail, find. 4. Gunakan pipe dan delimiter pada utilitas tersebut. D. PERCOBAAN Percobaan 1 : Sortir 1. Buatlah file mobil.db sebagai berikut (note: jangan menggunakan tombol tab, tapi spasi, untuk memisahkan kolom) $ cat > mobil.db Badu Honda Hasan Toyota Adam BMW Zoros Toyota Stefan Peugeot Andriane Opel



Prelude Kijang 320i Kijang 405 Blazer



150.000.000 125.450.000 191.000.000 116.000.000 288.654.000 186.500.000



Ctrl-D (^D)



2. Lakukan proses sorting pada file mobil.db $ sort mobil.db



3. Lakukan proses sorting dengan susunan terbalik $ sort –r mobil.db



4. Lakukan proses sorting berdasarkan karakter 2 pada field pertama $ sort +0.1 mobil.db



5. Lakukan proses sorting berdasarkan manufaktur mobil 60



$ sort +1 mobil.db



6. Lakukan proses sorting berdasarkan manufaktur dan nama pemilik mobil $ sort +1 –2 mobil.db



7. Lakukan proses sorting berdasarkan nilai numeric (yaitu field ke 4) $ sort –n +3 mobil.db



8. Lakukan proses sorting berdasarkan harga termahal $ sort –nr +3 mobil.db



Percobaan 2 : Separator 1. Sebuah table umumnya dipisahkan dengan spasi atau tabulator, tetapi bisa juga dengan menggunakan tanda koma untuk memisahkan kolom $ cat > peserta Anjas Asmara,NT Full Package,Jakarta Shamir Gwindani,Unix Advanced,Bandung Shakila,ASP.NET,Yogya Agustin Rosa,VB.NET,Bali Imelda Pora,Cisco Routing,Jakarta Sabar Sobar,Linux Network,Bandung ^D



2. Lakukan prosees sorting $ sort peserta



3. Menyusun berdasarkan kota, hal ini tidak dapat dilakukan. Agar sort mengerti pemisah (delimiter) adalah koma, maka harus diberikan opsi -t $ sort +2 peserta $ sort –t, +2 peserta



Percobaan 3 : Preformat $ pr mobil.db|more $ pr –h “Daftar Pemilik Mobil” –n mobil.db|more



Percobaan 4 : Word Count $ $ $ $



wc wc wc wc



mobil.db –l mobil.db –w mobil.db –c mobil.db



Percobaan 5 : Paste untuk menggabungkan 2 atau lebih file secara vertikal $ cat > fileA aaaaa bbbbb ccccc



61



$ cat > file1 11111 22222 33333 44444 55555 $ paste fileA file1 $ paste fileA file1 > fileX



Percobaan 6 : Translate 1. Mengubah huruf a yang dinputkan dari keyboard menjadi X $ tr ‘a’ ‘X’ apa XpX Khabar khXbXr ^D



2. Mengubah semua huruf kecil menjadi huruf besar dan sebaliknya $ cat mobil.db|tr ‘[a-z]’ ‘[A-Z]’ $ cat mobil.db|tr ‘[A-Z]’ ‘[a-z]’



3. Menghapus huruf a yang berulang dan diganti dengan 1 huruf a saja $ tr –s ‘a’ ‘a’ apaa khaaaaaabaaar apa khabar



4. Menghapus spasi pada file mobil.db $ cat mobil.db | tr –s ‘ ‘ ‘ ‘



5. Enkripsi file sederhana dengan mengacak huruf $ cat > to-pacar Kepada pacar saya, Jangan lupa nonton di plasa tunjungan Jam 5 ketemu di rumah saya ya Pacar kamu ^D $ cat to-pacar | tr ‘[A-M] [N-Z] [a-m] [n-z]’ ‘[N-Z] [AM] [n-z] [a-m]’ > secret-mail $ cat secret-mail



6. Mengembalikan enkripsi file dengan cara yang sama secara terbalik $ cat secret-mail | tr ‘[N-Z] [A-M] [n-z] [a-m]’ ‘[A-M] [N-Z] [a-m] [n-z]’



7. Menghilangkan karakter tertentu $ cat to-pacar | tr –d ‘a’ $ cat to-pacar | tr –d ‘\n’



62



Percobaan 7 : Memotong karakter 1. Mengambil field ke 2 dari file mobil.db dengan terlebih dahulu menghilangkan pengulangan spasi terlebih dahulu $ cat mobil.db|tr –s ‘ ‘ ‘ ‘ $ cat mobil.db|tr –s ‘ ‘ ‘ ‘|cut –d’ ‘ –f2



2. Mengurut output $ cat mobil.db|tr –s ‘ ‘ ‘ ‘|cut –d’ ‘ –f2|sort



3. Menghilangkan baris duplikasi $ cat mobil.db|tr –s ‘ ‘ ‘ ‘|cut –d’ ‘ –f2|sort|uniq



4. Memotong karakter posisi ke 3 sampai dengan posisi ke 5 dari nama pemilik mobil $ cut –c3-5 mobil.db



5. Kombinasi memotong field dengan koma $ cat mobil.db|tr –s ‘ ‘ ‘ ‘|cut –d’ ‘ –f2,4



6. Menggunakan Tab yang diselipkan sebagai delimiter untuk tampilan lebih baik $ cat mobil.db|tr –s ‘ ‘ ‘ ‘|cut –d’ ‘ –f2,4|tr ‘ ‘ ‘\t’



Percobaan 8 : Head dan Tail 1. Mengambil 3 baris dari awal (head) dan 3 baris terakhir (tail) $ cat mobil.db $ head -3 mobil.db $ tail –3 mobil.db



Percobaan 9 : Find 1. Menampilkan semua file yang ada di curent direktori $ find . –print



2. Mencari file paswd di direktori /etc, /lib dan /usr/bin $ find /etc /lib /usr/bin –name passwd



3. Mencari file group pada root direktori. Karena bukan superuser, banyak ijin akses ditolak. Untuk membuangnya gunakan descriptor 2> $ find / –name group $ find / –name group 2>/dev/null



4. Mencari file dengan tipe pipe $ find / –type p 2>/dev/null



63



5. Mencari socket di system file $ find / –type s 2>/dev/null



6. Mencari jumlah link 6 $ find /lib –links 6



7. Mencari nama user mahasiswa $ find / -user mahasiswa 2>/dev/null



8. Mencari nama group mahasiswa $ find /tmp -group mahasiswa 2>/dev/null



9. Mencari ijin akses 777 pada root direktori $ find / -perm 777 2>/dev/null



10. Mencari file yang berukuran 4K, lebih besar dari 4K dan lebih kecil dari 4K $ find . –size 4k $ find . –size +4k $ find . –size -4k



11. Mencari file yang terakhir diakses pada satu hari sebelumnya $ find /home –atime -1



12. Mencari file yang terakhir dimodifikasi dalam satu hari $ find /home –mtime +1



13. Mencari file yang lebih baru dari file x $ $ $ $



touch x find . –newer x touch y find . –newer c



14. Melihat isi direktori bila file x ditemukan. Tanda {} merepresentasikan nama file yang ditemukan $ find –name x $ find –name x –exec ls –l {} \;



15. Menghapus file x bila ditemukan $ find –name x –ok rm {} \;



E. Latihan 1. Jelaskan tujuan dari perintah berikut : 64



$ wc –l /etc/passwd $ wc –l /etc/group



2. Buatlah file status dan gabungkan file ini dengan mobil $ cat > status dijual dijual -



3. Gunakan utilitas translate untuk mengganti seluruh huruf hidup dari teks nyanyian berikut dengan huruf o semua $ cat > burung burung kakak tua hinggap di jendela nenek sudah tua giginya tinggal dua ^D



4. Periksa /etc/paswd dan ambil field ke 5 dengan perintah cut. Jangan lupa mencantumkan delimiter yang berupa tanda ‘:’. 5. Apa maksud dari perintah berikut : who | cut –c 1|sort|uniq|wc



65



Praktikum 9



Pemrograman Shell (1) A. T U J U A N 1. 2. 3. 4. 5.



Mengetahui variable dan operasi assignment. Menggunakan struktur if – fi Menggunakan struktur case – esac. Loop dengan while, until, for, do while. Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.



B. DASAR TEORI VARIABLE DAN OPERASI ASSIGNMENT Variable merupakan tempat menyimpan data yang akan diproses. Operasi pemasukan data ke dalam variable dinamakan dengan assignment. Proses assignment menggunakan tanda “=”. Kita dapat menggunakan perintah let sebagai pernyataan perintah untuk melakukan proses assignment. Perintah let memungkinkan kita menjadi lebih leluasa untuk menyatakan perintah assignment. PERINTAH expr DAN let Perintah expr merupakan perintah yang digunakan untuk melakukan suatu evaluasi suatu ekspresi (pernyataan), umumnya operasi pengolahan data, yang dapat melibatkan operator di dalamnya. Perintah let merupakan perintah yang digunakan untuk melakukan proses assignment hasil suatu ekspresi operasi, aritmatika, string, dan operasi lainnyake dalam variable. Berbeda dengan perintah expr yang melakukan evaluasi dan menampilkan hasilnya ke standar output, hasilnya tidak disimpan dalam variable, sedangkan perintah let akan disimpan ke dalam variable, tetapi hasilnya tidak ditampilkan ke standar output KONSTRUKSI IF Konstruksi pemilihan merupakan suatu blok urutan perintah yang dibentuk dengan menggunakan perintah yang diawali dengan if dan diakhiri dengan fi. Pemeriksaan suatu kondisi akan menghasilkan benar atau salah, bila kondisi terpenuhi (bernilai benar) maka seurutan perintah yang mengikuti if ini akan dikerjakan. if kondisi then perintah fi Nilai suatu kondisi bisa jadi mengakibatkan ada dua alternatif urutan perintah yang harus dikerjakan, yaitu perintah jika kondisi benar dan perintah jika kondisi salah. if kondisi 66



then perintah jika kondisi benar else perintah jika kondisi salah fi Jika hasil pemeriksaan memiliki lebih dari dua kondisi maka kita harus membuat pemeriksaan yang kedua di dalam blok else, demikian juga apabila ada kondisi lain yang mungkin ada, pemeriksaan kondisi yang baru tersebut dilakukan di dalam else dariblok if yang ada dalam else yang pertama. if kondisi then if kondisi then perintah else perintah fi else if kondisi then perintah else perintah fi fi Dalam pemrograman shell disediakan bentuk yang menyederhanakan proses ini, dengan menggunakan elif. if kondisi then perintah elif kondisi then perintah else perintah fi KONSTRUKSI CASE Case digunakan untuk menyederhanakan pemakaian if yang berantai, sehingga dengan case, kondisi dapat dikelompokkan secara logis dengan lebih jelas dan mudah untuk ditulis. case variable in match1) instruksi1.1 instruksi1.2 ……………… ;; 67



match2) instruksi2.1 instruksi2.2 ……………… ;; *) instruksi3.1 instruksi3.2 ……………… ;; esac Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan ;. Pada akhir pilihan yaitu *) yang berarti adalah “default”, bila kondisi tidak memenuhi pola sebelumnya KONSTRUKSI FOR For digunakan untuk pengulangan dengan menggunakan var yang pada setiap pengulangan akan diganti dengan nilai yang berada pada daftar (list). for var in str1 str2 …..strn do instruksi1 instruksi2 ……………… done KONSTRUKSI WHILE While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan suatu kondisi. Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan. Loop akan berhenti, bila kondisi FALSSE, atau program keluar dari blok while melalui exit atau break. while kondisi do instruksi1 instruksi2 ……………… done INSTRUKSI DUMMY Instruksi dummy adalah instruksi yang tidak melakukan apa-apa, namun instruksi ini memberikan status exit 0 (TRUE). Oleh karena itu, instruksi dummy dapat digunakan sebagai kondisi forever pada loop (misalnya while). Simbol instruksi dummy adalah  : FUNGSI Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr, 68



atau nilai 0 sebagai default. Membuat fungsi diawali dengan nama fungsi, parameter, kemudian blok program yang dinyatakan dalam { … }. Contoh : F1( ) { …….. …….. return 1 } Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama variable yang sam adi luar fungsi, sehingga tidak terjadi isi variable berubah. C. LANGKAH – LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai mahasiswa. 3. Lakukan operasi assignment. 4. Gunakan instruksi if - fi 5. Gunakan instruksi case-esac. 6. Gunakan instruksi looping for-do-done, while-do-done, until, dummy. 7. Buatlah fungsi dengan variable local dan global. D. PERCOBAAN Percobaan 1 : Variable dan operasi assignment 1. Ketik variable-variable ini setelah prompt $NAMA=”Ferry” $ANGKA=100 $NAMALENGKAP='Ferry Gustiawan' $SIAPASAJA=`who`



2. Assignment dengan Let. Ketik assignment di bawah ini setelah prompt $let $let $let $let $let



a=10 “a=10” a=5+6 a= 5 + 6 (salah) “a=5+6



3. Variable read only. Ketik setelah prompt $NAMA=”Faiz” $readonly NAMA $echo $NAMA $NAMA=”Muhammad”



69



Percobaan 2 : Menampilkan isi variable 1. Buatlah file prog01.sh dengan editor vi $vi prog01.sh NAMA=”FASILKOM” KODEPOS=30256 SIAPA_SAJA=`who` echo “isi variable NAMA” $NAMA echo “isi variable KODEPOS” $KODEPOS echo “isi variable SIAPA_SAJA” $SIAPA_SAJA



2. Jalankan program prog01.sh $ . prog01.sh



3. Buatlah file prog02.sh dengan editor vi $vi prog02.sh NAMA=”Selly marisca” echo ‘isi variabel NAMA $NAMA’ echo “isi variabel NAMA \$NAMA”



4. Jalankan program prog02.sh $ . prog02.sh



5. Buatlah file prog03.sh dengan editor vi $vi prog03.sh let a=10 echo $a let “a=10” echo $a let a=5+6 echo $a let a = 5 echo $a let “a = 5” echo $a



6. Jalankan program prog03.sh $ . prog03.sh



Percobaan 3 : Menerima Masukan 1. Buatlah file prog04.sh dengan editor vi, kemudian jalankan echo echo echo read echo



“Program untuk menerima masukan” “==============================” “Masukkan nama Anda :” NAMA “welcome $NAMA dalam shell script programming”



70



Percobaan 4 : expr dan let 1. Ketik setelah prompt sintaks di bawah ini $expr 5 $expr 5 + 6



2. Ketik setelah prompt sintaks di bawah ini $echo $expr $echo $expr $expr



“Hallo” “Hallo” 5 + 6 5 + 6 5+6



3. Ketik setelah prompt sintaks di bawah ini $expr 5 + 6 $let x=5+6 $echo $x $y=`expr 5 + 6 ` $echo $y $expr $y $expr $x



Percobaan 5 : Operasi aritmatika 1. Buatlah file prog05.sh dengan editor vi, kemudian jalankan $vi prog05.sh #!/bin/sh echo “Program penjumlahan dan perkalian dua bilangan” echo “Bilangan I ?” read bil1 echo “Bilangan II ?” read bil2 jml=`expr $bil1 + $bil2` kali=`expr $bil1 \* $bil2` echo “hasil penjumlahan $bil1 + $bil2 = $jml” echo “hasil perkalian $bil1 * $bil2=$kali”



Percobaan 6 : Konstruksi if – fi 1. Buatlah file prog06.sh dengan editor vi, kemudian jalankan $vi prog06.sh echo “Utilitas membuat direktori baru” echo “masukkan nama direktori baru yang akan dibuat ?” read NAMADIR mkdir $NAMADIR if test $? –eq 0 then echo “Direktori dengan nama $NAMADIR telah berhasil dibuat” fi



2. Buatlah file prog07.sh dengan editor vi, kemudian jalankan $vi prog07.sh



71



echo “Utilitas membuat direktori baru” echo “masukkan nama direktori baru yang akan dibuat ?” read NAMADIR mkdir $NAMADIR 2> /dev/null if ( $? –eq 0 ) then echo “direktori dengan nama $NAMADIR telah berhasil dibuat” else echo “direktori dengan nama $NAMADIR gagal dibuat” echo “mgk direktori $NAMADIR sdh ada” fi



3. Konstruksi pemilihan dengan if dan test tanpa \$. Buatlah file prog08.sh dengan editor vi. Kemudian jalankan $vi prog08.sh echo “konstruksi pemilihan dengan if dan test tanpa \$” if test 5 –lt 6 then echo “5 lbh kecil dari 6” else echo “5 tdk lebih kecil dari 6” fi



4. Buatlah file prog09.sh dengan editor vi. Kemudian jalankan $vi prog09.sh echo “konstruksi pemilihan dengan if dan test tanpa \$” if test 6 –gt 5 then echo “5 lbh kecil dari 6” else echo “5 tdk lebih kecil dari 6” fi



5. Alias perintah test adalah tanda “[“ dan “]”.Buatlah file prog10.sh dengan editor vi. Kemudian jalankan $vi prog10.sh echo “Menentukan bil terbesar” echo “Masukkan bil pertama ?” read bil1 echo “Masukkan bil kedua ?” read bil2 if [ $bil1 –gt $bil2 ] then echo “$bil1 lebih besar dari $bil2” else echo “$bil2 lebih besar dari $bil” fi



6. Buatlah program untuk membandingkan 2 buah bilangan, apakah lebih besar, lebih kecil atau sama dengan dengan menggunakan if bersarang (nested if). Simpan dengan nama file prog11.sh. Kemudian jalankan 7. Sempurnakan program di bawah ini : echo”Operasi Aritmatika dengan Menu”



72



echo echo echo echo echo read echo echo read echo read if [ then



“1) Penjumlahan ” “2) Selisih ” “3) Perkalian” “4) Pembagian ” “Nomor Pilihan : ” pilihan “Masukkan dua bilangan ” “Bilangan pertama :” bil1 “Bilangan kedua :” bil2 $pilihan –eq 1 ]



let “hasil=$bil1 + $bil2 elif …….. then ……………. fi echo “Hasil = $hasil”



Percobaan 7 : Konstruksi case - esac 1. Buatlah file prog14.sh dengan editor vi $ vi prog14.sh #!/bin/sh # Prog: prog14.sh echo “1. Siapa yang aktif” echo “2. Tanggal hari ini” echo “3. Kalender bulan ini” echo –n “ Pilihan : “ read PILIH case $PILIH in 1) echo “Yang aktif saat ini” who ;; 2) echo “Tanggal hari ini” date ;; 3) echo “Kalender bulan ini” cal ;; *) echo “Salah pilih !!” ;; esac



2. Jalankan program prog14.sh, cobalah beberapa kali dengan inputan yang berbeda $ . prog14.sh



3. Buatlah file prog15.sh yang merupakan bentuk lain dari case $ vi prog15.sh #!/bin/sh



73



# Prog: prog15.sh echo –n “Jawab (Y/T) : “ read JWB case $JWB in y | Y | ya |Ya |YA ) JWB=y ;; t | T | tidak | Tidak | TIDAK ) JWB=t ;; esac



4. Jalankan program prog15.sh, cobalah beberapa kali dengan inputan yang berbeda $ . prog15.sh



5. Modifikasi file prog15.sh yang merupakan bentuk lain dari case $ vi prog15.sh #!/bin/sh # Prog: prog15.sh echo –n “Jawab (Y/T) : \c“ read JWB case $JWB in [yY] | [yY][aA] ) JWB=y ;; [tT] | [tT]idak ) JWB=t ;; *) JWB=? ;; esac



6. Jalankan program prog15.sh, cobalah beberapa kali dengan inputan yang berbeda $ . prog15.sh



7. Buatlah program Aritmatika dengan menu dengan menggunakan struktur case Percobaan 8 : Konstruksi for-do-done 1. Buatlah file prog16.sh dengan editor vi, kemudian jalankan $vi prog16.sh echo “Menampilkan nama dengan for” a=0 for item in Budi Tuti Dian Rudi do let a+=1 echo “item no $a adalah $item” done



2. Buatlah file prog17.sh dengan editor vi, kemudian jalankan $vi prog17.sh echo “file yg pernah dibuat” for namafile in *.sh do echo “nama file script : $namafile ” done



74



3. Buatlah file prog18.sh dan jalankan $vi prog18.sh #!/bin/sh # Prog: prog18.sh for NAMA in bambang harry kadir amir do echo “Nama adalah : $NAMA” done



4. Buatlah file prog19.sh yang berisi konstruksi for dan wildcard, program ini akan menampilkan nama file yang berada di curent direktori $vi prog19.sh #!/bin/sh # Prog: prog12.sh for F in * do echo $F done



5. Modifikasi file prog19.sh, program ini akan menampilkan long list dari file yang mempunyai ekstensi lst $ vi prog19.sh #!/bin/sh # Prog: prog19.sh for F in *.lst do ls –l $F done



Percobaan 9 : Konstruksi while-do-done 1. Buatlah file prog20.sh dengan editor vi, kemudian jalankan $vi prog20.sh i=0 while [ i$ -lt 10 ] do echo “” let i+=1 done



2. Buatlah file prog21.sh dengan editor vi, kemudian jalankan $vi prog21.sh #!/bin/sh # Prog: prog21.sh PILIH=1 while [ $PILIH do echo “1. echo “2. echo “3.



–ne 4 ] Siapa yang aktif” Tanggal hari ini” Kalender bulan ini”



75



echo echo read if [ then



“4. Keluar” “ Pilihan : \c” PILIH $PILIH –eq 4 ] break



fi clear done echo “Program berlanjut di sini setelah break”



Percobaan 10 : Konstruksi Until 1. Buatlah prog22.sh dengan editor vi, kemudian jalankan $vi prog22.sh I=1 Until [ $I –gt 10 ] do echo “” let I+=1 done



Percobaan 11 : Instruksi dummy 1. Modifikasi file prog21.sh $ vi prog21.sh #!/bin/sh # Prog: prog21.sh PILIH=1 while : do echo echo echo echo echo read if [ then



“1. Siapa yang aktif” “2. Tanggal hari ini” “3. Kalender bulan ini” “4. Keluar” “ Pilihan : \c” PILIH $PILIH –eq 4 ] break



fi clear done echo “Program berlanjut di sini setelah break”



2. Jalankan program prog21.sh $ . prog21.sh



3. Buatlah file prog23.sh yang berisi instruksi dummy untuk konstruksi if $ vi prog23.sh #!/bin/sh # Prog: prog23.sh echo –n “Masukkan nilai : “



76



read A if [ $A –gt 100 ] then : else echo “OK !” fi



4. Jalankan program prog23.sh beberapa kali dengan input yang berbeda $ . prog23.sh



Percobaan 12 : Fungsi 1. Buatlah file fungsi.sh $ vi fungsi.sh #!/bin/sh # Prog: fungsi.sh F1( ) { echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo $?



2. Jalankan program fungsi.sh $ . fungsi.sh



3. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh $ vi fungsi.sh #!/bin/sh # Prog: fungsi.sh F1( ) { Honor=10000 echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo “Nilai balik adalah $?” echo “Honor = $Honor”



4. Jalankan program fungsi.sh $ . fungsi.sh



5. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh $ vi fungsi.sh



77



#!/bin/sh # Prog: fungsi.sh F1( ) { local Honor=10000 echo “Fungsi F1” return 1 } echo “Menggunakan Fungsi” F1 F1 echo “Nilai balik adalah $?” echo “Honor = $Honor”



6. Jalankan program fungsi.sh $ . fungsi.sh



E. Latihan 1. Buatlah program myprog.sh yang memproses parameter $1, nilai parameter harus berupa string : start stop status restart reload Bila buka dari string tersebut, maka berikan pesan eror. Sempurnakan program di bawah ini untuk keperluan tersebut #!/bin/sh # See how we were called case “$1” in start) echo “Ini adalah start” ;; stop) echo “Ini adalah stop” ;; *) echo $”Usage:$0 {start|stop|restart|reload|status}” ;; esac return



2. Buat sebuah fungsi pada script confirm.sh yang memberikan konfirmasi jawaban Yes, No atau Continue. Jika jawaban Yes, maka beri nilai balik 0, No = 1 dan Continue = 2. Modifikasi kerangka program berikut untuk memenuhi permintaan tersebut. #!/bin/sh # Confirm whether we really want to run this service confirm() { local YES=”Y”



78



local NO=”N” local CONT=”C” while : do echo –n “(Y)es/(N)o/(C)ontinue? {Y] “ read answer answer=`echo “$answer” | tr ‘[a-z]’ ‘[A-Z]’` if [ “$answer” = “” –0 “$answer” = $YES ] then return 0 elif …. then return 2 elif …. then return 1 fi done }



Test fungsi diatas dengan program berikut : $ vi testp.sh . confirm.sh confirm if [ $? –eq 0 ] then echo “Jawaban YES OK” elif [ $? =eq 1 ] then echo “Jawaban NO” else echo “Jawaban CONTINUE” fi



Perhatikan baris pertama, adalah loading dari fungsi confirm yang terdapat di script confirm.sh. Setelah eksekusi script tersebut, maka fungsi confirm dapat digunakan.



79



Praktikum 10



Pemrograman Shell (2) A. T U J U A N 1. Mengetahui variable local dan global di shell 2. Mengetahui eksekusi bersyarat 3. Mengenal fungsi dan cara memanggilnya 4. Mampu membuat user interface dan dialog utility 5. Mampu melakukan trap command B.



DASAR TEORI



VARIABLE LOKAL DAN GLOBAL PADA SHELL Secara umum semua variable adalah lokal. Variable lokal digunakan pada shell yang sama, jika anda me-load atau memanggil shell lainnya (dengan mengetik /bin/bash pada prompt) maka shell yang baru tersebut akan mengabaikan variable pada shell sebelumnya. Global shell didefinisikan : Anda dapat mengkopi variable shell yang lama ke shell yang baru. Untuk membuat suatu variable lokal menjadi global digunakan perintah export sintaks : export variable1, variable2,....variableN EKSEKUSI BERSYARAT Operatornya adalah && (dibaca AND) dan || (dibaca OR) sintaks : command1 && command2 command1 || command2 anda dapat menggunakan keduanya sintaks : command1 && command2 || command3 jika command1 sukses dieksekusi maka shell akan menjalankan command2 dan jika command1 tidak sukses maka shell akan mengeksekusi command3. FUNGSI Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr,



80



atau nilai 0 sebagai default. Membuat fungsi diawali dengan nama fungsi, parameter, kemudian blok program yang dinyatakan dalam { … }. Contoh : F1( ) { …….. …….. return 1 } Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama variable yang sama di luar fungsi, sehingga tidak terjadi isi variable berubah. USER INTERFACE DAN DIALOG UTILITY Program/Shell Script yang bagus harus dapat berinteraksi dengan user. Untuk itu kita dapat menggunakan : 1. Command line argument, misal $./coba.sh 4 3, dimana 4 dan 3 adalah command line argument bagi script coba.sh 2. Statemen echo dan read, untuk membaca input dari prompt. Selain itu dapat juga menggunakan dialog utility. sintaks : dialog --tilte {judul} --backtitle {judul belakang} {Box opsi} dimana Box opsi : --yesno {teks} {tinggi} {lebar} --msgbox {teks} {tinggi} {lebar} --infobox {teks} {tinggi} {lebar} --inputbox {teks} {tinggi} {lebar}[{init}] --textbox {teks} {tinggi} {lebar} --menu {teks} {tinggi} {lebar} {menu} {tinggi} {tag1} item1}... TRAP COMMAND Berfungsi untuk menjebak suatu command. sintaks : trap {commands} {signal numberlist} Signal Number



Keterangan



0



shell exit



1



hangup



81



Signal Number



Keterangan



2



interrupt (CTRL+C)



3



quit



9



kill



C. LANGKAH-LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai mahasiswa. 3. Lakukan operasi pembuatan variable local dan global. 4. Lakukan eksekusi bersyarat 5. Buatlah fungsi 6. Buat user interface : message box, input box, yesno box, dialog dengan menu 7. Lakukan trap command D. PERCOBAAN Percobaan 1 : Variable Local 1. Ketikkan variable berikut : $vehc=Bus $echo $vehc



2. Buka shell baru (yang kedua), lihat isi variable $/bin/bash $echo $vehc



3. Ketik variable di shell yang baru, tampilkan variable tersebut $vehc=Sedan $echo $vehc



4. Keluar dari shell baru, tampilkan variable $exit $echo $vehc



Percobaan 2: Variable Global 1. Ketik variable berikut : $vehc=Bus $echo $vehc



2. Export variable tersebut agar menjadi global, masuk ke shell baru, lihat hasilnya $export vehc $/bin/bash



82



$echo $vehc



3. Keluar dari shell baru $exit $echo $vehc



Percobaan 3 : Eksekusi Bersyarat 1. Ketik command berikut : $rm myfile terhapus”



&&



echo



“File



berhasil



dihapus”



||



echo



“File



tidak



Percobaan 4 : Fungsi 1. Ketik fungsi berikut setelah prompt $ Hallo() { echo “Hallo $LOGNAME, have a nice day” return }



A. Panggil fungsi tersebut $Hallo()



3. Fungsi ini akan hilang ketika komputer di-restart. Agar tidak hilang masukkan fungsi ini ke dalam file /etc/bashrc. Untuk ini anda harus logon sebagai root. Buka file /etc/bashrc #vi /etc/bashrc



4.Tekan shift+G untuk ke akhir file, lalu ketik fungsi berikut : # vi /etc/bashrc # today() untuk mencetak tanggal # untuk menjalankan fungsi ini ketik today setelah prompt $ atau # today() { echo Hari ini adalah `date +"%A %d in %B of %Y (%r)"` return }



5. Simpan file, lihat file setelah dimodifikasi #cat /etc/bashrc



6. Jalankan fungsi ini #today



Percobaan 6 : User Interface



83



1. Buat script di bawah ini untuk membaca masukan dari user $ cat > userinterf # script menggunakan echo dan read untuk interaksi user echo "Ketikkan nama anda..please :" read nama echo "Umur anda..please :" read umur umurbaru=`expr $umur + 1` echo "hallo $nama, tahun depan umurmu $umurbaru.."



2. Simpan lalu jalankan $chmod 755 userinterf $./userinterf



Percobaan 7 : User Interface 1. Buat script berikut : $cat > menu1 while : do clear echo "---------------------------" echo " Menu Utama" echo "---------------------------" echo "[1] Lihat tanggal hari ini" echo "[2] Lihat file pada direktori" echo "[3] Lihat kalender" echo "[4] Buka teks editor untuk mengetik surat" echo "[5] Keluar" echo "===========================" echo -n "Pilihan anda [1-5]: " read pil case $pil in 1) echo "Hari ini `date`, tekan enter..." ; read ;; 2) echo "File di direktori `pwd`" ; ls -l ; echo "Tekan enter..." ; read ;; 3) cal ; echo "Tekan enter..." ; read ;; 4) vi ;; 5) exit 0 ;; *) echo "Ooopss..silakan pilih 1-5.."; echo "Tekan enter.." ; read ;; esac done



2. Jalankan script tersebut Percobaan 8 : Dialog Utility 1. Ketik script berikut sebagai contoh penggunaan dialog utility. $cat > dialog1 dialog --title “Linux Dialog Utility Infobox” --backtitle “Belajar Shell Script Linux” --infobox “Dialog Box ini disebut infobox, untuk menampilkan informasi di layar..Tekan sembarang tombol...” 7 50 ; read



84



2. Simpan dan jalankan $chmod +x dialog1 $./dialog1



Percobaan 9 : Message Box 1. Ketik script ini untuk membuat message box $cat > dialog2 dialog --title “Linux Dialog Utility Message Box” --backtitle “Belajar Shell Script Linux” --msgbox “Dialog Box ini disebut message box, untuk menampilkan informasi di layar beserta tombol OK..Tekan sembarang tombol...” 9 50 ;



2. Simpan dan jalankan $chmod +x dialog2 $./dialog2



Percobaan 10 : YesNo Box 1. Ketik script berikut untuk membuat yesno box $cat > dialog3 dialog --title “Peringatan : Penghapusan File” --backtitle “Belajar Shell Script Linux” --yesno “\nYakin ingin menghapus '/usr/surat/lamarankerja' file” 7 60 sel=$? case $sel in 0)echo “user akan menghapus file”;; 1)echo “user tidak jadi menghapus file”;; 255)echo “dibatalkan user, dengan menekan tombol [ESC]”;; esac



2. Simpan dan jalankan $chmod +x dialog3 $./dialog3



Percobaan 11 : InputBox 1. Ketik script berikut untuk membuat input box $cat > dialog4 dialog --title “Inputbox – mengambil input dari user” --backtitle “Belajar Shell Script Linux” --inputbox “Silakan masukkan nama anda” 8 60 2>/tmp/input.$$ sel=$? na=`cat /tmp/input.$$` case $sel in 0) echo “Hallo $na” ;; 1) echo “Cancel ditekan” ;; 255) echo “Tombol [ESC] ditekan” ;;



85



esac rm -f /tmp/input.$$



2. Simpan dan jalankan $chmod +x dialog4 $./dialog4



Percobaan 12 : Dialog Menu 1. Ketik script berikut untuk membuat menu dengan dialog $cat > dialogmenu dialog --backtitle “Belajar Shell Script Linux” --title “Menu Utama” --menu “Gunakan panah [UP] [DOWN], [ENTER] untuk memilih” 15 50 3 Tanggal “Menampilkan Tanggal” Kalender “Melihat Kalender” Editor “Membuka Editor Vi “ 2>/tmp/menuitem.$$ menuitem=`cat /tmp/menuitem.$$` opt=$? case $menuitem in Tanggal) date;; Kalender) cal;; Editor) vi;; esac



2. Simpan dan jalankan $rm -f /tmp/menuitem.$$ $chmod +x dialogmenu $./dialogmenu



Percobaan 13 : Trap Command 1. Ketik command berikut $cat > tessinyal ls -R /



2. Simpan dan jalankan $chmod +x tessinyal $./tessinyal



3. Tekan [ctrl]+c untuk menghentikannya. Ctrl+c merupakan sinyal 4. Sekarang buat script di bawah ini $cat > tessinyal1 #Mengapa harus menjebak sinyal ? Take_input() { recno=0



86



clear echo "Aplikasi Catatan Appointment di Linux" echo -n "Masukkan nama file database : " read filename if [ ! -f $filename ];then echo "Maaf, $filename tidak ada, sekarang akan dibuat $filename database" echo "Aplikasi Catatan Appointment database file" > $filename fi echo "Pemasukan data pada tanggal: `date`" >/tmp/input0.$$ while : do echo read echo read echo read echo read



-n "Judul Appointment :" nama -n "Time :" waktu -n "Catatan :" catatan -n "Data Okay (y/n) ?" jawaban



if [ $jawaban = y -o $jawaban = Y ]; then recno=`expr $recno + 1` echo "$recno. $nama $waktu $catatan" >> /tmp/input0.$$ fi echo "Tambah data lagi (y/n) ?" read isnext if [ $isnext = n -o $isnext = N ];then cat /tmp/input0.$$ >> $filename rm -f /tmp/input0.$$ return #stop loop fi done } #panggil fungsi Take_input



5. Simpan dan jalankan $chmod +x tessinyal1 $./tessinyal1



6. Setelah mengisi beberapa data, tampilkan isi database dengan perintah cat $cat namadatabase



7. Jalankan lagi file tersebut $./tessinyal1



Cukup isi satu data saja, setelah itu tekan ctrl+c sebelum menjawab pertanyaan “Tambah data (y/n)” maka program akan terminated(berhenti), dan temporay file akan tertinggal di /tmp direktori. 8. Cek keberadaan temporary filename 87



$ls /tmp/input*



9. Untuk menghindari hal di atas maka kita perlu mendeteksi sinyal dengan menggunakan trap command. Untuk itu tambahkan trap statement sebelum memanggil fungsi Take_input, yaitu del_file 2. Trap statementnya yaitu fungsi del_file, 2 berarti penekanan CTRL+C. Buka file script di atas dan modifikasi sehingga menjadi sebagai berikut : $vi tessinyal1 del_file() { echo" Penjebakan penekanan tombol [ctrl]+c" rm -f /tmp/input0.$$ exit 1 } Take_input() { recno=0 clear echo "Aplikasi Pengingat Appointment di Linux" echo -n "Masukkan nama file database : " read filename if [ ! -f $filename ];then echo "Maaf, $filename tidak ada, sekarang akan dibuat $filename database" echo "Aplikasi Pengingat Appointment database file" > $filename fi echo "Pemasukan data pada tanggal: `date`" >/tmp/input0.$$ while : do echo read echo read echo read echo read



-n "Judul Appointment :" nama -n "Waktu :" waktu -n "Catatan :" catatan -n "Data Okay (y/n) ?" jawaban



if [ $jawaban = y -o $jawaban = Y ]; then recno=`expr $recno + 1` echo "$recno. $nama $waktu $catatan" >> /tmp/input0.$$ fi echo "Tambah data lagi (y/n) ?" read isnext if [ $isnext = n -o $isnext = N ];then cat /tmp/input0.$$ >> $filename rm -f /tmp/input0.$$ return #stop loop fi done } #memanggil fungsi trap del_file 2 Take_input



88



10.



Jalankan script di atas $./tessinyal1



11.



Coba tekan CTRL+C ketika pengisian data. Periksa temporary file $ls /tmp/input*



89



Praktikum 11



Pemrograman Shell (3) A. T U J U A N 1. Mampu mengintegrasikan teknik-teknik pemrograman shell yang telah dipelajari sebelumnya 2. Menggabungkan user interface dan fungsi 3. Melihat sistem konfigurasi dengan script B.



DASAR TEORI



( Lihat dasar teori materi praktikum sebelumnya ) C. LANGKAH-LANGKAH 1. Masuk ke sistem operasi Linux. 2. Login sebagai mahasiswa. 3. Buat program aritmatika sederhana dengan menggunakan perintah bc. 4. Buat program dengan user interface dan fungsi. 6. Buat program untuk melihat konfigurasi sistem. D. PERCOBAAN Percobaan 1 : Operasi bilangan real dengan bc 1. Buat program di bawah ini dengan vi : #!/bin/bash a=5.66 b=8.67 c=`echo $a + $b | bc` echo "$a + $b = $c" d=6.66 e=3.5 f=`echo $d \* $e | bc` echo "$d * $e = $c"



2. Jalankan program tersebut. Percobaan 2 : User interface dan fungsi 1. Buat program di bawah ini dengan vi : #!/bin/bash show_datetime() {



90



dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)" --title "Waktu dan Tanggal System" --infobox "Tanggal : `date`" 3 40 read return } show_cal() { cal > menuchoice.temp.$$ dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)" --title "Kalender" --infobox "`cat menuchoice.temp.$$`" 9 25 read rm -f menuchoice.temp.$$ return } delete_file() { dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)" --title "Hapus File"\ --inputbox "Masukkan directory path (Tekan Enter untuk melihat file direktori yang aktif)"\ 10 40 2>/tmp/dirip.$$ rtval=$? case $rtval in 1) rm -f /tmp/dirip.$$ ; return ;; 255) rm -f /tmp/dirip.$$ ; return ;; esac mfile=`cat /tmp/dirip.$$` if [ -z $mfile ] then mfile=`pwd`/* else grep "*" /tmp/dirip.$$ if [ $? -eq 1 ] then mfile=$mfile/* fi fi for i in $mfile do if [ -f $i ] then echo "$i Hapus?" >> /tmp/finallist.$$ fi done dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)" --title "Pilih file yang akan dihapus"\ --menu "Gunakan [Up][Down], [Enter] untuk memilih"\ 20 60 12 `cat /tmp/finallist.$$` 2>/tmp/file2delete.tmp.$$ rtval=$?



91



file2erase=`cat /tmp/file2delete.tmp.$$` case $rtval in 0) dialog --backtitle "Praktikum Sistem Operasi (Pemrogaraman Shell" --title "Yakin.."\ --yesno "\n\nApa anda ingin menghapus : $file2erase " 10 60 if [ $? -eq 0 ] ; then rm -f $file2erase if [ $? -eq 0 ] ; then dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)"\ --title "Informasi: Perintah Delete" --infobox "File: $file2erase telah dihapus, tekan sembarang tombol" 5 60 read else dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)"\ --title "Error: Perintah Delete" --infobox "Error menghapus File: $file2erase, tekan sembarang tombol" 5 60 read fi else dialog --backtitle "Praktikum Sistem Operasi (Pemrograman Shell)"\ --title "Informasi: Perintah Delete" --infobox "File: $file2erase tidak dihapus, dibatalkan, tekan sembarang tombol" 5 60 read fi ;; 1) 255)



rm rm rm rm



-f -f -f -f



/tmp/dirip.$$ ; rm -f /tmp/finallist.$$ ; /tmp/file2delete.tmp.$$; return;; /tmp/dirip.$$ ; rm -f /tmp/finallist.$$ ; /tmp/file2delete.tmp.$$; return;;



esac rm -f /tmp/dirip.$$ rm -f /tmp/finallist.$$ rm -f /tmp/file2delete.tmp.$$ return } while true do dialog --clear --title "Menu Utama" \ --menu "Gunakan tombol panah [UP/DOWN] \n\ [Enter] untuk memilih\n\ Silakan pilih :" 20 51 4 \ "Date/time" "Melihat tanggal/waktu sistem" \ "Calender" "Melihat Kalender"\ "Delete" "Hapus file"\ "Exit" "Keluar Program" 2> menuchoice.temp.$$ retopt=$?



92



choice=`cat menuchoice.temp.$$` rm -f menuchoice.temp.$$ case $retopt in 0) case $choice in Date/time) show_datetime ;; Calender) show_cal ;; Delete) delete_file ;; Exit) exit 0;; esac ;; 1) exit ;; 255) exit ;; Esac done clear



3. Jalankan program tersebut Percobaan 3 : Melihat Konfigurasi Sistem 1. Buat program di bawah ini dengan vi nouser=`who | wc -l` echo -e "Nama user: $USER (Login name: $LOGNAME)" >> /tmp/info.tmp.01.$$$ echo -e "Shell aktif: $SHELL" >> /tmp/info.tmp.01.$$$ echo -e "Home Directory: $HOME" >> /tmp/info.tmp.01.$$$ echo -e "Tipe O/S: $OSTYPE" >> /tmp/info.tmp.01.$$$ echo -e "PATH: $PATH" >> /tmp/info.tmp.01.$$$ echo -e "Direktori: `pwd`" >> /tmp/info.tmp.01.$$$ echo -e "Yang masuk/logged: $nouser user(s)" >> /tmp/info.tmp.01.$$$ if [ -f /etc/redhat-release ] then echo -e "OS: `cat /etc/redhat-release`" >> /tmp/info.tmp.01.$$$ fi if [ -f /etc/shells ] then echo -e "Shell yang tersedia: " >> /tmp/info.tmp.01.$$$ echo -e "`cat /etc/shells`" >> /tmp/info.tmp.01.$$$ fi if [ -f /etc/sysconfig/mouse ] then echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "Info Mouse Komputer Anda: " >> /tmp/info.tmp.01.$$$ echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "`cat /etc/sysconfig/mouse`" >> /tmp/info.tmp.01.$$$ fi echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "Info CPU Anda:" >> /tmp/info.tmp.01.$$$ echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$



93



cat /proc/cpuinfo >> /tmp/info.tmp.01.$$$ echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "Info Memory Komputer:" >> /tmp/info.tmp.01.$$$ echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ cat /proc/meminfo >> /tmp/info.tmp.01.$$$ if [ -d /proc/ide/hda ] then echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "Hard disk informasi:" >> /tmp/info.tmp.01.$$$ echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "Model: `cat /proc/ide/hda/model` " >> /tmp/info.tmp.01.$$$ echo -e "Driver: `cat /proc/ide/hda/driver` " >> /tmp/info.tmp.01.$$$ echo -e "Cache size: `cat /proc/ide/hda/cache` " >> /tmp/info.tmp.01.$$$ fi echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ echo -e "File System (Mount):" >> /tmp/info.tmp.01.$$$ echo -e "-------------------------------------------------------------------" >> /tmp/info.tmp.01.$$$ cat /proc/mounts >> /tmp/info.tmp.01.$$$ if which dialog > /dev/null then dialog --backtitle "Software Diagnostic Linux" --title "Gunakan Up/Down Key" --textbox /tmp/info.tmp.01.$$$ 21 70 else cat /tmp/info.tmp.01.$$$ |more fi rm -f /tmp/info.tmp.01.$$$



94