Anda di halaman 1dari 197

Praktikum

Sistem Operasi

Oleh
Muhammad Arif Fadhly Ridha
Agus Urip Ari Wibowo
Ibnu Surya

Pekanbaru
2014

i
KATA SAMBUTAN

Saya menyambut baik penerbitan bahan ajar kuliah ini yang khusus dipakai
untuk mahasiswa Politeknik Caltex Riau, dengan tujuan untuk
memudahkan kegiatan belajar mengajar di Politeknik Caltex Riau ini.
Penerbitan bahan ajar ini merupakan salah satu wujud nyata tekad
Politeknik Caltex Riau dalam usaha mencerdaskan anak bangsa.

Saya menyadari bahwa usaha penerbitan ini menuntut pengorbanan waktu


dan tenaga bagi penyusunnya. Untuk itu Saya mengucapkan banyak terima
kasih dan Saya sampaikan penghargaan yang setinggi-tingginya kepada
semua pihak yang terkait, atas dedikasinya untuk membantu peningkatan
mutu pendidikan di Politeknik Caltex Riau.

Pekanbaru, Maret 2014


Direktur

Dadang Syarif S.S., S.Si., M.Sc.

ii
DAFTAR ISI

KATA SAMBUTAN ............................................................................ ii


Praktikum 1 .............................................................................................. 1
Instalasi Windows 7 Professional ...................................................... 1
A. TUJUAN ................................................................................. 1
B. LANGKAH PERCOBAAN .............................................. 1
C. LATIHAN .............................................................................. 4
Praktikum 2 .............................................................................................. 5
Instalasi CentOS Linux ......................................................................... 5
A. TUJUAN ................................................................................. 5
B. LANGKAH PERCOBAAN .............................................. 5
C. LATIHAN .............................................................................. 7
Praktikum 3 .............................................................................................. 8
Perintah-Perintah Dasar Pada Sistem Operasi Linux .................... 8
A. TUJUAN ................................................................................. 8
B. DASAR TEORI .................................................................... 8
1. Format Instruksi Linux ........................................................ 8
2. Manual ..................................................................................... 9
C. LANGKAH-LANGKAH ................................................. 10
D. PERCOBAAN ..................................................................... 10
E. LATIHAN ............................................................................ 16
1. Ubahlah informasi finger pada komputer anda. .......... 16
Praktikum 4 ............................................................................................ 17
Shell Pada Sistem Operasi Linux dan Editor vi............................ 17

iii
A. TUJUAN ............................................................................... 17
B. DASAR TEORI .................................................................. 17
1. Pipeline .................................................................................. 17
2. Regular Expression............................................................. 17
3. Redirection............................................................................ 18
4. Pengeditan Perintah ............................................................ 18
5. History ................................................................................... 19
6. Editor vi ................................................................................. 19
C. LANGKAH-LANGKAH ................................................. 21
D. PERCOBAAN ..................................................................... 22
E. LATIHAN ............................................................................ 26
Praktikum 5 ............................................................................................ 28
Sistem File.............................................................................................. 28
A. TUJUAN ............................................................................... 28
B. Dasar Teori ........................................................................... 28
1. Organisasi File ..................................................................... 28
2. Direktori Standar ................................................................. 29
3. Direktori /etc ........................................................................ 30
4. Direktori /dev ....................................................................... 31
5. Direktori /proc ..................................................................... 31
C. LANGKAH-LANGKAH ................................................. 36
D. PERCOBAAN ..................................................................... 36
E. LATIHAN ............................................................................ 43
Praktikum 6 ............................................................................................ 44
Proses I/O ............................................................................................... 44
A. TUJUAN ............................................................................... 44

iv
B. DASAR TEORI .................................................................. 44
1. Proses I/O .............................................................................. 44
2. File Descriptor ..................................................................... 45
3. Pembelokan (Redirection) ................................................ 45
4. Pipa (Pipeline) ..................................................................... 46
5. Filter ....................................................................................... 46
C. LANGKAH-LANGKAH ................................................. 47
D. PERCOBAAN ..................................................................... 47
E. LATIHAN ............................................................................ 51
Praktikum 7 ............................................................................................ 53
Shell Lanjutan ....................................................................................... 53
A. TUJUAN ............................................................................... 53
B. DASAR TEORI .................................................................. 53
1. Shell ........................................................................................ 53
2. Profile..................................................................................... 54
3. History ................................................................................... 55
4. Bash-script ............................................................................ 56
5. Job control ............................................................................ 56
C. LANGKAH-LANGKAH ................................................. 56
D. PERCOBAAN ..................................................................... 57
E. LATIHAN ............................................................................ 63
Praktikum 8 ............................................................................................ 68
Manajemen Proses ............................................................................... 68
A. TUJUAN ............................................................................... 68
B. DASAR TEORI .................................................................. 68
1. Konsep Proses di Linux..................................................... 68

v
2. Sinyal ..................................................................................... 69
3. Mengirim Sinyal ................................................................. 69
C. LANGKAH – LANGKAH .............................................. 69
D. PERCOBAAN ..................................................................... 70
E. LATIHAN .................................................................................... 74
Praktikum 9 ............................................................................................ 77
Utilitas Linux ......................................................................................... 77
A. TUJUAN ............................................................................... 77
B. DASAR TEORI .................................................................. 77
1. Sortir....................................................................................... 77
2. Preformat............................................................................... 78
3. Word Count .......................................................................... 78
4. Translate ................................................................................ 78
5. Memotong Karakter ........................................................... 79
6. Head dan Tail ....................................................................... 79
7. Find ......................................................................................... 79
C. LANGKAH – LANGKAH .............................................. 81
D. PERCOBAAN ..................................................................... 81
E. LATIHAN ............................................................................ 88
Praktikum 10 ......................................................................................... 90
Pemrograman Shell (1) ....................................................................... 90
A. TUJUAN ............................................................................... 90
B. DASAR TEORI .................................................................. 90
1. Shell Script ........................................................................... 90
2. Variabel ................................................................................. 91
3. Membaca Keyboard ........................................................... 92

vi
4. Parameter .............................................................................. 92
5. Status exit .............................................................................. 92
6. Konstruksi if ......................................................................... 92
7. Konstruksi if then else ....................................................... 93
8. Instruksi test ......................................................................... 93
9. Logikal && dan || (Shell Level) ...................................... 94
10. Operator Bilangan Bulat untuk test ............................ 95
11. Operator Logika (Test Level) ...................................... 95
12. Konstruksi if then else if ............................................... 96
13. Hitungan Aritmatika ...................................................... 97
14. Instruksi exit..................................................................... 97
C. LANGKAH – LANGKAH .............................................. 97
D. PERCOBAAN ..................................................................... 97
E. LATIHAN .......................................................................... 111
Praktikum 11 ....................................................................................... 116
Pemrograman Shell (2) ..................................................................... 116
A. TUJUAN ............................................................................. 116
B. DASAR TEORI ................................................................ 116
1. Konstruksi case.................................................................. 116
2. Konstruksi for .................................................................... 117
3. Konstruksi while ............................................................... 117
4. Instruksi dummy ............................................................... 118
5. Fungsi................................................................................... 118
C. LANGKAH – LANGKAH ............................................ 118
D. PERCOBAAN ................................................................... 119
E. LATIHAN .......................................................................... 126

vii
Praktikum 12 ....................................................................................... 130
Redhat Package Manager (RPM), TAR dan GZIP.................... 130
A. TUJUAN ............................................................................. 130
B. DASAR TEORI ................................................................ 130
1. Manajemen Paket Software............................................ 130
2. Fungsi Manajer Paket Software .................................... 131
3. Paket Software ................................................................... 131
4. Nama Paket......................................................................... 131
5. RPM Query ........................................................................ 132
6. TAR ...................................................................................... 133
7. GZIP ..................................................................................... 133
C. LANGKAH-LANGKAH ............................................... 134
D. PERCOBAAN ................................................................... 134
E. LATIHAN .......................................................................... 137
Praktikum 13 ....................................................................................... 138
Praktikum 14 ....................................................................................... 145
Praktikum 15 ....................................................................................... 150
Praktikum 16 ....................................................................................... 155
Praktikum 17 ....................................................................................... 158
Praktikum 18 ....................................................................................... 163
A. TUJUAN ............................................................................. 163
B. DASAR TEORI ................................................................ 163
C. PERCOBAAN ................................................................... 174
D. LATIHAN .......................................................................... 182
Praktikum 19 ....................................................................................... 183
A. TUJUAN ............................................................................. 183

viii
B. PERCOBAAN ................................................................... 183
Praktikum 20 ....................................................................................... 187
A. TUJUAN ............................................................................. 187
B. PERCOBAAN ................................................................... 187

ix
Praktikum 1
Instalasi Windows 7 Professional

A. TUJUAN
1. Mampu melakukan instalasi sistem operasi Windows 7
Professional.
2. Mampu melakukan setting konfigurasi hardware dan sistem
komputer.
3. Mengetahui cara membuat user pada sistem operasi Windows 7
Professional.

B. LANGKAH PERCOBAAN
INSTALASI WINDOWS 7
Untuk memulai proses instalasi Windows 7, terlebih dahulu BIOS
komputer harus dikonfigurasi boot pertama menggunakan
CD/DVD ROM atau USB jika menggunakan Flashdisk sebagai
media instalasinya.
1. Langkah pertama masukkan DVD instalasi Windows 7
dan boot komputer, akan muncul pesan Press Any Key to
Boot From CD/DVD lalu tekan tombol apa saja pada
keyboard.

1
2. Windows 7 akan loading dan muncul tampilan seperti
dibawah ini, pilih Next dan kemudian Install Now

3. Centang I Accept the License Term dan kemudian klik


Next
4. Pilih Custom (Advanced) untuk melakukan instalasi fresh
dan konfigurasi partisi hardisk.

5. Dengan asumsi hardisk belum dipartisi, buatlah partisi


baru dengan mengklik tombol New
6. Secara otomatis Windows 7 Akan membuat sebuah partisi
khusus untuk System Reserved, Pilih partisi yang baru
dibuat tersebut dan klik Next.
7. Windows 7 akan melakukan instalasi dengan sendirinya,
tunggu sampai semua proses selesai.

2
8. Setelah komputer restart tunggu hingga muncul form
untuk mengisikan username baru dan password, isikan
sesuai keinginan dan klik Next

9. Masukkan Serial Number Windows 7 dan klik Next


10. Sesuaikan Jam dan Tanggal, kemudian Klik Next

3
MEMBUAT USER ACCOUNT
1. Log on sebagai administrator.
2. Klik tombol Start, klik Control Panel dan kemudian double
click User Accounts.
3. Pilih Manage another account pada bagian bawah klik Create
new Account.
4. Pada User Name, tulis nama user, seperti “student”.
5. Pilihlah Standard user
6. Klik OK.
7. Log off sebagai administrator dan Log on menggunakan user
account “student”.

C. LATIHAN
1. Buatlah sebuah user account nama anda dan password. Pilihlah
Administrator sebagai account type dan cobalah untuk log on
dengan user account yang anda buat.
2. Cobalah untuk menggunakan aplikasi standar yang disediakan
oleh Windows 7 dengan membuka berbagai macam tipe file.

4
Praktikum 2
Instalasi CentOS Linux

A. TUJUAN
a. Mampu melakukan instalasi sistem operasi CentOS
b. Mampu melakukan setting konfigurasi hardware dan sistem
komputer
c. Mengetahui cara membuat user pada sistem operasi CentOS

B. LANGKAH PERCOBAAN
CentOS (Community ENTerprise Operating System) merupakan
Distro Linux yang cocok dipergunakan dalam skala Enterprise
selain itu juga gratis. CentOS di buat dari source code Red Hat
Enterprise (RHEL) yang dikembangkan oleh sebuah komunitas yang
disebut CentOS Project.
CentOS pada dasarnya dibuat dari source code Ret Hat Enterprise.
Software ini dirilis dibawah General Public License (GPL) yang
selanjutnya dikembangkan oleh sebuah komunitas yang disebut
CentOS Project.

a. Booting komputer, masukkan CD instalasi CentOS linux. Tekan


Enter untuk memulai instalasi

5
b. Selanjutnya proses pengecekan CD instalasi, Pilih skip untuk
melanjutkan instalasi. Akan muncul tampilan grafik sebagai
panduan instalasi

c. Klik Next kemudiah pilih bahasa dan layout keyboard, keyboard


layout untuk indonesia adalah U.S (qwerty) Keyboard. Klik Next
d. Langkah berikutnya adalah Partisi Hardisk, agar dapat melakukan
konfigurasi kustom ceklis Review and Modify patitioning layout

e. Konfigurasi partisi sesuai kebutuhan, jika kondisi komputer baru


bisa menggunakan pengaturan otomatis, Klik Next
f. Isikan password untuk root (superuser), Klik Next
g. Pilih Desktop Environtment yang akan dipergunakan, jika
dipergunakan untuk server Pilih opsi Server dan klik Next
h. Tunggu sampai proses instalasi selesai lalu klik Reboot

6
i. Terakhir akan muncul login untuk mulai menggunakan CentOS
Linux, login menggunakan user root dan password yang diisikan
pada saat instalasi

LOG ON MENGGUNAKAN ROOT


1. Setelah komputer restart, masuklah ke sistem operasi Linux.
2. Log on sebagai root dan masukkan password.

C. LATIHAN
o Buatlah sebuah user account nama anda dan password dengan
menggunakan perintah adduser.
o Buatlah password untuk user yang barusan anda buat dengan
menggunakan perintah passwd.
o Cobalah untuk login menggunakan username dan password
yang baru anda buat.

7
Praktikum 3
Perintah-Perintah Dasar Pada
Sistem Operasi Linux

A. TUJUAN
a. Menggunakan perintah-perintah dasar untuk informasi user
b. Mengenal format instruksi pada sistem operasi Linux
c. Menggunakan perintah-perintah dasar pada sistem operasi Linux
d. Mempelajari utilitas dasar pada sistem operasi Linux

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

8
$ NamaInstruksi [pilihan] [argumen]
Pilihan adalah option yang dimulai dengan tanda - (minus).
Argumen dapat kosong, satu atau beberapa argumen (parameter).
Contoh:
$ ls tanpa argumen
$ ls -a option adalah -a = all, tanpa
argumen
$ ls /bin tanpa option, argumen adalah /bin
$ ls /bin /etc /usr ada 3 argumen
$ ls -l /usr 1 option dan 1 argumen l = long list
$ ls -la /bin /etc 2 option -l dan -a dan 2 argumen

2. Manual
Linux menyediakan manual secara on-line. Beberapa kunci
keyboard yang penting dalam menggunakan manual adalah:
q untuk keluar dari program man
<Spasi> ke bawah, per halaman
b kembali ke atas, 1 halaman
/teks mencari teks (string)
n meneruskan pencarian string sebelumnya

Manual dibagi atas Bab-bab sebagai berikut:


Bab Isi
1 User commands
2 System calls
3 Library calls
4 Devices
5 File formats

9
Bab Isi
6 Games
7 Miscellaneous
8 System commands
9 Kernel internal
N 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.
a. Nama user diisi dengan studentX (X: diisi 1 atau 2)
b. Password diisi dengan studentX
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, cp, mv, rm, grep

D. PERCOBAAN
Percobaan 1:
Melihat identitas diri (nomor id dan group id)
[studentX@localhost studentX]$ id

10
Percobaan 2:
Mengganti prompt dengan “$”
[studentX@localhost studentX]$ PS1=“$”

Percobaan 3:
Melihat tanggal dan kalender dari sistem
1. Melihat tanggal saat ini
$ date
2. Melihat kalender
$ cal 9 2003
$ 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 studentX

11
Changing finger information for studentX.
Password:
Name [Student1]: <Nama Pengguna>
Office []: Lab Program
Office Phone []: 170
Home Phone []: 5947280
Finger information changed.

1. Melihat informasi finger


$ finger
$ finger studentX

Percobaan 6:
Menggunakan manual
$ man ls
$ man man
$ man -k file
$ man 5 passwd

Percobaan 7:
Menghapus layar
$ clear

Percobaan 8:
Mencari perintah yang deskripsinya mengandung kata kunci yang
dicari
$ apropos date
$ apropos mail

12
$ apropos telnet

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

Percobaan 10:
Manipulasi berkas (file) dan direktori
1. Menampilkan current 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

13
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 *
$ file /*
$ file /bin/ls

Percobaan 12:
Menyalin file
1. Mengkopi suatu file. Berikan opsi -i untuk pertanyaan interaktif
bila file sudah ada.
$ cp /etc/group f1
$ ls -l
$ cp -i f1 f2

2. Mengkopi ke direktori.
$ mkdir backup
$ cp f1 f3
$ cp f1 f2 f3 backup
$ ls backup
$ cd backup
$ ls

14
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
$ cd
$ 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
$ cp prog.txt f1
$ mv f1 f2 f3 mydir

Percobaan 15:
Menghapus file
$ cp mydir/f1 f1
$ cp mydir/f2 f2
$ rm f1
$ rm -i f2

15
Percobaan 16:
Mencari kata/kalimat dalam file
$ 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
diretktori /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. Tampilkan isi file tes1 per satu layar penuh.
11. Pindahkan file tes1 dan tes2 ke direktori home.
12. Hapus file tes1 dan tes2 dengan konfirmasi.

16
Praktikum 4
Shell Pada Sistem Operasi Linux
dan Editor vi

A. TUJUAN
1. Menggunakan shell pada sistem 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
1. 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.

2. Regular Expression
Regular expression adalah cara untuk menentukan sebuah
pola karakter untuk pencarian dan penfilteran. Dengan regular
expression, kita tidak harus menentukan pola karakter yang eksak.
Untuk menggunakan regular expression, kita harus mengenal
karakter khusus yang memiliki arti tersendiri jika digunakan di dalam
pola regular expression.
Karakter Arti
. Cocok dengan sebarang satu karakter
* Cocok dengan sebarang lebih dari satu karakter

17
Karakter Arti
^ Cocok dengan awal baris
$ Cocok dengan akhir baris
\< Cocok dengan awal kata
\> 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

3. Redirection
Pada UNIX terdapat istilah standard input, standard output,
dan standard error. Standard input adalah masukkan atau input
standar dari suatu perintah atau program. Input standar ini adalah
keyboard. Standard output adalah keluaran atau output standar dari
suatu perintah atau program. Output standar ini adalah layar monitor
atau terminal. Standard error adalah keluaran atau output standar jika
pada program atau perintah terjadi error. Keluaran ini berupa pesan-
pesan kesalahan yang berguna bagi pembuat program atau orang lain
yang membutuhkan. Standar error biasanya adalah layar console.
Pada UNIX pula, kita dapat membelok-belokan standar
input, standar output, dan standar error menuju ke tujuan lain.
Misalnya membelokkan standar output suatu program ke file atau
membelokkan standar input suatu program dari suatu file.
Proses pembelokkan ini disebut redirection dan
menggunakan symbol > (membelokkan standar output ke file) dan <
(membelokkan standar input dari file).

4. Pengeditan Perintah
Dengan bash shell, kita dapat mengedit suatu baris perintah
cukup dengan tombol panah kiri dan panah kanan pada keyboard.

18
Setelah selesai mengedit, kita dapat langsung menekan tombol
[ENTER] untuk menjalankan perintah.

5. History
Dengan bash shell, kita dapat memanggil kembali perintah-
perintah yang pernah diketikkan sebelumnya dengan menggunkan
tombol panah atas dan tombol panah bawah pada keyboard. Setelah
menemukan perintah yang dimaksud, kita dapat langsung menekan
tombol [ENTER] untuk menjalankan perintah ini.

6. Editor vi
vi adalah full screen editor, artinya editor tersebut dapat
memanfaatkan fasilitas satu layar penuh. vi mempunyai dua buah
modus, yaitu:
Command line
Editor vi menginterprestasikan input sebagai instruksi untuk
dieksekusi oleh editor, contoh seperti mencari teks, mengganti
teks secara otomatis dan lainnya.

Editing
Editing vi menginterprestasikan input sebagai teks yang akan
dimasukkan ke dalam buffer 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

19
Kunci Keterangan
Pindah
H kur Pindah kursor ke kiri satu karakter
J Pindah kursor ke kanan satu karakter
K Pindah kursor ke atas
L Pindah kursor ke bawah

O Menyimpan teks (satu baris setelah posisi kursor) Untuk keluar dari 5
model kunci insert di
I Menyisipkan teks (di sebelah kiri posisi kursor)
samping ini dan
A Menyisipkan teks (di sebelah kanan posisi kursor) mengaktifkan kunci-
kunci lain, maka kita
I (shift i) Menyisipkan teks (di posisi awal baris)
harus menekan
A (shift a) Menyisipkan teks (di posisi akhir baris) tombol Esc terlebih
dahulu.

x Menghapus 1 huruf (di sebelah kanan posisi kursor)


dw Menghapus 1 kata (di sebelah kanan posisi kursor)
dd Menghapus 1 baris (di sebelah kanan posisi kursor)

yy Mengkopi 1 baris
2yy Mengkopi 2 baris
p (Paste) Menampilkan baris kalimat yang sudah dikopi dengan kunci yy

cw Mengganti 1 kata yang telah ditulis di sebelah kanan posisi kursor dengan
kalimat lain
cc Mengganti 1 baris yang telah ditulis di sebelah kanan posisi kursor dengan
kalimat lain
ctrl-b Mundur satu langkah
ctrl-f Maju satu langkah

20
Kunci Keterangan
ctrl-d Maju setengah layer
b Menggerakkan kursor ke kiri satu kata
w Menggerakkan kursor ke kanan satu kata
^ Pergi ke awal baris
$ Pergi ke akhir baris

u Membatalkan perintah yang terakhir kali


U Membatalkan seluruh perubahan teks pada baris tempat kursor berada

:! Keluar untuk sementara dari editor vi dan menjalankan perintah yang lain
:wq Write dan quite, simpan berkas dan keluar
:q! Keluar vi tanpa menyimpan
:se all Menampilkan semua pilihan set status
:se nu Menampilkan nomor baris pada kiri layar

/string Mencari string kearah depan


?string Mencari string kearah belakang
n Meneruskan pencarian untuk arah yang sama
N Meneruskan pencarian untuk arah yang berbeda

C. LANGKAH-LANGKAH
1. Masuk ke sistem operasi Linux
2. Login sebagai studentX

21
3. Gunakan perintah-perintah pada shell: , , wildcard,
pipeline, redirection.
4. Gunakan editor vi untuk percobaan 5.

D. PERCOBAAN
Percobaan 1:
Menggunakan pipeline
$ 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 reguler expression
1. Tanda * digunakan untuk mencocokkan sejumlah karakter dengan
panjang bebas.
$ cd
$ touch contoh1 contoh2 contoh3
$ ls
$ ls c*
$ rm c*

22
$ 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 sebarang karakter


tunggal yang terdapat dalam tanda kurung siku.
$ touch cth4 cth5 cth6
$ ls
$ rm cth[456]
$ ls

4. Tanda [ - ] digunakan untuk mencocokkan sebarang karakter


tunggal yang terdapat diantara 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.

23
$ cat > tes1
Baris pertama dari file tes1
Baris kedua dari file tes1
A
B
.
.
[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 mmenggunakan


perintah cat.
$ cat > tes2
Baris pertama dari file tes2
Baris kedua dari file tes2
^D
$ cat tes1 tes2 > tes3
$ ls
$ cat tes3
$ cat tes1 tes2 >> tes3

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

Percobaan 5:
Menggunakan vi
1. Memulai vi
$ vi latihan
2. Sisipkan teks sebagai awal dari editing.
iKalimat pertama<CR>
Kalimat kedua<CR>
Kalimat ketiga<Esc>
3. Sisipkan judul pada awal kalimat pertama. Gunalan kursor arrows-
key ke baris pertama. Sisipkan dengan O.
Olatihan dengan vi<CR>
<CR><Esc>
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 untuk
mengganti huruf dengan huruf yang diketik sampai <Esc>
ditekan.
Rawal yang ditulis<Esc>
7. Arahkan kursor ke depan kata “Kalimat” (huruf K), kemudian
gunakan instruksi cw, setelah itu tulis “Baris“.

25
cwBaris
8. Hasil yang diperoleh harusnya:
Latihan dengan vi

Baris awal yang ditulis


Ini adalah Kalimat yang kedua
Kalimat yang 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 direktori / masukkan ke dalam file xx1.
4. Daftar file dari direktori /usr masukkan ke dalam file xx2.
5. Daftar file dari direktori /bin masukkan ke dalam file xx3.
6. Beberapa daftar file dari direktori /usr masukkan kedalam 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

26
Kalimat yang ketiga
a. Hapus baris ke 2 dengan perintah dd
b. Hapus 3 baris sekaligus dengan perintah 3dd
c. Batalkan penghapusan tersebut dengan u (undo)

10. Ketikkan teks 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 you health is showing sign 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
spelling dari teks berbahasa Inggris yang anda ketikkan di atas
benar atau tidak: $ spell teks.txt

27
Praktikum 5
Sistem File

A. TUJUAN
1. Mengenal organisasi file di Linux
2. Menciptakan dan manipulasi direktori
3. Mempelajari ijin akses (permission) dari file dan direktori
4. Mengenal konsep Owner dan Group
5. Mengerti konsep link dan symbolic link

B. Dasar Teori
1. Organisasi File
Sistem file pada Linux menyerupai pepohonan (tree), yaitu
dimulai dari root, kemudian direktori dan sub direktori. Sistem file
pada Linux diatur secara hirarkhikal, yaitu dimulai dari root dengan
symbol “/”.
/

etc dev usr bin tmp

28
bin 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).

2. Direktori Standar
Setelah proses instalasi, Linux menciptakan sistem file yang
baku, terdiri atas direktori sebagai berikut:
Direktori Deskripsi
/etc Berisi file administrative (konfigrasi dll.) dan file
executable atau script yang berguna untuk
administrasi sistem.
/dev Berisi file khusus yang merepresentasikan peralatan
hardware seperti memori, disk, printer, tape,
jaringan dll.
/bin Berisi program standar Linux (binary).
/usr/sbin Berisi utilitas Linux.
/usr/bin
/usr/lib Berisi program library yang diperlukan untuk
kompilasi program (misalnya C). Berisi instruksi
(command) misalnya untuk print Spooler (lpadmin)
dll.
/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 tentang kernel Linux, proses dan
virtual sistem file.
/var Direktori variabel, artinya tempat penyimpanan
LOG (catatan hasil output program), file ini dapat

29
membengkak dan perlu dimonitor
perkembangannya.
/home Berisi direktori untuk pemakai Linux (pada SCO
diletakkan pada /usr).
/mnt Direktori untuk mounting sistem file.
/root Direktori home untuk superuser (root).
/usr/bin/X11 Symbolic link ke /usr/X11R6/bin, program untuk
X-Window.
/usr/src Source code untuk Linux.
/opt Option, direktori ini biasanya berisi aplikasi
tambahan (“add-on”) seperti Netscape Navigator,
kde, gnome, applix dll.

3. Direktori /etc
Berisi file yang berhubungan dengan administrasi sistem,
maintenance script, konfigurasi, security dll. Hanya superuser yang
boleh memodifikasi file yang berada direktori ini. Subdirektori yang
sering diakses pada direktori /etc antara lain:
1. httpd, apache web server.
2. ppp, point to point protocol untuk koneksi ke internet.
3. rc.d atau init.d, inisialisasi (startup) dan terminasi
(shutdown) proses di Linux dengan konsep runlevel.
4. cron.d rincian proses yang dieksekusi dengan menggunakan
jadwal (time, dependent process)
5. FILES, file security dan konfigurasi meliputi: passwd, hosts,
shadow, ftpaccess, inetd.conf, motd, printcap, profile,
resolv.conf, sendmail.cf, syslog.conf, smb.conf, fstab.

30
4. Direktori /dev
Konsep Unix dan Linux adalah memperlakukan peralatan
hardware sama seperti penanganan file. Setiap alat mempunyai nama
file yang disimpan pada direktori /dev.
Peralatan Direktori
Floppy /dev/fd0
Hard disk 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 aktual cdrom ide
atau scsi)
Mouse PS2: /dev/lp0
Universal: /dev/mouse
Parallel LPT1 : /dev/lp0
Port
LPT2 : /dev/lp1
Serial Port COM: /dev/ttyS0
Universal: /dev/modem (link dari S0 atau S1)

5. Direktori /proc
Direktori /proc adalah direktori yang dibuat di atas RAM
(Random Access Memory) dengan sistem file yang diatur oleh kernel.
/proc berisi nomor proses dari sistem dan nama driver yang aktif di
sistem. Semua nomor yang ada pada direktori tsb. merepresentasikan
PID (Proses ID).

TIPE FILE
Pada Linux terdapat 6 buah tipe file yaitu:
1. Ordinary file

31
2. Direktori
3. Block Device (Peralatan I/O)
Merupakan representasi dari peralatan hardware yang
menggunakan transmisi data per-block (misalnya 1 KB block),
seperti disk, floppy, tape.
4. Character Device (peralatan I/O)
Merupakan representasi dari peralatan hardware yang
menggunakan transmisi data per karakter, seperti terminal,
modem, plotter dll.
5. Named pipe (FIFO)
File yang digunakan secara intern oleh sistem operasi untuk
komunikasi antar proses.
6. Link file

PROPERTI FILE
File mempunyai beberapa atribut, antara lain:
1. Tipe file: menentukan tipe dari file, yaitu:
Karekter Arti
- File biasa
D Direktori
L Symbolic link
B Block special file
C Character special file
S Socket link
P FIFO

2. Ijin akses : menentukan hak user terhadap file ini


3. Jumlah link : jumlah link untuk file ini

32
4. Pemilik (Owner) : menentukan siapa pemilik file ini
5. Group : menentukan group yang memilik file ini
6. Jumlah karakter : menentukan ukuran file dalam byte
7. Waktu pembuatan : menentukan kapan file terakhir
dimodifikasi
8. Nama file : menentukan nama file yang dimaksud

Contoh:
-rw-rw-r-- 1 bin auth 1639 Oct 31 20:19 /etc/passwd

tipe ijin akses jml link pemilik group jml karakter waktu nama file

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

33
IJIN AKSES
Setiap obyek pada Linux harus mempunyai pemilik, yaitu
nama pemakai Linux (account) yang terdaftar pada /etc/passwd.
Ijin dibagi menjadi tiga peran yaitu:
1. Pemilik (Owner)
2. Kelompok (Group)
3. Lainnya (Others)

Setiap peran dapat melakukan tiga operasi yaitu:


1. Pada File
- r (Read) Ijin untuk membaca
- w (Write) Ijin mengubah/membuat
- x (eXecute) Ijin untuk menjalankan program

2. Pada direktori
- r (Read) Ijin untuk membaca daftar file dalam
direktori
- w (Write) Ijin 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)

34
chmod [ugoa] [= + -] [rwx] Dir(s)

dimana:
u = user (pemilik)
g = group (kelompok)
o = others (lainnya)
a = all (semua)
Format lain dari chmod adalah menggunakan bilangan oktal sebagai
berikut:
r w x
4 2 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) 666
Nilai umask 022
------ -
644
Kreasi direktori 777
nilai umask 022
----- -
755

SYMBOLIC LINK

35
Link adalah teknik untuk memberikan lebih dari satu nama
file dengan data yang sama. Bila file asli dihapus, maka data 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
| (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 studentOSX dengan group yang sama dengan
studentX
4. Logout dan login kembali sebagai studentX
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,
dan chgrp
9. Gunakan perintah user mask: umask
10. Gunakan perintah link ln

D. PERCOBAAN
Percobaan 1:
Melihat ps (proses status) dan status direktori /proc
1. ps menampilkan PID (proses ID) untuk shell dan proses ps itu
sendiri

36
$ 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_forwad
$ echo 1 > /proc/sys/net/ipv4/ip_forwad (tidak bekerja)

5. Mengubah kernel variabel harus dengan ijin akses root. Menjadi


root dengan utilitas su (subtitute user)
$ su
Password:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# exit

6. Kembali ke user semula dan tampilkan variabel kernel dengan


nilai baru
$ cat /proc/sys/net/ipv4/ip_forwad

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

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

3. Melihat named pipe (FIFO)


$ ls -l /dev/initctl

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 satu direktori atau sub
direktori

38
$ cd
$ 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 pemilik kecuali
jika diberikan izin aksesnya
$ rmdir B (terdapat pesan error)
$ ls -l B
$ rmdir B/F B
$ ls -l 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/studentX/C
$ pwd
$ cd
$ pwd

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

2. Memeriksa direktori home


$ ls -ld /home/studentX

3. Mengubah ijin akses (chmod)


$ touch f1 f2 f3
$ ls -l
$ chmod u+x f1
$ chmod g=w f1
$ chmod o-r f1
$ ls -l
$ chmod a=x f2
$ chmod u+x,g-r,o=w f3
$ ls -l
$ chmod 751 f1
$ chmod 624 f2
$ chmod 430 f3
$ ls -l

40
4. Mengganti kepemilikan digunakan perintah chown. Beberapa hal
yang perlu diperhatikan adalah hanya pemilik file sendiri yang
dapat mengganti kepemilikan tersebut (kecuali superuser) dan
setiap kali file atau direktori dibuat, maka pemilik file tersebut
adalah yang menciptakannya
$ ls -l
$ chown studentX:student f1
$ chown studentX:student f2 f3
$ ls -l
$ id
$ chown studentX f1 (tidak bekerja)

5. Mengubah group hanya dapat dilakukan oleh pemilik file/direktori


tersebut dengan perintah chgrp
$ grep root /etc/group
$ grep other /etc/group
$ ls -l
$ chgrp root f1
$ ls –l
$ chgrp other f3
$ ls -l

Percobaan 5:
User Mask
1. Menentukan ijin akses awal pada saat file atau directori dibuat
$ touch myfile
$ ls -l myfile

41
2. Melihat nilai umask
$ umask

3. Modifikasi nilai umask


$ umask 027
$ umask
$ touch file_baru
$ mkdir mydir
$ ls -l
$ umask 077
$ touch xfiles
$ mkdir xdir
$ ls -l

Percobaan 6:
Simbolic Link
1. Link file
$ echo “Hallo apa khabar” > halo.txt
$ ls -l
$ ln halo.txt z
$ ls -l
$ cat z
$ mkdir mydir
$ ln z mydir/halo.juga
$ cat mydir/halo.juga
$ ls -l mydir

42
2. Symbolic Link file
$ mount
$ ln /home/studentX/z /tmp/halo.txt
$ ln -s /home/studentX/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 proses-proses yang ditampilkan.
2. Lihat peralatan I/O, character device, dan named pipe yang ada
pada sistem 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 studentX.
10. Ubahlah kepemilikan sub direktori pebruari sehingga user dan
group hanya dapat melakukan read, dan cobalah untuk membuat
direktori baru haha pada sub direktori pebruari.

43
11. Modifikasi umask dari file dataku pada sub direktori januari
menjadi 027 dan berapakah 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?

Praktikum 6
Proses I/O

A. TUJUAN
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
1. Proses I/O
Sebuah proses memerlukan input dan output.

Input Proses Output

Instruksi (command) yang diberikan kepada Linux melalui


Shell disebut sebagai eksekusi program yang selanjutnya disebut
proses.
Setiap kali instruksi diberikan, maka Linux kernel akan
menciptakan sebuah proses dengan menberikan nomor PID (Proses
Identity).
Proses dalam Linux selalu membutuhkan input dan
menghasilkan suatu output. Dalam konteks Linux input/output
adalah:

44
1. Keyboard (input)
2. Layar (output)
3. Files
4. Struktur data kernel
5. Peralatan I/O lainnya (misalnya Network)
2. File Descriptor
Linux berkomunikasi dengan file melalui file descriptor yang
direpresentasikan melalui angka 0, 1, 2 dan seterusnya.
Tiga buah file descriptor standar yang selalu diciptakan oleh
proses adalah:
 0 = keyboard (standar input)
 1 = layar (standar output)

Input Output
(keyboard) 1 (Monitor)
0 Proses

 2 = layar (standar error)


Linux tidak membedakan antara peralatan hardware dan file,
Linux memanipulasi peralatan hardware sama dengan file.

3. Pembelokan (Redirection)
Pembelokan dilakukan untuk standar input, output, dan error,
yaitu untuk mengalihkan file descriptor dari 0, 1, dan 2. Simbol untuk
pembelokan adalah:
0< atau < pengganti standar input
1> atau > pengganti standar output
2> pengganti standar error

45
4. Pipa (Pipeline)
Mekanisme pipa digunakan sebagai alat komunikasi antar
proses.
Input  Proses1  Output = Input  Proses2  Output
Proses1 menghasilkan output yang selanjutnya digunakan
sebagai input oleh proses2. Hubungan output input ini dinamakan
pipa yang menghubungkan Proses1 dengan Proses2 dan dinyatakan
dengan symbol “|” .
Proses1 | Proses2
5. Filter
Filter adalah utilitas Linux yang dapat memproses standar
input (dari keyboard) dan menampilkan hasilnya pada standar 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 (akhir) boleh tidak filter.
Utilitas yang bukan filter misalnya who, ls, ps, lp, lpr, mail, dan
lainnya.
Beberapa perintah Linux yang digunakan unutuk 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 diberi 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

46
digunakan, maka tampilannya adalah jumlah baris, jumlah kata,
dan jumlah karakter.

Perintah sort
Digunakan untuk mengurutkan masukannya berdasarkan urutan
nomor ASCII dari karakter.
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 dengan pipeline
dengan sort.

C. LANGKAH-LANGKAH
1. Masuk ke sistem operasi Linux.
2. Login sebagai root.
3. Gunakan file descriptor: standard ouput, standard input, dan
standard error.
4. Gunakan redirection untuk mebelokkan standard ouput,
standard input, dan standard error.
5. Gunakan notasi 2>&1, notasi 1>&2 (atau >&2), notasi >>,
notasi here document (<<++…++) dan notasi -.
6. Gunakan pipeline untuk melakukan komunikasi antar proses.

D. PERCOBAAN
Percobaan 1: File descriptor
1. Output ke layar (standard output), input dari sistem (kernel)

47
$ ps

2. Output ke layar (standard output), input dari keyboard


(standard input)
$ cat
hallo, apa kabar
hallo, apa kabar
exit dengan ^d
exit dengan ^d
[Ctrl-d]

3. Input dari keyboard dan output ke alamat internet


$ mail studentX@localhost.localdomain
contoh surat yang langsung
dibuat pada standard input (keyboard)
[Ctrl-d]

4. Input nama direktori, output tidak ada (membuat direktori


baru), bila terjadi error maka tampilan error pada layar (standard
error)
$ mkdir mydir
$ mkdir mydir (terdapat pesan error)

Percobaan 2: Pembelokan (redirection)


1. Pembelokan standar output
$ cat 1> myfile.txt
ini adalah text yang saya simpan
ke file myfile.txt

48
2. Pembelokan standard input, yaitu input dibelokkan dari
keyboard menjadi dari file
$ cat 0< myfile.txt
$ cat myfile.txt

3.Pembelokan standar error untuk disimpan di file


$ mkdir mydir (Terdapat pesan error)
$ mkdir mydir 2> myerror.txt
$ cat myerror.txt

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 standard output adalah


sama dengan file descriptor 2 yaitu standar error
$ find /var/spool/cron –print 2> outx.txt 1>&2

6. Notasi >> (append)


$ echo “kata pertama” > surat
$ echo “kata kedua” >> surat
$ echo “kata ketiga” >> surat
$ cat surat
$ echo “kata keempat” > surat
$ cat surat

49
7. Notasi here document (<<++…++) digunakan sebagai
pembatas input dari keyboard. Perhatikan bahwa tanda pembatas
dapat digantikan dengan tanda apa saja, namun harus sama dan
tanda penutup harus diberikan pada awal baris.
$ cat <<++
> Hallo, apa kabar?
> Baik-baik saja?
> Ok!
> ++
$ cat <<%%%
> Hallo, apa kabar?
> Baik-baik saja?
> Ok!
%%%

8. Notasi – (input keyboard) adalah representan input dari


keyboard. Artinya menampilkan file 1, kemudian menampilkan
input dari keyboard dan menampilkan file2. Perhatikan bahwa
notasi “-“ berarti menyelipkan input dari keyboard.
$ cat myfile.txt – surat
Percobaan 3: Pipa (pipeline)
$ who
$ who | sort
$ who | sort -r
$ who > tmp
$ sort tmp
$ rm tmp
$ ls –l /etc | more

50
$ ls –l /etc | sort | more
Percobaan 4: Filter
$ w –h | grep pm
$ grep st /etc/passwd
$ ls /etc | wc –l
$ cat > kelas1.txt
Badu
Zulfikar
Yulizir
Yudi
Ade
[Ctrl-d]
$ cat > kelas2.txt
Budi
Gama
Asep
Muchlis
[Ctrl-d]
$ cat kelas1.txt kelas2.txt | sort
$ who | cut –c1-8
$ cat kelas1.txt kelas2.txt > kelas.txt
$ cat kelas.txt | sort | uniq

E. LATIHAN
1. Lihat daftar secara lengkap pada direktori aktif, belokkan tampilan
standar output ke file baru.

51
2. Lihat daftar secara lengkap pada direktori /etc/passwd, belokkan
tampilan standard output ke file baru tanpa menghapus file baru
sebelumnya.
3. Urutkan file baru dengan cara membelokkan standar input.
4. Urutkan file baru dengan cara membelokkan standar input dan
standard output ke file baru.urut.
5. Buatlah direktori latihan6 sebanyak 2 kali dan belokkan standard
error ke file rmdirerror.txt.
6. Urutkan kalimat berikut:
Jakarta
Bandung
Surabaya
Padang
Palembang
Lampung
Dengan menggunakan notasi here document (<<@@@…@@@)
7. Hitung jumlah baris, kata dan karakter dari file baru.urut dengan
menggunakan filter dan tambahkan data tersebut ke file baru.
8. Gunakan perintah di bawah ini dan perhatikan hasilnya.
$ cat /etc/passwd | sort | pr –n | grep st
$ find /etc –print | head
$ head /etc/passwd | tail –5 | sort
9. Gunakan perintah $ who | cat | cat | sort | pr | head | cat | tail dan
perhatikan hasilnya.

52
Praktikum 7
Shell Lanjutan

A. TUJUAN
1. Mengenal Profile
2. Mengerti konsep history
3. Membuat dan mengeksekusi shell script sederhana
4. Mengerti Job control

B. DASAR TEORI
1. Shell
Shell adalah command executive, artinya program yang
menunggu instruksi dari pemakai, memeriksa sintak dari instruksi
yang diberikan, kemudian mengeksekusi perintah tersebut. Shell
ditandai dengan prompt. Untuk pemakai menggunakan prompt $ dan
untuk super user menggunakan prompt #.
Beberapa macam shell:
1. /bin/sh
Bourne shell, dirancang oleh Steve Bourne dari AT&T
2. /bin/csh
Dikembangkan oleh UNIX Berkeley yang dikenal dengan C-
Shell

53
3. /bin/bash
Kompatibel dengan Bourne Shell dan juga mengadaptasi
kemampuan Korn-Shell.
Perbedaan mendasar antara shell di atas hampir tidak ada,
kecuali pada fasilitas pemograman dan editing.
2. Profile
Pada saat login, program akan menjalankan beberapa
program yaitu:
1. /etc/profile
Berisi shell script yang berlaku untuk seluruh pengguna Linux.

2. Profil untuk setiap pemakai


Pada home directory, login pertama kali akan memeriksa file
.bash_profile. Bila tidak ada maka file .bash_login akan dicari.
Bila .bash_login tidak ada, maka dicari file bernama .profile.

3. .bashrc
File ini akan dieksekusi untuk perpindahan dari satu shell ke shell
yang lain melalui instruksi su.

4. .bash_logout
Pada saat logout, maka bash akan mencari file .bash_logout. Bila
ada, file tersebut akan dieksekusi sebelum logout.

Isi dari /etc/profile


# System wide environment and startup programs
# Function and alises go in /etc/bashrc

PATH=”SPATH:/usr/X11R6/bin”

54
PS1=”[\u@\h \W]\\S “
umask 022

USER=’id –un’
LOGNAME=$USER
MAIL=”/var/spool/mail/$USER”

HOSTNAME=’/bin/hostname’
HISTSIZE=1000
HISTFILESIZE=1000

Export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE


USER LOGNAME MAIL
PATH merupakan daftar nama direktori. Bila sebuah instruksi
diberikan dari prompt shell, maka instruksi tersebut akan dicari
pada daftar tersebut.
PS1 adalah prompt dimana
\u = Nama User
\h = Nama Host
\W = Nama working direktori

3. History
History diadaptasi dari C-Shell, yaitu catatan dari semua
instruksi yang sejauh ini telah dilakukan. Catatan ini dapat dilihat
sebagai history, kemudian dapat dipilih kembali, diedit, dan
dieksekusi. History memudahkan pemakai untuk mengedit kembali
instruksi kompleks dan panjang, terutama bila terjadi kesalahan pada
penulisan instruksi maupun parameter.
Navigasi pada daftar history menggunakan karakater kontrol
sebagai berikut:

55
^p (Ctrl-p) melihat instruksi sebelumnya
^n (Ctrl-n) melihat instruksi berikutnya
!! eksekusi kembali instruksi sebelumnya
!!-3 3 instruksi sebelumnya akan diulang
!!88 ulangi instruksi no 88
4. Bash-script
Bash-script adalah file yang berisi koleksi program yang
dapat dieksekusi. Untuk eksekusi bash-script gunakan . sebelum file
bash-script yang berarti eksekusi shell dan tanda ./ berarti file bash-
script berada pada direktori aktual.

5. Job control
Job adalah sebuah eksekusi program yang diberikan kepada
kernel. Sebuah job dianggap selesai, bila eksekusi program tersebut
berakhir. Eksekusi job adalah sama dengan eksekusi program, baik
proses Background maupun proses Foreground.

C. LANGKAH-LANGKAH
1. Masuk ke system operasi Linux
2. Login sebagai studentX
3. Melihat profile pada file .bash_profile dan .bash_logout
4. Gunakan instruksi history: history dan fc
5. Buatlah file bash script dengan editor vi; instruksi chmod, &,
fg, bg
6. Gunakan perintah job control: jobs
7. Gunakan perintah manipulasi stack untuk direktori: dirs,
pushd, popd
8. Gunakan perintah alias dan unalias

56
D. PERCOBAAN
Percobaan 1: Profile
1. File .bash_profile dijalankan pada home direktori pemakai yang
login. File .bash_profile adalah hidden file, sehingga untuk
melihatnya gunakan opsi a pada instruksi ls.
$ ls –a
$ more .bash_profile

2. File .bash_logout akan dieksekusi sesaat sebelum logout,


berfungsi sebagai house clearing jobs, artinya membersihkan
semuanya, misalnya menghapus temporary file atau job lainnya.
Melihat file .bash_logout dengan instruksi:
$ cat .bash_logout
Percobaan 2: History
1. Melihat batasan maksimum instruksi yang dapat disimpan
$ echo $HISTSIZE

2. Melihat daftar instruksi yang telah dilakukan dengan perintah


history. Daftar instruksi dilengkapi dengan nomor urut. Nomor ini
dapat dijadikan parameter dalam mengedit atau mengulang
instruksi.
$ history

3. Selain history, instruksi fc (fix command) juga dapat digunakan


$ fc –l

4. Instruksi fc dapat menampilkan instruksi antara 2 nomor atau


dengan menggunakan kata depan instruksi yang diberikan
$ fc –l [Nomor urut1] [Nomor urut2] (Misalnya fc –l 85 88)
$ fc [Instruksi1] [Instruksi2] (Misalnya fc –l exit more)

57
Percobaan 3: Membuat bash-script dan menjalankannya
1. Membuat file p1.sh
$ vi p1.sh
echo “Program bash script”
2. Membuat program menjadi executable
$ ls –l p1.sh
$ chmod +x p1.sh
$ ls –l p1.sh

3. Menjalankan script
$ bash p1.sh
$ sh p1.sh
$ . p1.sh
$ ./p1.sh

4. Konvensi dalam pembuatan script shell dinyatakan sebagai


#!/bin/bash.
Tambahkan pada file p1.sh konvensi tersebut!
$ vi p1.sh
#!/bin/bash
echo “Program bash script”

5. Buatlah file p2.sh


$ vi p2.sh
#!/bin/bash
echo “Program 2 bash script”

58
6. Manjalankan beberapa program shell dalam satu baris instruksi
yang dipisahkan dengan tanda ;
$ cat p1.sh ; cat p2.sh
$ ./p1.sh ; ./p2.sh

7. Menjalankan script sebagai proses background, sehingga


prompt tidak menunggu program tersebut selesai. Untuk
menjalankan proses background gunakan tanda & pada akhir
instruksi.
$ ./p1.sh &
$ ./p2.sh &

8. Untuk menjalankan 2 program atau lebih dalam satu block,


kemudian dieksekusi sebagai proses background, gunakan tanda
(…)
$ (ls ; who) > hasil &
$ cat hasil

Percobaan 4: Job Control


1. Proses foreground
$ ps x

2. Proses background
$ ps x > hasil &

3. Setiap job mempunyai PID yang tunggal (unique). Untuk


melihat jobs yang aktif:
$ jobs

59
4. Buatlah file ploop.sh. File ini tidak akan pernah berhenti kecuali
ditekan Ctrl-C.
$ vi ploop.sh
#!/bin/bash
while (true)
do
sleep 10
echo “Hallo”
done

5. Buatlah file ploop.sh menjadi executable. Jalankan program,


akan ditampilkan kata Hallo setiap 10 detik. Untuk keluar program
tekan Ctrl-C (^C).
$ chmod +x ploop.sh
$ ./ploop.sh

6. Jalankan program sebagai background


$ ./ploop.sh &

7. Periksa job yang aktif


$ jobs

8. Ubah job menjadi foreground, gunakan fg dan nomor job, atau


fg dengan argumen berupa nama jobs yang sedang berjalan, atau
bila tidak rancu dengan jobs yang lain, gunakan huruf depan nama
jobs yang sedang berjalan.
$ fg %[Nomor Job] (Contoh: fg %1) atau
$ fg %ploop.sh

60
9. Untuk mengembalikan jobs tersebut ke background, tekan Ctrl-
Z (^Z), kemudian jalankan instruksi bg
$ bg
$ jobs
Percobaan 5: Manipulasi stack untuk Direktori
1. Instruksi dirs digunakan untuk melihat stack direktori, pada
output hanya ditampilkan direktori home ~
$ dirs

2. Membuat 3 buah direktori


$ mkdir marketing sales support

3. Masukkan direktori sales ke dalam stack dengan instruksi


pushd. Maka terdapat 2 direktori dalam stack yaitu $HOME/sales
dan $HOME. Kemudian lihat direktori aktual
$ pushd sales
$ pwd

4. Masuk ke direktori support


$ pushd /home/studentX/support
$ pwd

5. Lakukan kembali untuk direktori marketing


$ pushd ../marketing
$ pwd

6. Bila pushd dilakukan tanpa argumen, maka stack akan


memanggil direktori berikutnya

61
$ pushd
$ pushd
$ pushd

7. Untuk membuat direktori sales menjadi direktori paling atas


(top stack), maka pushd dapat dilakukan dengan argumen +n,
dimana n adalah nomor urut direktori tersebut
$ pushd +2
$ pwd

8. Untuk menghapus direktori dari stack, gunakan instruksi popd


$ popd
$ popd +2
$ dirs

Percobaan 6: Alias
1. Alias adalah mekanisme untuk memberi nama alias pada satu
atau sekelompok instruksi. Untuk melihat alias yang sudah
terdaftar pada sistem:
$ alias

2. Membuat beberapa alias


$ alias del=’rm -R’
$ alias h=’history’

3. Gunakan instruksi hasil alias


$ ls
$ mkdir hasil

62
$ del hasil
$ h | more

4. Untuk menghapus alias gunakan instruksi unalias


$ mkdir files
$ unalias del
$ del files (Terdapat pesan kesalahan)

E. LATIHAN
1. Eksekusi seluruh profile yang ada:
a. Edit file profile /etc/profile dan tampilkan pesan sebagai
berikut:
echo “Profile dari /etc/profile”
b. Edit semua profile yang ada yaitu:
/home/studentX/.bash_profile
/home/studentX/.bash_login
/home/studentX/.profile
/home/studentX/.bashrc
Pada setiap file tersebut, cantumkan instruksi echo, misalnya
pada /home/studentX/ .bash_profile:
echo “Profile dari .bash_profile”
Lakukan hal yang sama untuk file lainnya, sesuaikan
tampilan dengan nama file yang bersangkutan.
c. Jalankan instruksi subtitute user, kemudian keluar dengan
perintah exit sebagai berikut:
$ su studentX
$ exit
Kemudian gunakan opsi-opsi sebagai berikut:

63
$ su - studentX
$ exit
Jelaskan perbedaan kedua utilitas tersebut.

2. Prompt String (PS)


a. Edit file .bash_profile, ganti prompt PS1 dengan ‘>’.
Instruksi export diperlukan dengan parameter nama variabel
tersebut, agar perubahan variabel PS1 dikenal oleh semua
shell.
PS1=’> ’
Export PS1

b. Eksperimen hasil PS1:


$ PS1=”\! > ”
69 > PS1=”\d > ”
Mon Sep 23 > PS1=”\t > “
10:10:20 > PS1=”Saya=\u > “
Saya=studentX > 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:

64
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 & ; ./p2.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

65
date >> hasil
sleep 10
done

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 menjadi foreground, tekan ^Z


dan kembalikan program tersebut ke background
$ fg %1
$ bg

d. Stop program background dengan utilitas kill


$ 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

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

d. Ulangi instruksi pada history buffer nomor 150


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

67
Praktikum 8
Manajemen Proses

A. TUJUAN
1. Mengenal konsep proses di Linux
2. Mengerti konsep sinyal dan bagaimana cara mengelola sinyal
tersebut

B. DASAR TEORI
1. Konsep Proses di Linux
Setiap kali instruksi diberikan pada Linux shell, maka kernel
akan menciptakan sebuah proses-id. Proses ini disebut juga dengan
terminology Unix sebagai sebuah Job. Proses Id (PID) dimulai dari 0,
yaitu proses INIT, kemudian diikuti oleh proses berikutnya (terdaftar
pada /etc/inittab).
Beberapa tipe proses:
a. Foreground
Proses yang diciptakan oleh pemakai langsung pada terminal
(interaktif, dialog)
b. Batch
Proses yang dikumpulkan dan dijalankan secara sekuensial (satu
persatu). Prose Batch tidak diasosiasikan (berinteraksi) dengan
terminal.
c. 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

68
nama proses daemon di UNIX berakhiran d, misalnya inetd,
named, popd dll
2. 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
sistem
Standar nomor sinyal yang terpenting adalah:
No Sinyal Nama Deskripsi
1 SIGHUP Hangup, sinyal dikirim bila proses terputus,
misalnya melalui putusnya hubungan modem
2 SIGINT Sinyal interrupt, melalui ^C
3 SIGQUIT Sinyal Quit, melalui ^\
9 SIGKILL Sinyal Kill, menghentikan proses
15 SIGTERM Sinyal terminasi software

3. 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.

69
2. Login sebagai studentX.
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 faktor/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 di atas hanya


terbatas pada proses milik pemakai, dimana pemakai teresbut
melakukan login.
$ ps –u studentX

4. Mencari proses lainnya gunakan option a (all) dan au (all user).


$ ps –a
$ ps –au

70
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 &

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

71
$ 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 interrupt (^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

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 …”

72
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 kill diatas tidak akan menghentikan proses karena
dihalangi dengan perintah trap. Cobalah menggunakan
nomor sinyal 9
$ kill –9 [Nomor PID]
Percobaan 4: No Hangup
1. Adakalanya sebuah proses memerlukan waktu yang cukup
lama, misalnya proses sortir, sehingga perlu dilakukan sebagai
proses background. Namun bila proses masih berlangsung dan kita
melakukan logout, maka otomatis proses akan ikut berhenti, yang
artinya proses sortir harus diulang kembali. Simulasi dari proses
sort
$ vi myjob.sh
#!/bin/sh
i=1
while :
do
find / -print > berkas

73
sort berkas –o hasil
echo –n “Proses selesai pada ” >> proses.log ; date >>
proses.log
sleep 60
done

2. Jalankan proses tersebut sebagai proses background


$ chmod +x myjob.sh
$ ./myjob.sh &

3. Kemudian logout dan login kembali. Periksa sampai dimana


job bekerja.
$ ps

4. Gunakan nohup (NoHangup) agar job tetap berjalan meskipun


pemakai logout. Catatan: fungsi ini tidak berjalan di non System
V (Linux)
$ ./myjob.sh &
$ nohup myjob.sh

5. Kemudian logout dan login kembali. Periksa apakah job masih


bekerja.
$ ps

E. LATIHAN
1. Login sebagai studentX dan lihat status proses, perhatikan
kolom keluaran ps –au sebagai berikut:
a. Sebutkan nama-nama proses yang bukan root

74
b. Tulis PID dan COMMAND dari proses yang paling banyak
menggunakan CPU time
c. Sebutkan buyut proses dan PID dari proses tersebut
d. Sebutkan beberapa proses daemon
e. 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
trap “echo Hello Goodbye ; exit 0 “ 1 2 3 15
echo “Program berjalan …”
while :
do
echo “X”
sleep 20
done
Jalankan program tersebut sebagai background. Coba lakukan kill
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 di atas?

75
3. Modifikasi program myjob.sh. Buatlah trap sedemikian rupa,
sehingga bila proses tersebut dihentikan (kill), 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!

76
Praktikum 9
Utilitas Linux

A. TUJUAN
1. Mengenal utilitas dasar Linux dan Unix
2. Merangkaikan utilitas dengan pipe
3. Mempelajari konsep delimiter

B. DASAR TEORI
1. Sortir
Sortir dengan utilitas sort akan menyusun data berdasarkan
kriteria. 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 numerik
 -t yaitu sebagai pemberitahuan suatu pemisah (delimiter) dari
suatu tabel

77
2. 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

3. Word Count
Utilitas wc (word count) digunakan untuk:
 -c : menghitung jumlah karakter (chars)
 -w : menghitung jumlah kata (words)
 -l : menghitung jumlah baris (lines)
Utilitas wc banyak digunakan untuk pemrograman shell, terutama
untuk sysadmin, misalnya melihat jumlah pemakai yang terdaftar di
/etc/passwd atau melihat jumlah group dalam sistem.

4. 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

78
5. 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 ini 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.

6. 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.

7. Find
Utilitas find digunakan untuk menemukan file dengan kriteria
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) dll
 -links ±n : mencari file dengan jumlah link sama
dengan n, lebih besar atau lebih kecil dari n

79
 -user [NamaUser] : mencari file dengan nama user sama
dengan nama yang terdaftar di /etc/passwd
 -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 ls
 -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 kriteria 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/passwd
 -nogroup : mencari file yang groupnya tidak
lagi terdaftar pada /etc/group

80
C. LANGKAH – LANGKAH
1. Masuk ke sistem operasi Linux.
2. Login sebagai studentX.
3. Gunakan utilitas Linux: sort, pr, wc, tr, cut, head, tail, dan
find.
4. Gunakan pipe dan delimiter pada utilitas tersebut.

D. PERCOBAAN
Percobaan 1: Sortir
1. Buatlah file mobil.db sebagai berikut:
$ cat > mobil.db
Badu Honda Prelude 150.000.000
Hasan Toyota Kijang 125.450.000
Adam BMW 320i 191.000.000
Zoros Toyota Kijang 116.000.000
Stefan Peugeot 405 288.654.000
Andriane Opel Blazer 186.500.000
^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 kedua pada field


pertama
$ sort +0.1 mobil.db

81
5. Lakukan proses sorting berdasarkan manufaktur mobil
$ 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 numerik (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 tabel 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 proses sorting
$ sort peserta

82
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 mobil.db
$ wc –l mobil.db
$ wc –w mobil.db
$ wc –c mobil.db
Percobaan 5: Paste untuk menggabungkan 2 atau lebih file secara
vertikal
$ cat > fileA
aaaaa
bbbbb
ccccc
$ cat > file1
11111
22222
33333
44444
55555
$ paste fileA file1
$ paste fileA file1 > fileX

83
Percobaan 6: Translate
1. Mengubah huruf a yang diinputkan 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 pekanbaru
Jam 5 ketemu di saya ya

84
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’
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

85
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 current direktori
$ find . –print

2. Mencari file passwd 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

5. Mencari socket di sistem file

86
$ find / –type s 2>/dev/null
6. Mencari jumlah link 6
$ find /lib –links 6

7. Mencari nama user student


$ find / -user student 2>dev/null

8. Mencari nama group student


$ find /tmp -group student 2>dev/null

9. Mencari ijin akses 777 pada root direktori


$ find / -perm 777 2>dev/null

10. Mencari file dengan nomor inode tertentu (link lebih dari satu)
$ ls -l
$ find /home –inum [NomorInode]
11. Mencari file yang berukuran 4K, lebih besar dari 4K dan lebih
kecil dari 4K
$ find . –size 4K
$ find . –size +4K
$ find . –size -4K

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

13. Mencari file yang terakhir dimodifikasi dalam satu hari


$ find /home –mtime +1
14. Mencari file yang lebih baru dari file x

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

15. Melihat isi direktori bila file x ditemukan. Tanda {}


merepresentasikan nama file yang ditemukan
$ find –name x
$ find –name x –exec ls –l {} \;
16. Menghapus file x bila ditemukan
$ find –name x –ok rm {} \;

E. LATIHAN
1. Jelaskan tujuan dari perintah berikut:
$ 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

88
$ cat > burung
burung kakak tua
hinggap di jendela
nenek sudah tua
giginya tinggal dua
^D
4. Periksa /etc/passwd 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

89
Praktikum 10
Pemrograman Shell (1)

A. TUJUAN
1. Mempelajari elemen dasar shell script
2. Membuat program shell interaktif
3. Menggunakan parameter dalam program
4. Mempelajari test kondisi serta operator logika yang terkait
dengan instruksi test
5. Mengenal variabel built-in dari shell
6. Membuat aplikasi dengan shell menggunakan konstruksi if-
then-else

B. DASAR TEORI
1. Shell Script
Shell script dibuat dengan editor teks (ASCII editor) dan
umumnya diberikan ekstensi “.sh”. Script selalu diawali dengan
komentar, yang dimulai dengan tanda #, disambung dengan ! dan
nama shell yang digunakan.
#!/bin/sh 
# Program shell 
#
var1=x 
var2=8
 Awal dari program shell, komentar awal ini akan dibaca oleh
sistem, kemudian system mengaktifkan program shell
(/bin/sh) yang tertera di situ. Program shell dapat dipilih,
misalnya /bin/csh, /bin/ksh dan lainnya

90
 Adalah komentar, sebagai dokumentasi, baris ini akan
diabaikan oleh program shell
 Penggunaan variabel (assignment), tidak boleh ada spasi di
antara nama variabel dan konstanta
2. Variabel
Variabel shell adalah variabel yang dapat mempunyai nilai
berupa nilai String. Tata penulisan variabel adalah sebagai berikut:
nama_var=nilai_var
Variabel harus dimulai dengan alfabet, disusul dengan
alfanumerik dan karakter lain. Variabel dapat ditulis dalam huruf kecil
atau huruf besar atau campuran keduanya. Shell membedakan huruf
besar dan huruf kecil (case sensitive), contoh:
VPT=poltek
i=5
Pemberian nilai variabel tidak boleh dipisahkan dengan spasi,
karena shell akan menganggap pemisahan tersebut sebagai parameter,
contoh:
VPT =poltek ##error
VPT= poltek ##error
Untuk melihat nilai/isi dari sebuah variabel, gunakan tanda $
di depan nama variabel tersebut. Pada shell, instruksi echo dapat
menampilkan isi variabel tersebut, contoh:
VPT=poltek
echo $VPT

Gaji=450000
echo $Gaji
echo $VPT $Gaji
Bila menggunakan string yang terdiri dari lebih dari satu kata,
maka string tersebut harus berada dalam tanda kutip atau apostrof,
contoh:

91
VPT=poltek
VPT2=”poltek elektronika ITS”

3. Membaca Keyboard
Nilai variabel dapat diisi melalui keyboard (stdin) dengan
instruksi read.
4. Parameter
Sebuah program shell dapat mempunyai parameter sebanyak
9 buah dan direpresentasikan melalui variabel khusus yaitu variabel
$1, $2, $3, $4, $5, $6, $7, $8, dan $9. Nama program shell (nama
script) direpresentasikan melalui variabel $0.
Jumlah parameter dinyatakan sebagai $#. Bila tidak
memberikan parameter, maka nilai $# adalah 0.
Shell variabel $* menyatakan seluruh string yang menjadi
parameter/argumen sebuah script ($@ mempunyai arti yang sama).
$$ menyatakan nomor proses id (pid) dari script yang dijalankan. Pid
ini akan terus berubah (umumnya) menaik, setiap kali proses berjalan.
5. Status exit
Setiap program setelah selesai dieksekusi akan memberikan
informasi melalui variabel spesial $?. Indikasi yang diberikan adalah:
o Bila program berakhir dengan sukses, $? = 0
o Bila program berakhir dengan error, $? ≠ 0
Nilai dari status exit dapat dilihat melalui instruksi echo $?
6. Konstruksi if
if akan mengeksekusi instruksi-awal, dan exit status dari
instruksi tersebut akan menjadi kondisi. Bila 0, maka instruksi
selanjutnyua masuk ke dalam blok then. Bila tidak 0, maka alur
program diteruskan setelah kunci kata fi.
if instruksi-awal
then
instruksi1

92
instruksi2
………………
fi
7. Konstruksi if then else
Bila status exit tidak sama dengan 0, maka kondisi menjadi
FALSE dan instruksi setelah else akan dijalankan.
if instruksi1
then
instruksi1.1
instruksi1.2
………………
else
instruksi2.1
instruksi2.2
………………
fi
8. Instruksi test
Instruksi test digunakan untuk memeriksa kondisi dari sebuah
ekspresi. Ekspresi terdiri dari faktor dan operator yang dipisahkan
oleh spasi. Hasil test akan memberikan nilai berupa status exit, yaitu
0 bila ekspresi sesuai, bila tidak maka hasil adalah ≠ 0.
• Operator untuk test
Operator 0 atau TRUE, jika
string1 = string2 Identical
string1 != string2 Not identical
-n string String is not null
-z string String is null

93
• test untuk file dan direktori
test dapat dilakukan untuk memeriksa apakah file ada (Exist),
dapat dibaca, dapat ditulis, kosong dan lainnya.
Operator 0 atau TRUE, jika
-f namafile File ada, file biasa
-d namafile File ada, file adalah direktori
-r namafile File dapat dibaca
-w namafile File dapat ditulis
-x namafile File adalah executable
-s namafile File ada dan tidak kosong
-w namafile File dapat ditulis
Untuk memudahkan pembacaan (readability), test dapat
ditulis dengan
[ ekspresi ]
[ sebenarnya adalah nama lain dari test, bedanya [ akan
mencari kurung penutup ] pada akhir ekspresi yang harus
dipisahkan oleh spasi.

9. Logikal && dan || (Shell Level)


Notasi && dan || digunakan untuk menggabungkan instruksi
shell sebagai alternatif untuk if then else. Notasi && dan || sering
ditemukan dalam shell script system administrator untuk menjalankan
rutin dari sistem operasi.
• instruksi1 && instruksi2
shell akan mengeksekusi instruksi1, dan bila exit status
instruksi1 adalah FALSE, maka hasil dari AND tersebut
sudah pasti sama dengan FALSE, sehingga instruksi2 tidak
mempunyai pengaruh lagi. Oleh karena itu, instruksi2 tidak
dijalankan. Sebaliknya bila hasil instruksi1 adalah TRUE (0),
maka instruksi2 dijalankan
• instruksi1 || instruksi2

94
shell akan mengeksekusi instruksi1, bila exit status adalah
TRUE (0), hasil dari operasi OR tersebut sudah pasti
menghasilkan TRUE, terlepas dari hasil eksekusi instruksi2.
Oleh karena itu instruksi2 tidak perlu dijalankan. Bila hasil
instruksi1 adalah FALSE, maka instruksi2 akan dijalankan.

10. Operator Bilangan Bulat untuk test


Untuk membandingkan 2 buah bilangan, test memerlukan
operator yang berbeda dengan string.
Operator 0 atau TRUE, jika
i1 –eq i2 Bilangan sama
i1 –ge i2 Lebih besar atau sama dengan
i1 –gt i2 Lebih besar
i1 –le i2 Lebih kecil atau sama dengan
i1 –lt i2 Lebih kecil
i1 –ne i2 Bilangan tidak sama

11. Operator Logika (Test Level)


Operator logika terdiri dari AND, OR dan NOT. Operator ini
menggabungkan hasil ekspresi sebagai berikut:
NOT: simbol !
!
True False
False True
AND: simbol -a
V1 V2 V1 –a V2
False False False
False True False

95
V1 V2 V1 –a V2
True False False
True True True

OR: simbol -o
V1 V2 V1 –o V2
False False False
False True True
True False True
True True True

12. Konstruksi if then else if


Bila status exit tidak sama dengan 0, maka kondisi menjadi
FALSE dan instruksi setelah else akan dijalankan.
if instruksi1
then
instruksi1.1
instruksi1.2
………………
elif instruksi2
then
instruksi2.1
instruksi2.2
………………
else
instruksi3.1

96
instruksi3.2
………………
fi

13. Hitungan Aritmatika


Tipe dari variabel SHELL hanya satu yaitu STRING. Tidak
ada tipe lain seperti Numerik, Floating, Boolean atau lainnya.
Akibatnya variabel ini tidak dapat membuat perhitungan aritmatika,
misalnya:
A=5
B=$A +1 ## error
UNIX menyediakan utilitas yang bernama expr yaitu suatu
utilitas yang melakukan aritmatika sederhana.

14. Instruksi exit


Program dapat dihentikan (terminated/selesai) dengan
instruksi exit. Sebagai nilai default program tersebut akan
memberikan status exit 0.

C. LANGKAH – LANGKAH
1. Masuk ke sistem operasi Linux.
2. Login sebagai studentX.
3. Lakukan percobaan di bawah ini.

D. PERCOBAAN
Percobaan 1: Membuat shell script

97
1. Buatlah file prog01.sh dengan editor vi
$ vi prog01.sh
#!/bin/sh
# Program shell
#
var1=x
var2=8
2. Untuk menjalankan shell, gunakan notasi TITIK di depan nama
program
$ . prog01.sh
3. Untuk menjalankan shell, dapat juga dengan membuat
executable file dan dieksekusi relatif dari current directory
$ chmod +x prog01.sh
$ ./prog01.sh
Percobaan 2: Variabel
1. Contoh menggunakan variabel pada shell interaktif
$ VPT=poltex
$ echo $VPT

2. Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah


instruksi. Karakter $ harus ada pada awal nama variabel untuk
melihat isi variabel tersebut, jika tidak, maka echo akan
mengambil parameter tersebut sebagai string.
$ VPT2=poltex riau (Terdapat pesan error)
$ VPT2=”poltex riau”
$ echo VPT2
$ echo $VPT2
3. Menggabungkan dua variabel atau lebih
$ V1=poltex

98
$ V2=’:’
$ V3=riau
$ V4=$V1$V2$V3
$ echo $V4

4. Menggabungkan isi variabel dengan string yang lain. Jika


digabungkan dengan nama variabel yang belum didefinisikan
(kosong) maka instruksi echo menghasilkan string kosong. Untuk
menghindari kekeliruan, nama variabel perlu diproteksi dengan {
} dan kemudian isi variabel tersebut digabung dengan string.
$ echo $V3
$ echo $V3PCR
$ echo ${V3}PCR

5. Variabel dapat berisi instruksi, yang kemudian bila dijadikan


input untuk shell, instruksi tersebut akan dieksekusi
$ CMD=who
$ $CMD
$ CMD=”ls –l”
$ $CMD

6. Modifikasi file prog01.sh berikut


$ vi prog01.sh
#!/bin/sh
V1=poltex
V2=’:’
V3=riau
echo “Pemrograman shell”
echo $V1$V2$V3

99
V3=PCR
echo $V1$V2 di $V3

7. Cara sederhana mengeksekusi shell adalah dengan


menggunakan notasi titik di depan nama shell script tersebut. Bila
direktori aktual tidak terdaftar dalam PATH, maka command
tersebut tidak dapat ditemukan. Bila script belum executable,
script tidak dapat dieksekusi.
$ . prog01.sh
$ prog01.sh (Terdapat pesan error)
$ ./prog01.sh (Terdapat pesan error)
$ chmod +x prog01.sh
$ ./prog01.sh

Percobaan 3: Membaca keyboard


1. Menggunakan instruksi read
$ read nama
amir
$ echo $nama
2. Membaca nama dan alamat dari keyboard
$ vi prog02.sh
#!/bin/sh
# prog02.sh
# membaca nama dan alamat
echo “Nama Anda : “
read nama
echo “Alamat : “
read alamat

100
echo “Kota : “
read kota
echo
echo “Hasil adalah : $nama, $alamat di $kota”
3. Eksekusi program prog02.sh
$ . prog02.sh
Nama Anda :
Amir
Alamat :
Jl semangka 67
Kota :
Pekanbaru
Hasil adalah : Amir, Jl semangka 67 di Pekanbaru
4. Instruksi echo secara otomatis memberikan baris baru, maka untuk
menghindari hal tersebut disediakan opsi –n, yang menyatakan
kepada echo untuk menghilangkan baris baru. Modifikasi program
prog02.sh
$ vi prog02.sh
#!/bin/sh
# prog02.sh
# membaca nama dan alamat
echo –n “Nama Anda : “
read nama
echo –n “Alamat : “
read alamat
echo –n “Kota : “
read kota
echo

101
echo “Hasil adalah : $nama, $alamat di $kota”
5. Eksekusi program prog02.sh
$ . prog02.sh
Nama Anda : Amir
Alamat : Jl semangka 67
Kota : Pekanbaru

Hasil adalah : Amir, Jl semangka 67 di Pekanbaru

6. Variabel kosong adalah variabel yang tidak mempunyai nilai.


Variabel ini didapat atas assignment atau membaca dari keyboard atau
variabel yang belum didefinisikan
$ read nama
<CR>
$ echo $nama
$ A=
$ B=””
$ C=$A$B
$ echo $C

7. Variabel dapat disubtitusikan dengan hasil eksekusi dari sebuah


instruksi. Pada contoh dibawah, instruksi pwd dieksekusi lebih dahulu
dengan sepasang Back Quate (tanda kutip terbalik). Hasil dari
eksekusi tersebut akan masuk sebagai nilai variabel DIR
$ pwd
$ DIR=`pwd`
$ echo $DIR

8. Buatlah shell script prog03.sh

102
$ vi prog03.sh
#!/bin/sh
# prog03.sh
#
NAMA=`whoami`
echo Nama Pengguna Aktif adalah $NAMA
tanggal=`date | cut –c1-10`
echo Hari ini tanggal $tanggal
9. Eksekusi prog03.sh
$ . prog03.sh

Percobaan 4: Parameter
1. Membuat shell script prog04.sh
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 1
# Parameter passing
#
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
2. Eksekusi prog04.sh tanpa parameter, dengan 2 parameter, dengan
4 parameter
$ . prog04.sh
$ . prog04.sh amir hasan
$ . prog04.sh amir hasan badu ali

103
3. Membuat shell script prog04.sh versi 2 dengan memberikan jumlah
parameter
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 2
# Parameter passing
#
echo “Jumlah parameter yang diberikan adalah $#”
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”
4. Eksekusi prog04.sh tanpa parameter dan dengan 4 parameter
$ . prog04.sh
$ . prog04.sh amir hasan badu ali

5. Membuat shell script prog04.sh versi 3 dengan menambahkan total


parameter dan nomor proses id (PID)
$ vi prog04.sh
#!/bin/sh
# prog04.sh versi 3
# Parameter passing
#
echo “Jumlah parameter yang diberikan adalah $#”
echo “Nama program adalah $0”
echo “Parameter 1 adalah $1”
echo “Parameter 2 adalah $2”
echo “Parameter 3 adalah $3”

104
echo “Total parameter adalah $*”
echo “PID proses shell ini adalah $$”
6. Eksekusi prog04.sh dengan 4 parameter
$ . prog04.sh amir hasan badu ali

Percobaan 5: Status exit


1. String tidak diketemukan, maka status exit adalah 1
$ grep xyz /etc/passwd
$ echo $?
2. String diketemukan, maka status exit adalah 0
$ grep studentX /etc/passwd
$ echo $?
Percobaan 6: Konstruksi if
1. Instruksi dengan exit status 0
$ who
$ who | grep studentX
$ echo $?

2. if membandingkan exit status dengan 0, bila sama, maka blok


program masuk ke dalam blok then-fi
$ if [ $? = 0 ]
> then
> echo “Pemakai tersebut sedang aktif”
> fi

3. Nomor (1) dan (2) di atas dapat disederhanakan dengan


$ if who|grep studentX >/dev/null
> then

105
> echo okay
> fi
Percobaan7 : Konstruksi if then else
1. Membuat shell script prog05.sh
$ vi prog05.sh
#!/bin/sh
# prog05.sh
# Program akan memberikan konfirmasi apakah nama
# user sedang aktif atau tidak
#
echo –n “Berikan nama pemakai : ”
read nama
if who | grep $nama > /dev/null
then
echo “$nama sedang aktif”
else
echo “$nama tidak aktif”
fi
2. Jalankan prog05.sh, masukkan nama pemakai yang aktif yang
tampil pada instruksi who dan coba juga untuk nama pemakai yang
tidak aktif
$ who
$ . prog05.sh [nama=studentX]
$ . prog05.sh [nama=student]

Percobaan 8: Instruksi test


1. Menggunakan instruksi test, perhatikan spasi antara
$ NAMA=amir

106
$ test $NAMA = amir
$ echo $?
$ test $NAMA = boris
$ echo $?

2. Aplikasi test dengan konstruksi if


$ vi prog06.sh
#!/bin/sh
# prog06.sh
echo –n “NAMA = “
read NAMA
if test “$NAMA” = amir
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan amir, sorry!”
fi
3. Jalankan program prog06.sh dengan memasukkan NAMA = amir
dan NAMA = <CR> perhatikan hasil tampilannya
$ . prog06.sh [NAMA = amir]
$ . prog06.sh [NAMA = <CR>] (Terdapat pesan error)

4. Modifikasi prog06.sh dengan menggunakan notasi untuk test


$ vi prog06.sh
#!/bin/sh
# prog06.sh
echo –n “NAMA = “
read NAMA

107
if [ “$NAMA” = amir ]
then
echo “Selamat Datang $NAMA”
else
echo “Anda bukan amir, sorry!”
fi

5. Jalankan program prog06.sh dengan memasukkan NAMA = amir


$ . prog06.sh [NAMA = amir]

Percobaan 9: Notasi && dan ||


1. Bila file prog01.sh ada (TRUE), maka jalankan program
berikutnya. File prog01.sh ada, karena itu exit status adalah
TRUE, hasil operasi AND masih tergantung pada hasil eksekusi
instruksi ke-2, dan dengan demikian instruksi echo akan
dijalankan.
$ [ -f prog01.sh ] && echo “Prog01.sh ada”

2. File prog99.sh tidak ada, karena itu exit status adalah FALSE dan
instruksi echo tidak dijalankan
$ [ -f prog99.sh ] && echo “Prog99.sh ada”

3. Bila prog01.sh ada maka jalankan shell script tersebut


$ [ -f prog01.sh ] && . prog01.sh

4. Bila prog01.sh ada maka jalankan program berikutnya. File


prog01.sh memang ada, karena itu exit status adalah TRUE, dan
karena sudah TRUE maka instruksi echo tidak lagi dijalankan
$ [ -f prog01.sh ] || echo “Dieksekusi tidak ?”

108
5. File prog99.sh tidak ada, karena itu exit status adalah FALSE, hasil
masih tergantung atas exit status instruksi kedua, karena itu instruksi
echo dijalankan
$ [ -f prog99.sh ] || echo “Dieksekusi tidak ?”
6. File prog99.sh tidak ada, maka tampilkan pesan error
$ [ -f prog99.sh ] || echo “Sorry, prog99.sh tidak ada”

Percobaan 10: Operator bilangan bulat untuk test


1. Menggunakan operator dengan notasi test
$ i=5
$ test “$i” –eq 5
$ echo $?

2. Menggunakan operator dengan notasi [ ] (penganti notasi test)


$ [ “$i” –eq 5 ]
$ echo $?

3. Buatlah file prog07.sh


$ vi prog07.sh
#!/bin/sh
# prog07.sh
echo –n “INCOME = “
read INCOME
if [ $INCOME –ge 0 –a $INCOME –le 10000 ]
then
BIAYA=10
elif [ $INCOME –gt 10000 –a $INCOME –le 25000 ]

109
then
BIAYA=25
else
BIAYA=35
fi
echo “Biaya = $BIAYA”

4. Jalankan file prog07.sh dan masukkan untuk INCOME=5000,


20000, 28000
$ . prog07.sh [INCOME=5000]
$ . prog07.sh [INCOME=20000]
$ . prog07.sh [INCOME=28000]

Percobaan 12: Hitungan aritmatika


1. Menggunakan utilitas expr
$ expr 5 + 1
$ A=5
$ expr $A + 2
$ expr $A – 4
$ expr $A * 2 (Ada Pesan Error)
$ expr $A \* 2
$ expr $A / 6 +10
$ expr 17 % 5
2. Substitusi isi variabel dengan hasil utilitas expr
$ A=5
$ B=`expr $A + 1`
$ echo $B

110
Percobaan 13: Instruksi exit
1. Buat shell script prog08.sh
$ vi prog08.sh
#!/bin/sh
if [ -f prog01.sh ]
then
exit 3
else
exit –1
fi
2. Jalankan script prog08.sh dan periksa status exit
$ . prog08.sh
$ echo $?

E. LATIHAN
1. Buatlah program salin.sh yang menyalin file (copy) sebagai
berikut:
salin.sh file-asal file-tujuan
Dengan ketentuan:
 Bila file asal tidak ada, berikan pesan, salin gagal.
 Bila file tujuan ada dan file tersebut adalah direktori, beri
pesan bahwa file tidak bisa disalin ke direktori
 Bila file tujuan ada dan file biasa, beri pesan apakan file
tersebut akan dihapus, bila dijawab dengan “Y”, maka copy
file tersebut
 Bila file tujuan belum ada, lakukan copy
Untuk mengambil nama file, gunakan parameter $1 dan $2. Bila
jumlah parameter tidak sama ($#) dengan 2, maka beri pesan exit
= -1

111
#!/bin/sh
# file: salin.sh
# Usage: salin.sh fasal ftujuan
if [ $# -ne 2]
then
echo “Error, usage: salin.sh file-asal file-tujuan”
exit –1
fi
fasal=$1
ftujuan=$2
echo “salin.sh $fasal $ftujuan”
……
……

2. Buat program yang memeriksa nama direktori, jika parameter


tersebut adalah direktori, maka jalankan instruksi ls –ld pada direktori
tersebut. Namakan program tersebut checkdir.sh. Gunakan notasi [ -d
NamaDirektori ] dan pilih logika && atau || pada level shell.
#!/bin/sh
# file: checkdir.sh
# Usage: checkdir.sh DirectoryName
#
if [ $# -ne 1]
then
echo “Error, usage: checkdir.sh DirectoryName”
exit 1
fi
[ … ] && …

112
3. Dengan shell script pph.sh, hitung PPH per tahun dengan ketentuan
sebagai berikut:
 10 juta pertama PPH 15%
 25 juta berikutnya (sisa) PPH 25%
 Bila masih ada sisa, maka sisa tersebut PPH 35%
Contoh:
Gaji 8 juta
PPH = 15% * 8 juta
Gaji 12 juta
PPH =15% * 10 juta + 25% * (12-10) juta
Gaji 60 juta
PPH = 15% * 10 juta + 25% * 25 juta + 25% * (60-10-25)
juta
Debugging: untuk melakukan tracing (debug) gunakan opsi –x
pada eksekusi shell.
$ sh –x pph.sh
+ echo –n ‘Berikan gaji dalam ribuan rupiah : ‘
Berikan gaji dalam ribuan rupiah :
+ read gaji 20000
+ pkp=10000
+ ‘[‘ 20000 –le 10000 ‘]’
++ expr 20000 – 10000
+ gaji=10000
+ pph=1500
+ pkp=25000
+ ‘[‘ 10000 –le 25000 ‘]’
+ pkp=10000

113
++ expr 1500 + 10000 ‘*’ 25 / 100
+ pph=4000
+ echo ‘Pajak Penghasilan = 4000’
Pajak Penghasilan = 4000
Solusi:
Variabel: pph = pajak penghasilan
pkp = penghasilan kena pajak
gaji = gaji yan gditerima dalam ribuan rupiah
#!/bin/sh
# prog: pph.sh
echo –n “Berikan gaji dalam ribuan rupiah : “
read gaji
pkp = 10000
if [ $gaji –le $pkp ]
then
pkp=$gaji
pph=`expr $pkp \* 15 / 100`
else
gaji=`expr $gaji - $pkp`
pph=1500
pkp=25000
if [ $gaji –le $pkp ]
then
pkp=$gaji
pph=`expr $pph + $pkp \* 25 / 100`
else
pph=`expr $pph + $pkp \* 25 / 100`

114
gaji=`expr $gaji - $pkp`
if [ $gaji –gt 0 ]
then
pkp=$gaji
pph=`expr $pph + $pkp \* 35 / 100`
fi
fi
fi
echo “Pajak Penghasilan = $pph”

115
Praktikum 11
Pemrograman Shell (2)

A. TUJUAN
1. Menggunakan struktur case – esac.
2. Loop dengan while, for, do while.
3. Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.

B. DASAR TEORI
1. 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
………………
;;
match2)
instruksi2.1
instruksi2.2
………………
;;
*)

116
instruksi3.1
instruksi3.2
………………
;;
esac
case diakhiri dengan esac dan pada setiap kelompok instruksi
diakhiri dengan ;;. Pada akhir pilihan yaitu *) yang berarti adalah
“default”, bila kondisi tidak memenuhi pola sebelumnya.
2. 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
3. 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 FALSE, atau program keluar dari blok while melalui exit atau
break.
while kondisi
do
instruksi1
instruksi2
………………
done

117
4. 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  :
5. Fungsi
Fungsi adalah program yang dapat dipanggil oleh program
lainnya dengan menggunakan notasi NamaFungsi(). Fungsi
memberikan exit status ($?) yang dinyatakan dengan return nr, 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 variabel
lokal atau global. Hal yang perlu diperhatikan, nama variabel yang
digunakan dalam sebuah fungsi, jangan sampai bentrok dengan nama
variabel yang sama di luar fungsi, sehingga tidak terjadi isi variabel
berubah.

C. LANGKAH – LANGKAH
1. Masuk ke sistem operasi Linux.
2. Login sebagai studentX.
3. Gunakan instruksi case-esac.
4. Gunakan instruksi looping for-do-done, while-do-done, dummy.

118
5. Buatlah fungsi dengan variabel lokal dan global.

D. PERCOBAAN
Percobaan 1: Konstruksi case - esac
1. Buatlah file prog09.sh dengan editor vi
$ vi prog09.sh
#!/bin/sh
# Prog: prog09.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
;;
*)

119
echo “Salah pilih !!”
;;
esac
Jalankan program prog09.sh, cobalah beberapa kali dengan
inputan yang berbeda
$ . prog09.sh
Buatlah file prog10.sh yang merupakan bentuk lain dari case
$ vi prog10.sh
#!/bin/sh
# Prog: prog10.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
Jalankan program prog10.sh, cobalah beberapa kali dengan
inputan yang berbeda
$ . prog10.sh
Modifikasi file prog10.sh yang merupakan bentuk lain dari case
$ vi prog10.sh
#!/bin/sh
# Prog: prog10.sh
echo –e “Jawab (Y/T) : \c“
read JWB
case $JWB in
[yY] | [yY][aA] ) JWB=y ;;
[tT] | [tT]idak ) JWB=t ;;

120
*) JWB=? ;;
esac
Jalankan program prog10.sh, cobalah beberapa kali dengan
inputan yang berbeda
$ . prog10.sh
Percobaan 2: Konstruksi for-do-done
2. Buatlah file prog11.sh
$ vi prog11.sh
#!/bin/sh
# Prog: prog11.sh
for NAMA in bambang harry kadir amir
do
echo “Nama adalah : $NAMA”
done
Jalankan program prog11.sh
$ . prog11.sh
Buatlah file prog12.sh yang berisi konstruksi for dan wildcard,
program ini akan menampilkan nama file yang berada di current
direktori
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *
do
echo $F
done
Jalankan program prog12.sh
$ . prog12.sh

121
Modifikasi file prog12.sh, program ini akan menampilkan long list
dari file yang mempunyai ekstensi lst
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *.lst
do
ls –l $F
done
Jalankan program prog12.sh
$ . prog12.sh
Percobaan 3: Konstruksi while-do-done
3. Buatlah file prog13.sh
$ vi prog13.sh
#!/bin/sh
# Prog: prog13.sh
PILIH=1
while [ $PILIH –ne 4 ]
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4. Keluar”
echo –e “ Pilihan : \c”
read PILIH
if [ $PILIH –eq 4 ]
then
break

122
fi
clear
done
echo “Program berlanjut di sini setelah break”
Jalankan program prog13.sh
$ . prog13.sh
Percobaan 4: Instruksi dummy
4. Modifikasi file prog13.sh
$ vi prog13.sh
#!/bin/sh
# Prog: prog13.sh
PILIH=1
while :
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4. Keluar”
echo –e “ Pilihan : \c”
read PILIH
if [ $PILIH –eq 4 ]
then
break
fi
clear
done
echo “Program berlanjut di sini setelah break”

123
Jalankan program prog13.sh
$ . prog13.sh
Buatlah file prog14.sh yang berisi instruksi dummy untuk
konstruksi if
$ vi prog14.sh
#!/bin/sh
# Prog: prog14.sh
echo –n “Masukkan nilai : “
read A
if [ $A –gt 100 ]
then
:
else
echo “OK !”
fi
Jalankan program prog14.sh beberapa kali dengan input yang
berbeda
$ . prog14.sh
Percobaan 5: Fungsi
5. Buatlah file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( ) {
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”

124
F1
F1
echo $?
Jalankan program fungsi.sh
$ . fungsi.sh
Menggunakan variabel 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”
Jalankan program fungsi.sh
$ . fungsi.sh
Menggunakan variabel pada fungsi dengan memodifikasi file
fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh

125
F1( )
{
local Honor=10000
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor”
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 bukan dari string tersebut, maka berikan pesan error.
Sempurnakan program di bawah ini untuk keperluan tersebut.
#!/bin/sh
# See how we were called
case “$1” in

126
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”
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]’`

127
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

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

129
Praktikum 12
Redhat Package Manager (RPM),
TAR dan GZIP

A. TUJUAN
1. Mengerti konsep RPM, TAR dan GZIP.
2. Menggunakan RPM untuk melihat Package software yang sudah
diinstalasi.
3. Menggunakan RPM untuk instalasi software baru.
4. Menggunakan RPM untuk menghapus package software yang ada
di sistem.
5. Menggunakan TAR untuk instalasi software.
6. Menggunakan GZIP untuk instalasi software.

B. DASAR TEORI
1. Manajemen Paket Software
Setiap sistem Linux mempunyai manajemen paket software,
yang paling popular adalah RPM (Redhat Package Manajemen).
RPM mengatur instalasi paket software,
maintenance/upgrade dan menghapus paket software dari sistem, atau
lebih dikenal dengan install dan uninstall (remove).
RPM menyimpan informasi tentang paket yang di-install
dalam database. Penghapusan paket berarti juga menghapus semua
files dan direktori yang terdaftar pada database tersebut, lengkap
dengan nama PATH (lokasi dimana file dan direktori tersebut berada).
RPM menyimpan paket dalam bentuk file yang telah
dikompress dan ditulis sebagai file dengan ekstensi *.rpm.

130
2. Fungsi Manajer Paket Software
a. Menghitung besar paket yang disesuaikan dengan kapasitas
penyimpanan disk yang masih tersedia, apakah cukup atau tidak.
b. Memerikasa apakah ada library atau file-file lain yang
dibutuhkan untuk software tersebut.
c. Menghindari konflik dengan software yang telah terpasang di
sistem.
d. Proses instalasi tidak mengacaukan sistem (membuat sistem
file terganggu/korup).
e. Upgrade ke versi yang baru tanpa mengganggu konfigurasi
yang sudah ada.
f. Verifikasi file dalam paket tersebut.

3. Paket Software
Terdiri dari 2 jenis:
a. Paket binary (biner)
Terdiri atas kumpulan program executable. Paket ini berekstensi
*.rpm.

b. Paket source
Berisi teks dari program yang kemudian dapat dikompilasi
menjadi executable. Paket ini berekstensi *.src.rpm.

4. Nama Paket
Penamaan paket diatur denga konvensi sebagai berikut:
1. Nama
2. Versi
3. Release

131
4. Platform arsitektur (Intel, Alpha, Risc,…)
xyz-1.2-6.i386.rpm

nama versi release platform

Platform :
i386 Intel
alpha DEC
sparc SUN
mips MIPS
ppc PowerPC
m68k Motorola 680x0
noarch Bebas, Tanpa platform

5. RPM Query
RPM dengan opsi –q memberikan informasi tentang paket
sebagai berikut:
# rpm –q samba
samba -2.0.5-1s
#
Informasi tentang versi paket samba adalah versi 2.0.5.
Beberapa sub-opsi dapat diberikan, antara lain :
i menampilakan informasi yang lebih rinci
l list (daftar) semua file(s)
d tampilkan hanya file dokumentasi saja
c tampilkan hanya konfigurasi file
f info tentang paket memilih file apa saja

132
p berfungsi pada paket yang belum diinstalasi
--scripts menampilkan script untuk instalasi

6. TAR
TAR singkatan dati Tape Archive. Tar mula-mula didesain
untuk backup tape, tetapi digunakan untuk membuat file tar pada
semua sistem file. Tar membuat satu “tar file” (yang disebut dengan
“tarball”) pada beberapa file dan direktori. File tar tidak dikompresi,
hanya sebuah file heap yang dibentuk bersama dalam satu container.
Sehingga file tar akan mempunyai jumlah byte yang sama dengan
semua file individu yang dikombinasikan ditambah sedikit file ekstra.
File tar dapat dikompresi dengan menggunakan gzip atau bzip2.
Contoh:
1. tar –xvf example.tar mengekstrasi isi dari example.tar dan
menunjukkan file yang akan diekstrasi
2. tar –cf backup.tar /home/ftp/pub membuat file tar bernama
backup.tar dari isi direktori /home/ftv/pub
3. tar –tvf example.tar menampilkan isi dari example.tar pada
screen.

7. GZIP
GZIP merupakan format ZIP UNIX yang asli. Biasanya
membentuk file tar terlebih dahulu dan kemudian mengkompresi
dengan menggunakan gzip. File-file ini mempunyai ekstensi .tar.gz
yang menunjukkan file tar yang di zip dengan gzip. Selain itu juga
terdapat file berekstensi .tgz. File ini merupakan file kompresi dengan
gzip yang compatible denga WinZip dan PkZip. Sehingga file ZIP
pada UNIX dapat di unzip pada windows.
Contoh:
a. untuk kompresi file menggunakan gzip, eksekusi perintah
berikut: gzip filename.tar (dimana filename.tar adalah nama file
yang dikompres). Hasil dari operasi ini adalah file yang
bernama filename.tar.gz. defaultnya, gzip akan menghapus file
filename.tar

133
b. untuk dekompresi file menggunakan gzip, eksekusi perintah
berikut: gzip –d filename.tar, hasil dari operasi ini adalah file
bernama filename.tar. Defaultnya, gzip akan menghapus file
filename.tar.gz

C. LANGKAH-LANGKAH
1. Masuk ke sistem operasi Linux.
2. Login sebagai root.
3. Instalasi paket software menggunakan rpm.

D. PERCOBAAN
Percobaan 1: RPM query
Informasi tentang paket software
# rpm –qi samba|more

Instal dari CD-ROM, bukan dari paket yang sudah diinstalasi.


Untuk itu pindah direktori ke tempat dimana file rpm tersebut
berada
#cd /mnt/cdrom/Packages/RPMS
#rpm –qpi samba -2.0.lS.i386.rpm | more

Melihat file apa saja yang sudah diinstalasi, gunakan sub-opsi -l.
#rpm –ql samba |more

Melihat file konfigurasi


#rpm –qc samba | more
Melihat dokumentasi file
#rpm –qd samba | more

134
Melihat script file yang digunakan untuk instalasi. Perhatikan
bahwa hasli output tergantung atas versi Linux yang digunakan
# rpm –q –scripts samba

Percobaan 2: Menghapus paket


Opsi –e digunakan untuk menghapus paket yang sudah
diinstalasi. Bila ada ketergantungan paket lain atas paket yang
akan dihapus, maka RPM membatalkan penghapusan tersebut
# rpm –q apache
# rpm –e apache

Paket apache tidak bisa dihapus karena masih ada paket lain yang
tergantung atas paket tersebut, yaitu modul PHP. Maka paket
mod_php3 harus dihapus lebih dahulu
# rpm –e mod_php3

Setelah itu paket apache baru bisa dihapus


# rpm –e apache

Percobaan 3: Menggunakan tar


Logout dari root dan login sebagai studentX.
Pastikan berada pada direktori home dan lihatlah isi direktori
home. Pindah ke direktori desktop. Setelah itu kembali ke
direktori home.
$ cd
$ ls –al
$ cd Desktop
$ cd

135
Buatlah file tar pada direktori desktop
$ tar –svf desktop.tsr Desktop

Rename direktori desktop menjadi Desktop.old. lihatlah file


desktop.tar pada direktori Desktop.old
$ mv Desktop Desktop.old
$ ls –l
$ cd Desktop.old
$ ls –l
$ cd ..

Ekstrasi isi dari file tar. Lihatlah isi direktori dan seharusnya akan
terlihat direktori Desktop yang original
$ tar –xvf desktop.tar
$ls –al
$ cd Desktop

Hapus direktori Desktop


$ rm –rf Desktop

Percobaan 4: Menggunakan gzip


Buatlah file gzip dari desktop.tar, pastikan terbentuk file
desktop.tar.gz
$ gzip desktop.tar
$ ls –al
Dekompresi file gzip desktop.tar.gz dan cobalah untuk ekstrasi isi
file tar

136
$ gzip –d desktop.tar.gz
$ ls –al
$ tar –xvf desktop.tar
$ ls –al
$ cd Desktop

Hapus file tar dan direktori Desktop.old


$ rm desktop.tar
$ rm –rf Desktop.old

E. LATIHAN
1. Masukkan cd 1 dari Redtah Linux 7.0 Installation dan pilihlah salah
satu file rpm pada direktori games dan cobalah untuk melakukan
instalasi file rpm tersebut
2. Masuklah ke XWindow dan bukalah cd instalasi tersebut dan
cobalah untuk melakukan instalasi menggunakan menu pada
XWindow.
3. Buatlah file menggunakan editor vi dengan nama [Nama Anda].txt.
Pada file ini tuliskan langkah-langkah membuat file zip dari suatu
direktori pada Linux. Kemudian file tersebuat buatlah menjadi file tar
dan kompresi file tersebut menggunakan gzip.

137
Praktikum 13
Tutorial AWK

A. DEFENISI
AWK merupakan bahasa pemrograman yang dapat
digunakan untuk tugas-tugas manipulasi data. AWK dikembangkan
pada tahun 1977 di laboratorium AT&T sebagai bagian dari dari
percobaan terhadap grep dan sed. Dengan kemampuan untuk
menerima suatu pattern matching, kita dapat memanfaatkan AWK
untuk mengembangkan sebuah aplikasi script yang dapat
memanipulasi data dengan mudah.

B. LATIHAN
1. Buatlah sebuah file text dengan isi dokumen sebagai berikut
Beth 4.00 0
Dan 3.75 0
Kathy 4.00 10
Mark 5.00 20
Mary 5.50 22
Susie 4.25 18
Catatan: Gunakan tab untuk pemisah antar field. Simpanlah dengan
nama data.

2. Pada prompt shell Anda, ketiklah perintah berikut


$ awk '{ print }' data
$ awk '{ print $0 }' data
$ awk '{ print $1, $2 * $3 }' data

138
$ awk '$3 != 0 {print $1, $2, $3 }' data
$ awk '{ print NR, $1, $2, NF }' data
$ awk '{printf("%d Total pay for %s is %.2f\n", NR, $1, $2 * $3)}'
data
$ awk '{printf("%3d Total pay for %-10s is %8.2f\n", NR, $1, $2 *
$3)}' data
$ awk '/Susie/ {print $1, $2 * $3}' data

3. Buatlah sebuah file dengan nama a.awk yang berisi


BEGIN { print "No- Employee------------------- --Salary"}
{printf("%3d Total pay for %-10s is %8.2f\n", NR, $1, $2 * $3)}
END { print "--- --------------------------- --------"}

lalu jalankan dengan perintah berikut


$ awk -f a.awk data

BEGIN dan END adalah keyword yang akan mencocokan di


awal dan diakhir dari input file.

4. Sekarang kita coba untuk melakukan perhitungan sederhana.


Buat file dengan nama b.awk yang berisi
{jum = jum + $2 * $3}
END {printf("Total pay for all emp is %10.2f\n", jum)}

lalu jalankan dengan perintah berikut

$ awk -f b.awk data


Bagaimana dengan menghitung rata-ratanya?

139
5. Kita coba mencari nilai terbesar. Buatlah file c.awk dengan isi
sebagai berikut

$2 > max { max = $2; maxemp = $1}


END { print "Jam kerja tertinggi :", max, " oleh ", maxemp }
Cobalah Anda buat untuk mencari gaji terbesar!

6. Perintah Kontrol if. Buatlah sebuah file dengan nama d.awk yang
berisi

$2 > 4 { n = n +1; pay = pay + $2 * $3}


END { if (n > 0)
print n, "employees, total pay is ", pay,
"average pay is", pay/n
else
print "no employees are paid more than $6/hour"
}

7. Perintah Kontrol while. Buatlah sebuah file dengan nama e.awk


yang berisi

{
i=1
while (i <= $3) {
printf("\t%8.2f\n", (1 + $2) ^ i)
i=i+1
}
}

140
8. Perintah Kontrol for. Buatlah sebuah file dengan nama f.awk yang
berisi

{
for (i=1; i <= $3; i = i + 1)
printf("\t%8.2f\n", (1+$2)^i)
}

9. Array dapat Anda buat dengan cara seperti contoh berikut ini
{ line[NR] = $0 }
END { i = NR
while (i > 0) {
print line[i]
i=i-1
}
}

10.Buatlah file data kedua dengan nama countries dengan isi berikut

USSR 8649 275 Asia


Canada 3852 25 Nort America
China 3705 1032 Asia
USA 3615 237 North America
Brazil 3286 134 South America
India 1267 746 Asia
Mexico 762 78 North America
France 211 55 Europe
Japan 144 120 Asia

141
Germany 96 61 Europe
England 94 56 Europe

11.Buatlah file dengan nama g.awk yang berisi

/Asia/ { pop["Asia"] += $3 }
/Europe/ { pop["Europe"] += $3 }
END { print "populasi Asia ", pop["Asia"], " juta"
print "populasi Eropa ", pop["Europe"], " juta"
}

Cobalah Anda menampilkan field demi field untuk data berikut

Beth:4.00:0
Dan:3.75:0
Kathy:4.00:10
Mark:5.00:20
Mary:5.50:22
Susie:4.25:18

Catatan: FS adalah variabel internal yang digunakan sebagai


informasi field separator.

12.Coba dengan script berikut

142
BEGIN {FS = "\t"}
{ pop[$4] += $3 }
END { for (name in pop)
print name, pop[name]
}

13. Pola pencocokan String pada awk dapat dilakukan dengan


mengikuti sintak berikut

Sintak Keterangan

/regexp/ Mencocokan inputan dengan regexp yang diberikan


expression ~
/regexp/ Mencocokan apakah string expression berisi substring dari
regexp expression !~
/regexp/ Mencocokan apakah string expression tidak berisi
substring dari regexp

Regular Expression:
\^$.[]|()*+?
\ spesial karakter
^ pencocokan pada posisi awal
$ pencocokan pada posisi akhir
. mewakili sembarang 1 karakter
[ABC] mencocokan sembarang karakter A atau B atau C
[A-Za-z]
[^0-9] yang bukan antara 0 - 9

143
A|B A atau B
A* mencocokan ada atau 1 atau lebih dari 1 A
A+ mencocokan ada satu atau lebih A
A? mencocokan null string atau A
( r ) mencocokan beberapa string seperti pola r

144
Praktikum 14
Tutorial AWK ( 2 )

A. DEFENISI
Bahasa yang disediakan oleh Linux dan merupakan standar
di banyak (sebagian besar) sistem UNIX adalah awk. Singkatan awk
merupakan kependekan dari huruf pertama last-name
pengembangnya: Alfred Aho, Peter Weinberger, dan Brian
Kernighan. Seperti sed, awk merupakan bahasa interpreter pattern-
matching. Bahasa awk dapat membaca dari stdin dan dapat
melewatkan nama file yang berisi argumennya.

B. LATIHAN
1. Buatlah file awk.data yang berisi:
Blinn, David;42 Clarke
Street;Sunnyvale;California;95123;33
Dickson, Tillman;8250 Darryl Lane;San
Jose;California;95032;34
Giberson, Suzanne;102 Truck Stop Road;Ben
Lomond;California;96221;26
Holder, Wyliam; 1932 Nuldev Street;Mount
Hermon;California;95431;42
Nathanson, Robert;12 Peabody
Lane;Beaverton;Oregon;97532;33
Richards, John;1232 Bromide
Drive;Boston;Massachusetts;02134;36
Shaffer, Shannon;98 Whatever
Way;Watsonville;California;95332;24

145
Data di atas terdiri dari: nama, alamat, kota, negara bagian,
kode pos, dan umur yang dipisahkan dengan tanda ";".

2. Kita ingin mencetak nama dan kota dimana orang tersebut


berumur kurang dari 30
tahun.
$ awk -F";" '$6 < 30 { print $1, $3 }' awk.data

3. Kita ingin mencetak nama dan kota dimana negara bagiannya


California.
$ awk -F";" '$4 == "California" { print $1, $3 }' awk.data

4. Kita ingin mencetak nama dan kota dimana umur orang tersebut
33.
$ awk -F";" '$6 == 33 { print $1, $3 }' awk.data

5. Kita ingin mencetak baris dimana pada baris tersebut berisi


karakter "on", sehingga kita dapat menggunakan regular
expression di dalam kriteria pencarian.
$ awk -F";" '/on/ { print $0 }' awk.data

6. Pada awk, regular expression dapat dibuat lebih rumit.


$ awk -F";" '/[^s]on[^;]/ { print $0 }' awk.data

Apa maksud dari perintah diatas?

7. Kita ingin mencetak hanya baris yang pada field pertamanya


(last-name nama orang)
dimulai dari A hingga M. Karena data sudah terurut, maka:

146
$ awk -F";" '/^A/,/^M/ { print $0 }' awk.data
Tapi apa yang kita dapat?
8. Hal di atas bisa terjadi karena awk mencari baris yang
cocok/sesuai dengan kriteria yang kita tentukan. Sehingga,
perintah diatas mempunyai arti "Cari baris pertama yang
dimulai dengan A dan kemudian cetak semua baris termasuk
baris terakhir dengan awalan M". Karena tidak ada baris yang
dimulai dengan "A", maka "alamat awal" tidak ada.
$ awk -F";" '/^[A-M]/ { print $0 }' awk.data
9. Jika kita ingin menggunakan "alamat awal" dan "alamat
akhir", kita harus menentukan secara spesifik huruf awal
nama yang benar-benar ada pada file kita.
$ awk -F";" '/^B/,/^H/ { print $0 }' awk.data
10. Karena mencetak merupakan hal sangat penting bagi awk, ada
dua cara mencetak dengan awk. Pertama sudah kita lakukan di
atas. Kedua kita bisa menggunakan printf, sehingga kita bisa
menentukan bentuk keluaran lebih detil.
$ awk -F";" '$6 > 30 { printf"%-20s %5d\n", $1, $6 }'
awk.data
11. Cara lain menggunakan awk dengan menggunakan pipe.
$ ls -l | awk '{ print $1" "$9 }'
12. awk mempunyai kemampuan melakukan banyak task
pada tiap baris dengan dimulai dengan membaca dan
setelah itu mengakhiri membaca. Kita menggunakan
pasangan BEGIN dan END sebagai penanda.

BEGIN { FS=";" }
{printf"%s\n", $1}
{printf"%s\n", $2}
{printf"%s, %s\n",$3,$4}
{printf"%s\n", $5}
END { print "Total Nama: " NR }

147
Tulis script di atas dan simpan ke dalam file dengan nama awk.scr.
Kemudian lakukan sebagai berikut.
$ awk -f awk.scr awk.data
13. Tambahkan pada script di atas dengan sebelum END.
{total = total + $6}

Setelah END tambahkan.


{print "Rata-rata umur: " total/NR}

Tabel Operator Pembanding


No Operator Arti
1. < kurang dari
2. <= kurang dari atau sama dengan
3. == sama dengan
4. != tidak sama dengan
5. >= lebih dari atau sama dengan
6. > lebih dari

148
Tabel Nilai Default dari Variabel yang Built-in
No. Variabel Arti Default
1. ARGC number of command-line arguments -
2. ARGV array of command-line arguments -
3. FILENAME name of current input file -
4. FNR record number in current file -
5. FS input field separator space or tab
6. NF number of fields in the current record -
7. NR number of records read -
8. OFMT numeric output format %.6g
9. OFS output field separator space
10. ORS output record separator new line
11. RS input record separator new line

149
Praktikum 15
Informasi Hardware dari BIOS
dan Linux

A. TUJUAN
1. Peserta praktikum dapat mengenal konfigurasi hardware
komputer dari informasi yang diberikan oleh BIOS maupun
dari Linux, sehingga diharapkan peserta dapat memahami
penanganan konfigurasi hardware oleh Linux.
2. Mengetahui informasi hardware dari BIOS ataupun Linux.
3. Mengetahui beberapa perintah yang digunakan untuk
mendapatkan informasi hardware pada Linux.

B. PERCOBAAN
1. Mengetahui Informasi Hardware dari BIOS
1. Cold boot
2. Selama proses cold boot, perhatikan parameter-parameter yang
ditampilkan oleh BIOS.
Catatlah, kemudian isilah item-item berikut:
No. Jenis Nilai
1. CPU Prosesor: ........................
Clock: ..... ………MHz
2. RAM ............. MByte
3. HD Cyl ....., Head ....., Sector ....., Size
.....
4. BIOS Merk .....
5. Floppy Jenis .....

150
6. Paralel Port I/O ....., IRQ .....
7. Serial Port COM1: I/O ....., IRQ .....
COM2: I/O ....., IRQ .....
8. VGA Card Merk/Type .........., VRAM .....
MByte

2. Mengetahui Informasi Hardware dari Linux


1. a. Cold boot
b. Linux started...
c. Menjalankan LILO/Grub

LILO/Grub merupakan boot manager Linux yang disimpan


sebagian umumnya di daerah MBR (Master Boot Record).
LILO/Grub dijalankan untuk menjalankan kernel Linux yang
tersimpan di direktori /boot.

2. Kernel Linux dijalankan.

3. Prompt login muncul

Login session pada terminal ditangani oleh program


mingetty. Program mingetty akan menampilkan prompt
login, menerima password dan autentikasinya. Pada mesin
kita sekarang, telah disiapkan beberapa virtual terminal yang
diberi nama dari tty1, tty2, dst. Untuk mengetahui informasi ini
lakukan perintah berikut:

• login dengan nama studentX


• jika berhasil maka akan muncul prompt shell yang siap
menerima perintah

151
• ketikkan more /etc/inittab
• ketik /tty1
• ada berapa tty yang disiapkan? berada di dalam
direktori apa program mingetty disimpan?

Misal tty yang disiapkan sebanyak 3, hal tersebut berarti


bahwa seolah-olah pada satu mesin yang sama, kita dapat
bekerja dengan 3 buah terminal yang berbeda. Lakukan
langkah berikut:
• tekan ALT-F2, login dengan username studentX
• ketikkan perintah tty, anda berada di terminal berapa?
• tekan ALT-F1
• pada terminal tty1 ini, ketikkan perintah : cat /etc/issue >
/dev/tty2
• tekan ALT-F2, apa yang terlihat pada terminal tty2
sekarang? apa yang terjadi?
• tekan ENTER untuk kembali ke prompt
• ketik perintah logout untuk menutup session
• tekan kembali ALT-F1

4. a. untuk mengetahui jenis shell yang dipakai, ketikkan echo


$SHELL
b. shell apa yang sedang digunakan sekarang?
c. untuk mengetahui tipe terminal ketikkah echo $TERM

5. Untuk informasi device yang terbaca Linux di mesin kita,


ketikkan dmesg | more.

152
6. Berdasarkan informasi saat proses boot tersebut, catatlah
beberapa informasi yang tertera pada tabel berikut:

No. Jenis Tuliskan seperti apa yang


diberikan dmesg

1. CPU Prosesor: .....


Clock: ..... MHz
2. RAM ..... MByte
3. HD Cyl ....., Head ....., Sector ....., Size
.....
4. Partition check .....
5. Floppy Jenis .....
6. Paralel Port I/O ....., IRQ .....
7. Serial Port COM1: I/O ....., IRQ .....
COM2: I/O ....., IRQ .....
8. VGA Card Merk/Type .........., VRAM .....
MByte

Sebagai alat bantu:

• CPU, gunakan cat /proc/cpuinfo


• RAM, cat /proc/meminfo
• HD, dengan kode hdx (ganti x dengan a, b, c atau d), iden
(ganti n dengan 0 atau 1)
untuk interface IDE
• Floppy, kode fdn (ganti n dengan 0 atau 1)
• Paralel Port, kode parportn (ganti n dengan 0 atau 1)
• Serial Port, kode ttySnn (ganti nn dengan 00, 01, dst)

153
Jika ingin tahu data yang ditampilkan dari setiap file
dalam direktori /proc, silakan ketikkan man proc.

3. Informasi lain

1. Hampir semua informasi hardware yang dikenal saat boot


disimpan pada direktori /proc.

a. Versi kernel: cat /proc/version


b. Informasi I/O Port address: cat /proc/ioports
c. Informasi Mem tiap device: cat /proc/iomem
d. Informasi device PCI: cat /proc/pci
Apa informasi VGA Card anda?
e. Informasi no. interrupt: pada file /proc/interrupts

2. Perintah lain untuk mengetahui informasi Linux, gunakan


uname. Cobalah semua option/pilihan yang ada (man uname
atau uname --help). Catatlah:

a. Hostname: .....
b. Versi Kernel: .....
c. Model mesin prosesor: .....

3. Untuk mengetahui sudah berapa lama sistem Linux running


pada mesin kita, gunakan perintah uptime. Jelaskan informasi
yang anda peroleh! Catatlah:
a. Jam mulai: .....
b. Waktu penggunaan: .....
c. Jumlah user: ..... Siapa saja? .....

154
Praktikum 16
Linux File

A. TUJUAN
1. Peserta praktikum Linux dapat mengenal Linux File
2. Mengetahui permission pada tiap objek file atau direktori pada
Linux
3. Mengetahui perintah-perintah untuk administrasi file dan direktori
pada Linux

B. PERCOBAAN
1. Pengantar
Dalam menggunakan suatu sistem operasi, selain
digunakan untuk dapat mengontrol periferal yang kita gunakan,
ada satu alasan penting lainnya, yaitu agar dapat memanjemen file
dalam media penyimpanan kita. Manajemen file
diimplementasikan oleh Linux dalam suatu sistem file tertentu.
Linux mengenal beberapa sistem, diantaranya: ext2 (sistem file
standar Linux), ext3 (ext2 ditambah dengan journaling system).
Selain dua tersebut, kernel Linux juga dapat dibuat untuk mengenal
sistem file lain seperti NTFS (ntfs), FAT16 (fat), FAT32 (vfat),
ISO9660 CDROM (iso9660), dan sebagainya (lihat perintah mount).
Sistem file pada Linux diorganisasikan sebagai sebuah tree
dengan sebuah single node root (/), setiap node non-leaf dari sistem
file adalah sebuah direktori, sedangkan node leaf dapat berupa file,
direktori.
Pada Linux, dan UNIX umumnya, sebuah direktori
sebenarnya adalah sebuah file biasa yang berisi semua informasi file-
file lain yang terletak dalam direktori tersebut. Pada sistem UNIX,
keunggulan yang dimiliki adalah pemakai dapat menentukan hak

155
akses (access permission) untuk tiap file atau direktori yang
tersimpan pada media penyimpanan. Linux memperlakukan
device atau periferal, seperti floppy disk, hard disk, cdrom,
printer, dan sebagainya sebagai sebuah file khusus, yang secara
sintak pengaksesannya sama dengan file lainnya.
Sistem file juga merupakan sebuah tree yang berisi root,
cabang dan leaf. Suatu sistem file dicangkokkan bersama-sama
dengan melekatkan root suatu sistem file ke sebuah direktori sistem
file lain dengan perintah mount. Perintah umount digunakan
untuk memutuskan cangkokan yang dibuat oleh utiliti mount.

2. Mengenali Sistem File


1. Hidupkan komputer, tunggu sampai tampil prompt login.
Loginlah sebagai studentX.
2. Pada prompt shell, ketikkan perintah df -T.
3. Apa fungsi perintah df? (gunakan man df atau df --help)
4. Dari output yang diberikan oleh df, tulis partisi yang ada.
5. Selain itu dari perintah df -T tersebut, jenis sistem file apa saja
yang ditemukan. Tuliskan deskripsi singkat tentang sistem
file tersebut (sebagai bantuan gunakan perintah man mount,
kemudian ketikkan /Mount options for <nama sistem file>.
Contoh /Mount options for ext2).
6. Tuliskan perintah df yang dapat menampilkan informasi yang
mudah dibaca tentang kapasitas, terpakai, dan sisa dari tiap
partisi yang ada (ditampilkan dalam format KByte atau MByte
atau GByte).

3. Mengenal Perintah Operasi Disk (gunakan /dev/sda1 atau sdb1 dst. untuk
flashdisk)

1. Anda sekarang berada di dalam direktori mana? Ketikkan


perintah pwd dan tulis direktori anda sekarang berada.
2. Sekarang pastikan bahwa anda berada di dalam direktori

156
/home/studentX. Jika tidak ketikkan cd.
3. Ketikkan du untuk mengetahui informasi daftar direktori dan
subdirektorinya dalam direktori aktif anda. Berapa total space
yang telah digunakan dalam direktori anda sekarang? (Lihat
baris terakhir yang ditampilkan). Sulitkah membacanya? Ada
opsi yang dapat diberikan untuk dapat menampilkan hanya
informasi total space yang digunakan dan dalam format yang
mudah dibaca. Tuliskan perintahnya untuk mendapatkan
informasi tersebut dengan du.
4. Jika pada diskdrive tersedia sebuah floppy disk 3,5 inch
1,44 MByte Double Side, formatlah dengan perintah fdformat
/dev/fd0H1440.
5. Tunggulah proses pemformatan tersebut.
6. Selanjutnya, lakukan pengecekan terhadap bad block,
dengan perintah
/sbin/badblocks /dev/fd0.
7. Selanjutnya kita tentukan sistem file pada floppy disk tersebut.
Misalkan jadikan floppy disk tersebut memiliki sistem file
FAT atau VFAT yang nantinya dapat dibaca oleh Windows
atau DOS. Ketikkan perintah /sbin/mkfs.msdos /dev/fd0.
8. Lakukan mounting floppy disk tersebut, dengan cara: mount
/dev/fd0.
9. Sekarang cek tipe file system dengan df -T. Tulis tipe sistem file
/dev/fd0, jumlah byte tersedia dan dimount di direktori apa?
10. Jadikan floppy disk tersebut memiliki sistem file ext2 untuk
dikenal di Linux. Ketikkan perintah /sbin/mkfs.ext2 /dev/fd0.
11. Lakukan mounting floppy disk tersebut.
12. Sekarang cek kembali langkah 9.
13. Lakukan unmounting floppy disk tersebut dengan cara umount
/mnt/floppy.
14. Coba berikan perintah df -T. Apakah terlihat informasi tentang
floppy disk? Mengapa?

157
Praktikum 17
Administrasi Proses

A. TUJUAN
1. Peserta praktikum dapat mengenal administrasi proses
2.Mengetahui perintah-perintah untuk administrasi proses pada Linux

B. PERCOBAAN
Mengenal Administrasi Proses pada Linux
1. Proses adalah program yang sedang dieksekusi. Setiap kali
menjalankan suatu program, sistem UNIX melakukan suatu fork(),
yaitu melakukan beberapa urutan operasi untuk membuat suatu
process context dan kemudian mengeksekusi program tersebut
dalam context yang telah dibuat. Setiap proses yang dijalankan akan
memiliki PID (Proses ID). Kita dapat melihat semua proses yang
sedang berjalan dengan perintah ps. Oleh karena Linux
(UNIX) mengimplementasikan multitasking dan multithreading,
kita dapat membuat suatu proses berjalan secara background
(perintah bg) ataupun foreground (perintah fg). Selain itu kita juga
dapat mengirim suatu signal kepada suatu proses tertentu dengan
perintah kill. Macam-macam signal dapat kita lihat dengan cara kill
-l.

2. Kita akan mencoba beberapa hal dan perintah menyangkut


administrasi proses pada
Linux.

3. Terlebih dahulu, jika kita ingin mengetahui berapa jumlah memori


yang tersisa dan yang terpakai, kita dapat menggunakan perintah
berikut: free -okt. Perintah tersebut akan menampilkan jumlah

158
byte tentang memori, baik main memory maupun swap memory
dalam satuan Kilo Byte. Berapa total memori RAM anda? Masih
ada free berapa KByte-kah RAM anda? Berapa total swap space yang
disediakan? Swap free berapa KByte?

4. Mari kita cocokkan dengan informasi dari program top. Ketikkan


perintah top.

5. Apakah sama informasi yang disediakan oleh top dengan free


tentang RAM Free anda ataupun Swap Free anda? Apa manfaat dari
perintah top?

6. Apakah sekarang anda memiliki proses yang sedang dijalankan


secara background atau suspend? Untuk mengetahui hal tersebut,
ketiklah jobs. Adakah? Jika tidak ada, mari kita coba!

7. Di dalam home direktori anda, buatlah sebuah file dengan nama


makebg.sh yang berisi baris perintah shell berikut:
#!/bin/sh
i=0
while [ true ];
do
i=$(($i+1))
done
echo $i

8. Ketikkah perintah chmod 755 makebg.sh. Jalankan dengan


./makebg.sh. Apa yang terjadi?
9. Tekan CTRL-Z akan membuat proses makebg.sh akan
disuspend. Ketik perintah ps. Apakah anda melihat proses
makebg.sh? PID-nya berapa?

159
(Jika anda ingin mengetahui informasi lengkap untuk
tiap proses, anda dapat menggunakan perintah ps -f)

Informasi tiap kolom yang dihasilkan dari ps -f:


UID : user ID yang menjalankan proses tersebut
PID : Process ID
PPID : Parent Process ID
C : CPU% utilization
STIME: Start Time proses berjalan
TTY : terminal dimana
TIME : lamanya proses berjalan
CMD : perintah yang dijalankan

10. Karena di-suspend, maka proses makebg.sh akan dihentikan.


Cobalah anda lihat dengan mengtikkan jobs. Anda akan melihat
bahwa makebg.sh Stopped. Untuk menjalankannya kembali, tapi
tidak mengganggu console prompt Anda, maka proses makebg.sh
harus dijalankan secara background. Ketikkan bg %1. Ketikkan jobs
kembali. Status apa yang Anda lihat dari proses makebg.sh?

11. Sekarang, kita akan "membunuh" proses makebg.sh tersebut


berdasar PID-nya. Ketikkan kill <noPIDmakebg.sh>. Misal PID
makebg.sh 3684, maka ketikkan kill 3684.

12. Coba anda cek apakah benar sudah di"bunuh" proses tersebut,
dengan cara ketikkan ps ataupun ps -ax ataupun jobs.

160
Mengenal Penjadwalan Proses pada Linux

1. Menggunakan perintah at
a. Perintah at memungkinkan kita untuk mengantrikan
eksekusi suatu perintah pada waktu tertentu.
b. - ketikkan cd
- ketikkan date untuk mengetahui waktu saat ini
- ketikkan at <waktu yang mendekati waktu saat ini>
misal: at 09:20
- akan dimunculkan prompt at>
- ketikkan perintah yang akan dijalankan, misal ketikkan du -a
>/tmp/du.out
- tekan ENTER, kemudian tekan CTRL-D
- dengan demikian kita telah memberitahu kepada at untuk
menjalankan perintah tersebut pada waktu yang telah kita tentukan
- lihatlah daftar antrian tersebut dengan mengetikkan at -l
- tunggulah sesuai waktu yang telah kita tentukan tadi. Setelah
melewati waktu yang kita tentukan, cobalah ketikkan at -l kembali.
Apakah sudah tidak ada daftar antrian? Jika tidak ada berarti telah
dikerjakan. Cek hasilnya dengan cara less /tmp/du.out

2. Menggunakan perintah crontab


a. Ada perintah lain selain at, yang dapat digunakan untuk
dapat menjalankan suatu perintah secara terjadwal, yaitu crontab.
b. Kita buat konfigurasi yang akan digunakan crontab. Ketikkan
perintah vi mycrontab.
c. Ketikkan 1 baris pada file tersebut dengan format berikut:
mnt hrs day month weekday username command
arguments
misal:

161
30 12 * * * studentX /usr/bin/du -a >
/tmp/ducron.out
artinya kerjakan du -a > /tmp/ducron.out pada jam 12:30 tiap
hari
d. Simpanlah! Dari prompt shell anda, ketikkan
crontab mycrontab
e. Lihatlah daftar yang harus dikerjakan crontab dengan cara
crontab -l
f. Tunggulah dan cek hasilnya.
g. Setelah perintah yang kita berikan dikerjakan oleh crontab,
apakah crontab masih akan menyimpan daftar tersebut? (cek dengan
crontab -l setelah perintah dikerjakan)

C. TUGAS
1. Tuliskan perintah untuk menghapus antrian perintah pada at!
2. Tuliskan perintah untuk mengedit dan menghapus schedule pada
perintah crontab!

162
Praktikum 18
Linux Booting Process

A. TUJUAN
1. Mengetahui inisialisasi booting proses pada sistem operasi
Linux
2. Melakukan perubahan inisia lisasi booting proses

B. DASAR TEORI
1. PC BOOT DAN LINUX INIT PROCESS

Pada praktikum ini membahas PC boot process dan


inisialisasi sistem operasi
Linux pada aplikasi background (daemons/service).
1. BIOS : Basic Input/Output System adalah antar muka
level terendah antara komputer dan peripheral. Bios
melakukan pemeriksaan pada memori dan mencari instruksi
pada Master Boot Record (MBR) pada floppy atau hard
drive.
2. MBR menunjuk ke boot loader (LILO : Linux boot loader)
3. LILO akan menanyakan label sistem operasi yang akan
mengidentifikasi kernel yang dijalankan. Kernel akan
menjalankan sistem operasi Linux.
4. Yang pertama kali dikerjakan oleh kernel adalah
menjalankan program init. Init adalah root/parent dari
semua proses yang dijalankan pada Linux
5. Proses per tama yang memulai init adalah skrip
/etc/rc.d/rc/sysinit.

163
6. Berdasarkan run- level yang ditentukan, skrip dieksekusi
untuk memulai proses tertentu untuk menjalankan sistem
dan membuat sistem lebih fungsional.

2. LINUX INIT PROCESS


Proses init adalah langkah terakhir pada prosedur boot dan
diidentifikasi sebagai process ide “1”. Init bertanggung- jawab
untuk memulai proses sistem seperti yang ditentukan pada file
/etc/inittab. Init biasanya memulai “getty” yang menunggu layar
login yang menandakan proses shell seorang user. Pada saat
shutdown, init mengontrol urutan dan proses untu shutdown.
Proses init tidak pernah shut down. Proses init merupakan proses
user dan bukan proses sistem kernel meskipun dijalankan sebagai
root.

Proses sistem :
Process ID Description
0 The Scheduler
1 The init process
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

3. PROSEDUR BOOT
Linux mempunyai 6 state operasi dimana “0” adalah shutdown
state dan “3” keatas adalah operasional penuh dengan semua
proses yang esensial dijalankan untuk interaksi user. Berdasarkan
sistem boot, Linux sistem akan melakukan :
a. Mengeksekusi program /sbin/init yang memulai semua proses
-proses lain. Program ini akan diberikan ke mesin oleh proses awal

164
yang didefinisikan pada file
/etc/inittab

b. Komputer akan di-booting ke runlevel yang didefinisikan oleh


baris initdefault

pada file /etc/inittab.

id:5:initdefault:
Pada contoh diatas, runlevel ”5” dipilih Runlevel “5” akan
melakukan booting sistem pada mode GUI menggunakan
XDM dan X-Windows. Booting ke runlevel ”3” ( biasanya
disebut mode console ) biasanya digunakan oleh server yang
tidak memerlukan GUI.

File inittab mengijinkan menggunakan kunci (Ctrl-Alt-Del),


memulai dial ke koneksi internet dll.

c. Satu dari proses- proses yang dimulai oleh init adalah


/sbin/rc. Skrip ini menjalankan sekumpulan skrip
pada directory /etc/rc.d/rc0.d/, /etc/rc.d/rc1.d, /etc/rc.d/rc2.d dan
seterusnya.

d. Skrip pada direktory tersebut dieksekusi pada setiap boot state


dari oeprasi sampai menjadi operasi yang lengkap. S krip mulai
dengan S yang merupakan skrip startup sedangkan skrip yang
dimulai dengan K menandakan skrip shutdown (kill). Angka yang
mengikuti huruf tersebut merupakan urutan eksekusi (terendah ke
tertinggi)

Jika Anda menginstall semua daemons (proses bac


kground), Linux akan menjalankan semua , menyebabkan mesin
lebih lambar. Kita bisa memulai (start) / menghentikan (stop)
daemon secara individual dengan mengubah direktory :

165
/etc/rc.d/init.d (Redhat)
dan diikuti perintah pilihan start, stop, status, restart atau reload,
misalnya untuk stop web server :
cd /etc/rc.d/init.d httpd stop

Gunakan perintah ps – aux untuk melihat semua proses pada mesin


Anda.

4. LINUX RUN LEVEL


Runlevel “3” akan booting dalam mode teks atau console dan
“5” akan booting dalam mode gr aphical login.

State pada Runlevel / Halt :


0 shutdown (Do NOT set initdefault to this)
1 Single user mode
2 Multiuser, without NFS (The same as 3, if you do not have
networking)
3 Default text start. Full multiuser
4 unused
5 X11
6 Reboot (Do NOT set initdefault to this)

Anda bila melakukan perpindahan level init dengan


menggunakan perintah init dengan runlevel tertentu. Gunakan
perintah ”init#” dimana # adalah satu dari 0, 1, 3,5, 6. Dapat juga
menggunakan perintah telinit.

166
Skrip untuk run level yang diberikan dijalankan selama
boot dan shutdown. Skrip ditemukan pada direktory /etc/rc.d/rc#.d/
dimana simbol # menandakan run level, misalnya run level ”3”
akan menjalankan semua skrip pada directory /etc/rc.d/rc3.d/
yang dimulai dengan huruf ”S” selama sistem boot. Skrip ini
akan menjalankan proses background yang dibutuhkan oleh sistem.
Pada saat shutdown semua skrip pada direktory yang dimulai
dengan huruf ”K” akan dieksekusi. Sistem ini menyediakan urutan
sistem ke state yang berbeda untuk mode produksi dan
maintenance.

TIP : Daftar state dan run level dari semua service dimulai oleh ini
: chkconfig –list

GUI tool : /usr/X11R6/bin/tksysv

5. AKTIVASI SKRIP INIT


Menambah suatu skrip ke direktory /etc/rc.d/rc#.d/ baik
prefik S atau K, menambah skrip ke proses boot atau shutdown.
Skrip berjalan dengan urutan numerik. S20abc dijalankan sebelum
S30xyz. Keberadaan prosedur boot dan shutdown ini
merupakan kekuatan sistem operasi UNIX. Inisialisasi proses
dengan urutan tertentu dapat dikoordinasikan untuk proses
dependent. Shutdown dari proses biasanya dibutuhkan untuk
program yang kompleks misalnya database. Proses individual
dapatkemunginan dimonitore, shutdown dan start pada sembarang
waktu menggunakan skrip tersebut. Misalnya /etc/rc.d/rc2.d/httpd
start. Mofidikasi start, stop atau status kemungkinan digunakan.
Skrip start / stop /status berada pada direktory
/etc/rc.d/init.d/ adalah suatu link ke direktory sebenarnya. Link
tersebut kemungkinan dibuat atau dihapus menggunakan perintah
chkconfig, misalnya chkconfig–del httpd akan

167
menghapus web server dari proses startup dan shutdown.
Sebaliknnya chkconfig – add httpd akan menambahke ke proses
startup/shutdown dengan membangkitkan link dari skrip pada
/etc/rc.d/init.d/ ke direktory /etc/rc.d/rc#.d/ yang sebenarnya. Untuk
informasi lebih lanjut gunakan halaman manual LINUX untuk init.
Pada Red Hat 9.0, GUI tool /usr/bin/redhat-config-services dapat
membantu untuk mengkonfigurasi service untuk start dan
menyediakan deskripsi untuk setiap service yang tersedia. Service
dasar meliputi :

168
Service utama yang direkomendasikan adalah : anacron, ard,
autofs, crond, gpm, iptables, keytable, kudzu, microcode_ctl
(Intel32 hardware only), network, random. syslog

Graphics Workstation- add: xfs


File Server for PC clients - add: smb
Print Server - add: lpd atau cups
File server Linux/Unix clients - add: nfs, netfs, nfslock, portmap,
ypbind, yppasswd, ypserv
Web Server - add: httpd, tux, xinetdi, sshd

6. SKRIP INIT
Skrip init berada pada direktory /etc/rc.d/script-name.
Gunakan perintah chkconfig untuk membangkitkan soft link ke
direktory yang sebenarnya untuk beberapa run level.
#!/bin/sh
#
# Startup script for program
#
# chkconfig: 345 85 15
- This statement tells the chkconfig command how to add or delete this
process to the boot process
# description: Description of program
# processname: process-name
# pidfile: /var/run/process-name.pid

169
# Source function library.
This creates the operating environment for the process to be started
. /etc/rc.d/init.d/functions
case "$1" in

start)
echo -n "Starting process-name: "
daemon
process-name -Starts only one process of a given name.
echo
touch /var/lock/subsys/process-name
;;
stop)
echo -n "Shutting down process-name: "
killproc process-name
echo
rm -f /var/lock/subsys/process-name
rm -f /var/run/process-name.pid
- Only if process generates this file
;;
status)
status process-name
;;
restart)
$0 stop
$0 start
;;

170
reload)
echo -n "Reloading process-name: "
killproc process-name -HUP
echo
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac

exit 0

Fungsi skrip bash daemon, killproc dan status dapat ditemukan


dalam skrip /etc/rc.d/functions.
Skrip harus dieksekusi untuk menjalankannya (chmod +x script-
name) Misalnya skrip digunakan untuk memulai dan menghentikan
proses seperti

/etc/rc.d/init.d/httpd restart
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start
atau menggunakan perintah service : service httpd restart service httpd
stop service httpd start

Dua baris dalam skrip yang memungkinkan perintah chkconfig


mengontrol skrip untuk proses boot dan shutdown adalah
# chkconfig: 345 85 15
# description: Description of program

171
Bila menambahkan ke proses booting menggunakan perintah
"chkconfig -- add script-name" awal order/priority akan diset 80
sedangkan stop/shutdown diset 15. Proses akan ditambahkan ke
runlevel 3, 4, dan 5. Hal ini dapat dilakukan dengan
membangkitkan link dari lokasi skrip (/etc/rc.d/init.d/) ke
direktori run level :
/etc/rc.d/rc#.d/. Nama file dalam direktory run level akan
menunjukkan apa yang digunakan untuk boot (mulai dengan “S”)
atau shutdown (mulai dengan “K”).

7. CHKCONFIG

Perintah chkconfig membangkitkan dan memutuskan link


antara direktori
/etc/rc.d/init.d/ dan direktori run level /etc/rc.d/rc[0-6].d/ untuk
mengontrol inisialisasi proses boot dan proses shutdown.

chkconfig [--level <levels>] <name> on | off | reset >


chkconfig --
list chkconfig
--list
chkconfig --
add <name>
chkconfig --
del <name>

chkconfig --level 0123456 <name> off

Contoh :

172
chkconfig --level 345 httpd on

- apache diberikan 3, 4 dan 5.

chkconfig --add httpd

- memulai web server daemon pada system boot.

chkconfig --del sendmail

- Tidak memulai sendmail daemon pada system boot.

chkconfig --list ]

- Daftar semua servis dan level init.

chkconfig --list | grep on

- Daftar semua service yang dimulai pada sistem boot

173
C. PERCOBAAN
Percobaan 1 : Linux INIT Process
1. Program /sbin/init akan dijalankan pada saat
booting. Eksekusi program ini berdasarkan file /etc/inittab.
Lihatlah isi file /etc/inittab dan perhatikan mode default
runlevel pada baris initdefault

# cat /etc/inittab
2. Berdasarkan runlevel yang dipilih, proses init
kemudian mengeksekusi skrip startup yang berada pada sub
direktory /etc/rc.d.
Skrip yang digunakan untuk runlevel 0
sampai dengan 6
berada pada sub direktory

/etc/rc.d/rc0.d sampai /etc/rc.d/rc6.d.

# ls -l /etc/rc.d

3. Setiap nama file pada direktori misalnya


/etc/rc.d/rc5.d dimulai dengan huruf “S” merupakan skrip
startup sedangkan skrip yang dimulai dengan huruf “K”
merupakan skrip shutdown. Angka yang mengikuti
"K" atau "S"
menandakan urutan skrip yang dijalankan. Contohnya ”kudzu”
denga n nilai
”05” dijalankan sebelum ”wlan” dengan nilai ”09”
# ls /etc/rc.d/rc5.d

Percobaan 2 : Menentukan default boot runlevel


1. Default boot runlevel pada file /etc/inittab diset

174
dengan menggunakan variabel initdefault. Jika diset "3",
sistem boot menggunakan antar muka teks pada console
VGA; jika diset "5", menggunakan GUI.

2. Hapus baris initdefault yang tidak diperlukan pada file


/etc/inittab.

Buatlah bari baru untuk set sistem boot menggunakan console VGA
/ teks
# vi /etc/inittab
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not
have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: #
Console Text Mode
#id:5:initdefault: #
Console GUI Mode

3. Setelah dilakukan perubahan variabel


initdefault, lakukan reboot. Perhatikan apakah masuk ke
mode teks

# reboot

175
4. Lakukan perubahan kembali dari 3 ke 5 dan
lakukan reboot sistem. Ingat, jangan melakukan setting ke
6 karena sistem akan reboot terus-menerus. Sedangkan
setting 0 maka sistem tidak pernah dimulai.

Percobaan 3 : Menggunakan Console GUI


1. Kita dapat masuk ke console GUI jika sistem
berada pada mode teks. Pertama ubahlah variabel initdefault
pada file /etc/inittab dan ubahlah ke mode 3 atau dengan
menggunakan perintah init
# init 3
2. Metode Manual : Jalankan aplikasi X
terminal GUI dengan menjalankan perintah “startx” pada
console VGA. Untuk keluar gunakan logout
# startx
3. Metode Otomatis : Anda dapat menjalankan X
terminal GUI setiap kali reboot menggunakan perintah
init. Anda harus mengedit variabel
initdefault”pada file /etc/inittab seperti percobaan 2 agar
setiap booting masuk ke mode GUI. Ubahlah kembali ke
mode 5.

# init 5

Percobaan 4 : Menggunakan Virtual Console


1. Untuk mendapatkan command prompt dapat
dilakukan dengan membuka terminal pada Jendela GUI.
Default - nya, Linux menjalankan 6 virtu al consol atau TTY
session yang dijalankan pada console VGA. Hal ini
didefinisikan dengan statement mingetty pada file
/etc/inittab. Console X terminal GUI membuat virtual
console sendiri menggunakan TTY pertama yang tersedia
yang tidak dikontrol oleh mingetty. Hal ini menyebabkan

176
GUI berjalan sebagai nomor 7. Perhatikan baris
mingetty pada file /etc/ inittab, virtual console nomor berapa
yang dikontrol ?
# cat /etc/inittab

2. Cobalah masuk ke virtual console menggunakan


<CTRL> <ALT> <F1> sampai dengan <F6>.

3. Untuk masuk ke login GUI gunakan <CTL>


<ALT> <F7>, hanya jika berada pada run level 5 atau GUI
dijalankan setelah ”startx”.

Percobaan 5 : Shutdown dan rebooting sistem


1. Perintah init akan mengubah runlevel, untuk shutdown
nilainya adalah 0.
# init 0

2. Perintah shutdown menyebabkan efek yang


sama. Opsi ”–y” untuk mengabaikan prompt pesan dan
”– h” untuk halt sistem. Opsi 0 menunjukkan berapa lama
menunggu memulai prosedur, dalam hal ini 0 menit.
# shutdown –hy 0

3. Anda juga bisa menggunakan perintah init


untuk reboot sistem dengan memasukkan runlevel 6
# init 6

4. Perintah reboot menpunyai efek yang sama,


tetapi juga mengirimkan pesan warning ke semua user
# reboot

177
5. Reboot juga dapat dilakukan dengan perintah shutdown
menggunakan opsi “- r” dan menentukan delai misalnya 10 menit.
# shutdown –ry 10

Percobaan 6: Berpindah ke mode single user


1.Beberapa aktifitas membutuhkan sistem untuk log off
semua user, aplikasi dan networkin g sehingga hanya sistem
administrator yang mengakses sistem dari console VGA.
Alasan lainnya adalah untuk memperbaiki password ”root”.

2. Jika sistem berjalan normal, berpindah ke mode


single user dapat dilakukan dengan perintah init dan
memasukkan runlevel 1.
# init 1

3. Perintah diatas tidak memberikan warning ke


user dan perintah shutdown tidak mempunyai opsi mode
single user. Hal ini akan muncul dengan menjalankan
perintah shutdown dengan delay.

# shutdown 1

Percobaan 7: Berpindah ke mode single user pada layar Grub


1. Anda dapat masuk ke mode single user secara
langsung setelah menghidupkan power sistem.

2. Hidupkan sistem Anda

3. Jika screen Linux muncul, Anda dapat


memilih kernel yang diinstal pada sistem. Ketik ”a”

178
untuk ”append”. Maka akan didapa tkan prompt untuk
menambah opsi boot pada file grub.conf.

grub append> ro root=LABEL=/

4. Tambahkan “1” pada akhir string


grub append> ro root=LABEL=/1

5. Tekan Enter. Sistem akan melanjutkan booting,


tetapi akan menuju ke promp root # tanpa menanyakan
username dan password

Percobaan 8: Berpindah ke default runlevel dari mode single user

1. Perintah “exit” akan menyebabkan sistem keluar


dari runlevel 1 dan mengubah ke default runlevel untuk
sistem. Anda juga dapat menggunakan perintah init

(misalnya “init 3” dan “init 5”)

bash-2.05b# exit

Percobaan 9: Memperbaiki password root


1. Kadangkala anda kehilangan atau lupa pada password

179
root, atau sistem administrator sebelumnya tidak memberi
password kepada Anda
2. Masuk ke console VGA dan tekan <CTRL> <ALT> <DEL>.
Sistem akan shutdown

3. Reboot sistem dan masuk ke mode single user


4. Setelah masuk ke command prompt, ubahlah password root.
Mode single user mengasumsikan orang pada consol sebagai
“root”, sehingga anda tidak perlu menentukan nama user “root”

5. Masuk ke default runlevel dengan menggunakan perintah


“exit”.

Percobaan 10: Menggunakan perintah chkconfig


1. Perintah chkconfig digunakan untuk melihat aplikasi
mana yang dimulai pada setiap runlevel. Opsi ”— list” untuk
melihat daftar paket pada /etc/init.d dan runlevel yang ”on” atau
”off”

# chkconfig –list

2. Anda dapat menggunakan chkconfig untuk mengubah


runlevel untuk paket tertentu. Misalnya Sendmail akan dimulai
pada startup runlevel 3 atau 5. Ubahlah Sendmail tidak dimulai
pada saat boot.

3. Perintah chkconfig dapat digunakan dengan grep untuk


menentukan run level dimana Sendmail akan berjalan. Disini
terlihat berjalan pada level 3 dan5 .
# chkconfig –list | grep mail

180
4. Perintah chkconfig dengan opsi “— level” mengindikasikan
bahwa beberapa aksi dikerjakan pada runlevel yang dimasukkan
seba gai nilai. Argumen pertama pada perintah adalah paket
dan argumen kedua apakah “on” atau “off”. Dalam hal ini
Anda ingin Sendmail tidak dimulai jika masuk ke runlevel 3
dan 5

# chkconfig –level 35 sendmail off

5. Hal tersebut juga dapat dilakukan tanpa ops i “— level”,


otomatis chkconfig akan mengubah runlevel 3 dan 5

# chkconfig sendmail off

6. Anda juga dapat shutdown permanen dan stop dari running


saat ini.

# service sendmail stop

7. Anda dapat menggunakan chkconfig untuk memeriksa


kembali pekerjaan Anda

# chkconfig –list | grep mail

181
Politeknik Caltex Riau
Praktikum Sistem Operasi

D. LATIHAN

1. Pada percobaan 1 lihatlah urutan eksekusi pada saat


startup dan shutdown pada runlevel 5 untuk file :
a. netfs
b. pcmcia
c. nfslock
d. kudzu
e. portmap
f. wlan
g. isdn
h. ne twork
i. syslog
j. keytable
2. Laporkan hasil perubahan password pada mode single
user pada percobaan 9. Gunakan password root “redhat”
(jangan lainnya !).
3. Apakah kegunaan menggunakan perintah service ? Berikan
contoh.
4. Apa kegunaan menggunakan perintah chkconfig ? Berikan
contoh.

182
Politeknik Caltex Riau
Praktikum Sistem Operasi

Praktikum 19
Konfigurasi Jaringan di Linux

A. TUJUAN
1. Melakukan konfigurasi dasar jaringan pada sistem operasi linux
2. Melakukan File Sharing pada sistem operasi linux

B. PERCOBAAN
IP Address merupakan jalan yang digunakan untuk melakukan
koneksi dengan PC pada sebuah infrastruktur jaringan, sehingga IP
Address sangat penting untuk diperhatikan. Sebab dengan IP Address
sebuah PC bisa terhubung dengan jaringan yang lebih luas seperti
internet. Dalam konfigurasi IP Address di CentOS memiliki beberapa
cara yaitu dalam mode GUI dan mode text, tapi kali ini penulis akan
menjelaskan bagaimana konfigurasi dalam mode text.

IP Address Automatic
Konfigurasi ini biasanya digunakan ketika komputer server
terhubung dengan sebuah perangkat yang memiliki DHCP
Server seperti pada router dan modem. Anda bisa
menambahkan fitur automatic pada server anda agar mendapatkan IP
Address secara otomatis yaitu dengan konfigurasi seperti dibawah ini:

[root@serv1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE=eth0
HWADDR=08:00:27:74:FB:84
NM_CONTROLLED=yes
ONBOOT=yes

183
Politeknik Caltex Riau
Praktikum Sistem Operasi

BOOTPROTO=dhcp
TYPE=Ethernet
IPV6INIT=no
USERCTL=no

IP Address Static
Pada konfigurasi IP Address Static tidak jauh berbeda dengan
konfigurasi sebelumnya hanya saja yang membedakannya yaitu
menggunakan IP Address yang sudah ditentukan

[root@serv1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE=eth0
HWADDR=08:00:27:5f:57:2a
NM_CONTROLLED=yes
ONBOOT=yes
IPADDR=129.93.88.11
BOOTPROTO=none
NETMASK=255.255.255.192
TYPE=Ethernet
IPV6INIT=no
USERCTL=no

Konfigurasi IP secara manual


Secara umum semua linux dapat melakukan konfigurasi IP secara
manual pada terminal, akan tetapi konfigurasi ini akan hilang jika
komputer dimatikan. Perintah umunya adalah:

ifconfig ethX [IP_ADDR] [NETMASK]


Contoh:
Ifconfig eth0 192.168.0.1 255.255.255.0

184
Politeknik Caltex Riau
Praktikum Sistem Operasi

FILE SHARING PADA LINUX

File sharing pada linux menggunakan aplikasi Samba. Samba,


merupakan protokol yang digunakan untuk menjembatani hubungan
pertukaran data yang di miliki Unix/Linux agar bisa berhubungan
dengan sistem operasi yang berbeda. Dalam proses pertukaran data
terhadap sistem operasi Linux berbeda dengan Microsoft Windows.
Linux memiliki sistem pertukaran data yang lebih spesifik dan
lengkap.

Selain digunakan dalam sharing data, Samba memiliki beberapa


fitur yang tidak dimiliki sharing data yang lain, diantaranya
authentication user, filtering extention dan beberapa parameter yang
lain. Sehingga samba memang pantas diandalkan jika dipergunakan
dalam File Sharing.

Paket samba sebelumnya sudah tersedia di dalam repositori sehingga


anda bisa melakukan installasi dengan mudah yaitu menggunakan
perintah di bawah ini

[root@proxy ~]# yum install samba

Lanjutkan dengan mengetik tombol Y, tunggu beberapa saat hingga


proses unduh paket dan proses installasi selesai di kerjakan. Untuk
menghindari kesalahan dalam menambahkan perintah, maka backup
terlebih dahulu file utama yaitu smb.conf

[root@proxy ~]# cd /etc/samba/


[root@proxy samba]# cp smb.conf smb.conf.back
[root@proxy samba]# vim smb.conf

Ganti standart konfigurasi security = user menjadi share, perintah


tersebut dipergunakna untuk mengijinkan user yang tidak memiliki
account password pada samba agar bisa mengakses file sharing
yang tersedia.

security = shared

Buatlah sebuah folder sebagai file sharing pada direktori home


dengan perintah di bawah ini

185
Politeknik Caltex Riau
Praktikum Sistem Operasi

[root@proxy home]# mkdir data


[root@proxy home]# chmod 777 data/
[root@proxy home]# vim /etc/samba/smb.conf

Setelah direktori selesai dibuat maka tetapkan permission terhadap


direktori tersebut. Pada akhir script file smb.conf tambahkan
konfigurasi di bawah ini

[data]
path = /home/data
guest ok = yes
writeable = yes
browseable = yes
create mode = 0770
directory mode = 0770

Konfigurasi tersebut merupakan contoh sederhana dalam pembuatan


file sharing, selanjutnya agar konfigurasi yang sudah anda buat bisa
berjalan maka restart terlebih dahulu layanan samba dengan perintah
seperti di bawah ini

[root@proxy samba]# service smb restart


Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@proxy samba]#
[root@proxy samba]# chkconfig smb on
[root@proxy samba]# chkconfig nmb on

Untuk mengakses file dan folder yang telah disharing oleh samba,
bisa menggunakan windows \\alamat_ip\ atau sesama linux dengan
mengetik protokolnya smb:\\alamat_ip\

186
Politeknik Caltex Riau
Praktikum Sistem Operasi

Praktikum 20
Akses Remote di Linux

A. TUJUAN
1. Melakukan remote login terhadap sistem linux menggunakan
SSH

B. PERCOBAAN
REMOTE SSH
Kebutuhan untuk mengendalikan server dari jarah jauh adalah
hal yang terpenting dari seorang Administrator, dengan
kemampuan remote dari jarah jauh seorang Administrator
mempermudah beberapa pekerjaan yang bersangkutan dengan server,
sebab tidak harus berada di lokasi dimana server berada, terutama
kerusakan dalam segi software maka pengendalian hak akses
jarak jauh sangat dibutuhkan.
SSH merupakan service yang paling banyak digunakan untuk
kebutuhan remote sebuah server. SSH merupakan alternative
penganti dari telnet, telnet adalah software yang digunakan untuk
aktifitas remote server, tapi telnet sendiri memeliki beberapa
kekurangan diantaranya dari segi keamanan yang dengan
mudahnya diambil alih dari pihak lain, sebab telnet dalam pengiriman
berupa data tidak disertakan encripsi, sehingga kemanan data kurang
terjamin.

Instalasi SSH Server


Untuk menginstall SSH pada sistem operasi CentOS dapat dilakukan
dengan perintah berikut:
[root@proxy ~]# yum install openssh-server openssh-clients
[root@proxy ~]# service sshd start

187
Politeknik Caltex Riau
Praktikum Sistem Operasi

Apabila service ssh sudah berjalan, maka linux sudah dapat diremote
dengan protokol ssh. Untuk melakukan remote dari windows, dapat
menggunakan software tambahan seperty PuTTY. Untuk melakukan
remote dari linux dapat menggunakan perintah berikut:

ssh username@ip_address
contoh
ssh fadhly@192.168.0.1

Akan muncul prompt untuk memasukkan password, jika berhasil


login maka kita sudah bisa bekerja secara remote terhadap sistem
operasi linux.

188

Anda mungkin juga menyukai