Você está na página 1de 176

Pre test

System Operasi
Kerjakan soal-soal berikut ini:
1.

Sebutkan dan jelaskan tentang langkah-langkah yang dilakukan oleh komputer saat
pertama kali dijalankan!

2.

Jelaskan jenis-jenis software yang anda kenal!

3.

Jelaskan a pa yang dimaksud dengan sistem operasi!

4.

Sebutkan sistem operasi yang anda ketahui dan jelaskan!

5.

Jelaskan kegunaan sistem operasi!

97

Praktikum 1
Perintah Dasar Sistem Operasi
Linux
POKOK BAHASAN:
Format Instruksi pada Sistem Operasi Linux
Perintah-Perintah Dasar pda Sistem Operasi Linux

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Menggunakan perintah-perintah dasar untuk informasi user
Mengenal format instruksi pada system operasi Linux
Menggunakan perintah-perintah dasar pada system operasi Linux
Menggunakan utilitas dasar pada system operasi Linux

DASAR TEORI:
Setiap pemakai LINUX harus mempunyai nama login (user account) yang
sebelumnya harus didaftarkan pada administrator system.

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

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

Tergantung atas shell yang digunakan, pada Linux bash maka pada proses login
akan mengeksekusi program /etc/profile (untuk semua pemakai) dan file .base_profile
di direktori awal (HOME) masing- masing.
Pada saat logout, maka program shell bash akan mengeksekusi script yang
bernama .bash_logout.

1 FORMAT INSTRUKSI LINUX


Instruksi Linux standar mempunyai format sebagai berikut :
$ NamaInstruksi [pilihan] [argumen]

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

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

<Enter>

ke bawah, baris per baris

<Spasi>

ke bawah, per halaman

kembali ke atas, 1 halaman

/teks

mencari teks (string)

meneruskan pencarian string sebelumnya

Manual dibagi atas Bab-bab sebagai berikut :

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

Bab

Isi

User commands

System calls

Library calls

Devices

File formats

Games

Miscellaneous

System commands

Kernel internals

Tcl/Tk command

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan di bawah ini :
1.

Apa yang dimaksud perintah informasi user di bawah ini :


id, hostname, uname, w, who, whoami, chfn, finger

2.

Apa yang dimaksud perintah dasar di bawah ini :


date, cal, man, clear, apropos, whatis

3.

Apa yang dimaksud perintah-perintah manipulasi file di bawah ini :


ls, file, cat, more, pg, cp, mv, rm, grep

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
3. Selesaikan soal-soal latihan

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

Percobaan 1 : Melihat identitas diri (nomor id dan group id)


$ id

Percobaan 2 : Melihat tanggal dan kalender dari sistem


1. Melihat tanggal saat ini
$ date

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

Perc obaan 3 : Melihat identitas mesin


$ hostname
$ uname
$ uname -a

Percobaan 4 : Melihat siapa yang sedang aktif


1. Mengetahui siapa saja yang sedang aktif
$ w
$ who
$ whoami

2. Mengubah informasi finger


$ chfn <user>
Changing finger information for student.
Password:
Name[user wks]: <Nama Pengguna di wks>
Office[]: Lab Pemrograman 2
Office Phone []: 2301
Home Phone []: 5947280
Finger information changed.

3. Melihat informasi finger


$ finger
$ finger <user>

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

Percobaan 5 : Menggunakan manual


$
$
$
$

man
man
man
man

ls
man
k file
5 passwd

Percobaan 6 : Menghapus layar


$ clear

Percobaan 7 : Mencari perintah yang deskripsinya mengandung kata kunci


yang dicari
$ apropos date
$ apropos mail
$ apropos telnet

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

Percobaan 9 : Manipulasi berkas (file) dan direktori


1. Menampilkan current working director y
$ 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 /

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

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

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

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

Percobaan 10 : Melihat tipe file


$ file
$ file *
$ file /bin/ls

Percobaan 11 : Menyalin file


1. Mengkopi suatu file. Berikan opsi i untuk pertanyaan interaktif bila file sudah
ada.
$
$
$
$

cp
ls
cp
cp

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

2. Mengkopi ke direktori
$
$
$
$
$
$

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

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

Percobaan 12 : Melihat isi file


1. Menggunakan instruksi cat
$ cat f1

2. Menampilkan file per satu layar penuh


$ more f1
$ pg f1

Percobaan 13 : Mengubah nama file


1. Menggunakan instruksi mv
$ mv f1 prog.txt
$ ls

2. Memindahkan file ke direktori lain.

Bila argumen terakhir adalah nama

direktori, maka berkas-berkas akan dipindahkan ke direktori tersebut.


$ mkdir mydir
$ mv f1 f2 f3 mdir

Percobaan 14 : Menghapus file


$
$
$
$
$

rm
cp
cp
rm
rm

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

Percobaan 15 : Mencari kata atau kalimat dalam file


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

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 ?

PRAKTIKUM 1 PERINTAH DASAR SISTEM OPERASI LINUX

5. Bagaimana melihat perintah manual ls dengan kata kunci sort ?


6. Bagaimana tampilan untuk perintah ls a l dan ls al ?
7. Tampilkan semua file termasuk yang hidden file pada direktori /etc .
8. Tampilkan semua file secara lengkap pada direktori /etc.
9. Buatlah direktori prak1 pada direktori aktif, kemudian copy-kan file /etc/group
ke file tes1 , tes2 dan tes3 pada direktori ini.
10. Tampilkan isi file tes1 per satu layar penuh.
11. Pindahkan file tes1 dan tes2 ke home direktori.
12. Hapus file tes1 dan tes dengan konfirmasi.

LAPORAN RESMI:
1. Buatlah summary Percobaan 1 sampai dengan percobaan 15 dalam bentuk table

seperti di bawah ini :


Perintah

Deskripsi

id
date
cal
hostname
uname
w
who
whoami
chfn

2. Analisa latihan yang telah dilakukan.


3. Berikan kesimpulan dari praktikum ini.

Format

Praktikum 2
Operasi Input Output
POKOK BAHASAN:
Pipeline
Redirection

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami konsep proses I/O dan redirection
Memahami standar input, output dan error
Menggunakan notasi output, append dan here document
Memahami konsep PIPE dan filter

DASAR TEORI:
1 PROSES I/O
Sebuah proses memerlukan Input dan Output.

Input

Proses

Output

Instruksi (command) yang diberikan pada Linux melalui Shell disebut sebagai
eksekusi program yang sela njutnya disebut proses.
Setiap kali instruksi diberikan, maka Linux kernel akan menciptakan sebuah
proses dengan memberikan nomor PID (Process Identity).
Proses dalam Linux selalu membutuhkan Input dan menghasilkan suatu Output.

PRAKTIKUM 2 OPERASI INPUT OUTPUT

10

Dalam konteks Linux input/o utput adalah :

Keyboard (input)

Layar (output)

Files

Struktur data kernel

Peralatan I/O lainnya (misalnya Network)

2 FILE DESCRIPTOR
Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan
melalui angka yang dimulai dari 0, 1, 2 dan seterusnya.
Tiga buah file descriptor standar yang lalu diciptakan oleh proses adalah :

0 = keyboard (standar input)

1 = layar (standar output)

2 = layar (standar error)

Input
(keyboard)

Output
(monitor)

Proses
2

Linux tidak membedakan antara peralatan hardware dan file, Linux


memanipulasi peralatan hardware sama dengan file.

3 PEMBELOKAN (REDIRECTION)
Pembelokan dilakukan untuk standard

input, output dan error, yaitu untuk

mengalihkan file descriptor dari 0, 1 dan 2. Simbol untuk pembelokan adalah :


0<

atau

<

pengganti standard inp ut

1>

atau

>

pengganti standard output

2>

PRAKTIKUM 2 OPERASI INPUT OUTPUT

11

4 PIPA (PIPELINE)
Mekanisme pipa digunakan sebagai alat komunikasi antar proses.
Input Proses1 Output = Input Proses2 Output
Proses 1 menghasilkan output yang selanjutnya digunakan sebagai input oleh
Proses 2. Hubungan output input ini dinamakan pipa, yang menghubngkan Proses 1
dengan Proses2 dan dinyatakan dengan symbol |.
Proses1

Proses2

5 FILTER
Filter adalah utilitas Linux yang dapat memproses standard input (dari
keyboard) dan menampilkan hasilnya pada standard output (layar). Contoh filter adalah
cat, sort, grep, pr, head, tail, paste dan lainnya.

Pada sebuah rangkaian pipa :


P1 | P2 | P3 . | Pn-1 | Pn
Maka P2 sampai dengan P n-1 mutlak harus utilitas Linux yang berfungsi sebagai
filter. P1 (awal) dan Pn (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya
who, ls, ps, lp, lpr, mail dan lainnya.
Beberapa perintah Linux yang digunakan untuk proses penyaringan antara lain :

Perintah grep
Digunakan untuk menyaring masukannya da n menampilkan baris-baris yang hanya
mengandung pola yang ditentukan. Pola ini disebut regular expression.

Perintah wc
Digunakan untuk menghitung jumlah baris, kata dan karakter dari baris-baris
masukan yang diberikan kepadanya.

Untuk mengetahui berapa baris gunakan

option l, untuk mengetahui berapa kata, gunakan option w dan untuk mengetahui
berapa karakter, gunakan option c. Jika salah satu option tidak digunakan, maka
tampilannya adalah jumlah baris, jumlah kata dan jumlah karakter.

PRAKTIKUM 2 OPERASI INPUT OUTPUT

12

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 dalam pipeline dengan sort.

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan di bawah ini :
1.

Apa yang dimaksud redirection ?

2.

Apa yang dimaksud pipeline ?

3.

Apa yang dimaksud perintah di bawah ini :


echo, cat, more, sort, grep, wc, cut, uniq

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini.
Perhatikan hasil setiap percobaan.
3. Selesaikan soal-soal latihan.

PRAKTIKUM 2 OPERASI INPUT OUTPUT

13

Percobaan 1 : File descriptor


1. Output ke layar (standar output), input dari system (kernel)
$ ps

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


$ cat
hallo, apa khabar
hallo, apa khabar
exit dengan ^d
exit dengan ^d
[Ctrl-d]

3. Input dari keyboard dan output ke alamat internet


$ mail arna@eepis-its.edu
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 teks yang saya simpan
Ke file myfile.txt

2. Pembelokan standar 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

PRAKTIKUM 2 OPERASI INPUT OUTPUT

14

4. Notasi 2>&1 : pembelokan standar error (2>) adalah identik dengan file
descriptor 1.
$
$
$
$
$

ls filebaru
(Terdapat pesan error)
ls filebaru 2> out.txt
cat out.txt
ls filebaru 2> out.txt 2>&1
cat out.txt

5. Notasi 1>&2 (atau >&2) : pembelokan standar output adalah sama dengan file
descriptor 2 yaitu standar error
$ echo mencoba menulis file 1> baru
$ cat filebaru 2> baru 1>&2
$ cat baru

6. Notasi >> (append)


$
$
$
$
$
$

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

pertama > surat


kedua >> surat
ketiga >> surat
keempat > surat

7. Notasi here document (<<++ . ++) 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 file 2. Perhatikan bahwa notasi - berarti menyelipkan input dari
keyboard
$ cat myfile.txt surat

PRAKTIKUM 2 OPERASI INPUT OUTPUT

15

9. Untuk membelokkan standart output ke file, digunakan operator >


$ echo hello
$ echo hello > output
$ cat output

10. Untuk menambahkan output ke file digunakan operator >>


$ echo bye >> output
$ cat output

11. Untuk membelokkan standart input digunakan operator <


$ cat < output

12. Pembelokan standart input dan standart output dapat dikombinasikan tetapi tidak
boleh menggunakan nama file yang sama sebagai standart input dan output.
$ cat < output
$ cat out
$ cat < output
$ cat out
$ cat < output
$ cat output
$ cat < out >>
[Ctrl-c]
$ cat out

> out
>> out
> output
out

(Proses tidak berhenti)

Percobaan 3 : Pipa (pipeline)


1. Operator pipa (|) digunakan untuk membuat eksekusi proses dengan melewati
data langsung ke data lainnya.
$
$
$
$
$
$
$
$

who
who | sort
who | sort r
who > tmp
sort tmp
rm tmp
ls l /etc | more
ls l /etc | sort | more

PRAKTIKUM 2 OPERASI INPUT OUTPUT

16

Percobaan 4 : Filter
2. Pipa juga digunakan untuk mengkombinasikan utilitas sistem untuk membentuk
fungsi yang lebih kompleks
$ w h | grep <user>
$ grep <user> /etc/passwd
$ ls /etc | wc
$ ls /etc | wc l
$ cat > kelas1.txt
Badu
Zulkifli
Yulizir
Yudi
Ade
[Ctrl-d]
$ cat > kelas2.txt
Budi
Gama
Asep
Muchlis
[Ctrl-d]
$ cat kelas1.txt kelas2.txt | sort
$ cat kelas1.txt kelas2.txt > kelas.txt
$ cat kelas.txt | sort | uniq

LATIHAN:
1. Lihat daftar secara lengkap pada direktori aktif, belokkan tampilan standard output
ke file baru.
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 standard inp ut.
4. Urutkan file baru dengan cara membelokkan standard input dan standard output ke
file baru.urut .
5. Buatlah direktori latihan2 sebanyak 2 kali dan belokkan standard error ke file
rmdirerror.txt.

6. Urutkan kalimat berikut :


Jakarta
Bandung
Surabaya
Padang

PRAKTIKUM 2 OPERASI INPUT OUTPUT

17

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 > hello.txt
dog cat
cat duck
dog chicken
chicken duck
chicken cat
dog duck
[Ctrl-d]
$ cat hello.txt | sort | uniq
$ cat hello.txt | grep dog | grep v cat

LAPORAN RESMI:
1. Analisa hasil percobaan 1 sampai dengan 4, untuk setiap perintah jelaskan
tampilannya.
2. Kerjakan latihan diatas dan analisa hasilnya
3. Berikan kesimpulan dari praktikum ini.

Praktikum 3
Operasi File dan Struktur Direktory
POKOK BAHASAN:
Operasi File pada Sistem Operasi Linux
Struktur Direktory pada Sistem Operasi Linux

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami organisasi file dan direktory pada sistem operasi Linux
Menciptakan dan manipulasi directory
Memahami konsep link dan symbolic link

DASAR TEORI:
1 ORGANISASI FILE
Sistem file pada Linux menyerupai pepohonan (tree), yaitu dimulai dari root,
kemudian direktori dan sub dirrektori. Sistem file pada Linux diatur secara hirarkhikal,
yaitu dimulai dari root dengan symbol / seperti Gambar 3.1.
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).

18

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

19

Gambar 1.3 Struktur direktori pada Linux

2 DIREKTORY STANDAR
Setelah proses instalasi, Linux menciptakan system file yang baku, terdiri atas
direktori sebagai berikut :

Direktori
/etc

Deskripsi
Berisi file administrative (konfigrasi dll) dan file executable
atau script yang berguna untuk administrasi system.

/dev

Berisi file khusus yang merepresentasikan peralatan hardware


seperti memori, disk, printer, tape, floppy, jaringan dll.

/bin
/sbin

Berisi utilitas sistem level rendah (binary) .


Berisi utilitas sistem untuk superuser (untuk membentuk
administrasi sistem).

/usr/sbin
/usr/bin
/usr/lib

Berisi utilitas sistem dan program aplikasi level tinggi.


Berisi program library yang diperlukan untuk kompilasi

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

20

program (misalnya C). Berisi instruksi (command) misalnya


untuk Print Spooler (lpadmin) dll.
/tmp

Berisi file sementara, yang pada saat Bootstrap akan dihapus


(dapat digunakan oleh sembarang user).

/boot

Berisi file yang sangat penting untuk proses bootstrap. Kernel


vmlinuz disimpan di direktori ini.

/proc

Berisi informasi tentang kernel Linux, proses dan virtual system


file.
Direktori variable, artinya tempan penyimpanan LOG (catatan

/var

hasil output program), file ini dapat membengkak dan perlu


dimonitor perkembangannya.

/home

Berisi direktori untuk pemakai Linux (pada SCO diletakkan


pada /usr)

/mnt

Direktori untuk mounting system file

/root

Home direktori untuk superuser (root)

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


/usr/src
/opt

Source code untuk Linux


Option, direktori ini biasanya berisi aplikasi tambahan (addon) seperti Netscape Navigator, kde, gnome, applix dll.

Direktori /etc
Berisi file yang berhubungan dengan administrasi system, maintenance script,
konfigurasi, security dll. Hanya superuser yang boleh memodifikasi file yang berada di
drektori ini. Subdirektori yang sering diakses pada direktori /etc antara lain :

httpd, apache web server.

ppp , point to point protocol untuk koneksi ke Internet.

rc.d atau init.d, inisialisasi (startup) dan terminasi (shutdown) proses di Linux

dengan konsep runlevel.

cron.d , rincian proses yang dieksekusi dengan menggunakan jadwal(time

dependent process)

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

21

FILES, file security dan konfigurasi meliputi : passwd, hosts, shadow, ftpaccess,

inetd.conf, lilo.conf, motd, printcap, profile, resolv.conf, sendmail.cf, syslog.conf,


dhcp.conf, smb.conf, fstab .
Direktori /dev
Konsep Unix dan Linux adalah memperlakukan peralatan hardware sama seperti
penanganan file. Setiap alat mempunyai nama file yang disimpan pada direktori /dev.
Peralatan
Floppy
Harddisk

Direktori
/dev/fd0

IDE : /dev/had, /dev/hdb, /dev/hdc, /dev/hdd


SCSI : /dev/sda, /dev/sdb, /dev/sdc
SCSI : /dev/scd0, /dev/scd1

CDROM

IDE : /dev/gscd, /dev/sonycd


Universal : /dev/cdrom (link dari actual cdrom ide atau scsi)

Mouse

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

Parallel Port

LPT1 : /dev/lp0
LPT2 : /dev/lp1
COM1 : /dev/ttyS0

Serial Port

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

Direktori /proc
Direktori /proc adalah direktori yang dibuat diatas RAM (Random Access
Memory) dengan system file yang diatur oleh kernel.

/proc berisi nomor proses dari

system dan nama driver yang aktif di system. Semua direktori berukuran 0 (kosong)
kecuali file kcore

dan self .

merepresentasikan PID (Process ID).

Setiap nomor yang ada pada direktori tsb

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

22

3 TIPE FILE
Pada Linux terdapat 6 buah tipe file yaitu

Ordinary file

Direktori

Block Device (Peralatan I/O)


Merupakan representasi dari peralatan hardware yang menggunakan transmisi data
per block (misalnya 1 KB block), seperti disk, floppy, tape.

Character Device (Peralatan I/O)


Merupakan representasi dari peralatan hardware yang menggunakan transmisi data
karakter per karakter, seperti terminal, modem, plotter dll

Named Pipe (FIFO)


File yang digunakan secara intern oleh system operasi untuk komunikasi antar
proses

Link File

4 PROPERTI FILE
File mempunyai beberapa atribut, antara lain :

Tipe file

: menentukan tipe dari file, yaitu :

Karakter

Arti

File biasa

Direktori

Symbolic link

Block special file

Character special file

Socket link

FIFO

Ijin akses

: menentukan hak user terhadap file ini.

Jumlah link

: jumlah link untuk file ini.

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

23

Pemilik (Owner) : menentukan siapa pemilik file ini

Group

: menentukan group yang memiliki file ini

Jumlah karakter

: menentukan ukuran file dalam byte

Waktu pembuatan : menentukan kapan file terakhir dimodifikasi

Nama file

: menentukan nama file yang dimaksud

Contoh :
-rw-rw-r-- 1

bin

auth

Pemilik
Jml link

1639
Group

Oct 31 20:19
Jml karakter

/etc/passwd

Waktu
Nama file

Ijin akses
tipe

5 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

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

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

24

fileDuplikat disebut hard link dimana kedua file akan muncul identik (link

count = 2) Bila fileAsli atau ileDuplikat diubah perubahan akan terjadi pada file
lainna.
Symbolic Link diperlukan bila file tersebut di link dengan direktori /file yang
berada pada partisi yang berbeda. Tipe file menjadi l (link) dan file tersebut menunjuk
ke tempat asal. Format :
ln s /FULLPATH/fileAsli /FULLPATH/fileDuplikat

Pilihan s (shortcut) merupakan bentuk soft link dimana jumlah link count pada
file asal tidak akan berubah. Pada bentuk soft link, symbolic link dapat dilakukan pada
file yang tidak ada, sedangkan pada hard link tidak dimungkinkan. Perbedaan lain,
symbolic link dapat dibentuk melalui media disk atau partisi yang berbeda dengan soft
link, tetapi pada hard link terbatas pada partisi disk yang sama.

7 MELIHAT ISI FILE


Untuk melihat jenis file menggunakan format :
file filename(s)

Isi file akan dilaporkan dengan deskripsi level tinggin seperti contoh berikut
$ file myprog.c letter.txt webpage.html
myprog.c:

C program text

letter.txt:

ASCII text

webpage.html:

HTML document text

Perintah

ini

dapat

digunakan

secara

luas

untuk

file

yang

kadang

membingungkan, misalnya antara kode C++ dan Java.

8 MENCARI FILE
Jika ingin melihat bagaimana pohon direktori dapat digunakan perintah

find
Format : find directory name targetfile -print
Akan melihat file yang bernama targetfile (bisa berupa karakter wildcard)

which
Format : which command

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

25

Untuk mengetahui letak system utility

locate
Format : locate string
Akan me ncari file pada semua directori dengan lebih cepat dan ditampilkan dengan
path yang penuh.

9 MENCARI TEXT PADA FILE


Untuk mencari text pada file digunakan perintah grep (General Regular
Expression Print) dengan format perintah
grep option pattern files

Grep akan mencari file yang bernama sesuai pattern yang diberikan dan akan
menampilkan baris yang sesuai.

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan di bawah ini :
1. Apa yang dimaksud perintah-perintah direktory : pwd, cd, mkdir, rmdir.

2. Apa yang dimaksud perintah-perintah manipulasi file : cp, mv dan rm (sertakan


format yang digunakan)
3. Jelaskan perbedaan Symbolic link menggunakan hard link (direct) dan soft link
(indirect).
4. Tuliskan maksud perintah-perintah : file, find, which , locate dan grep.

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini.
Perhatikan hasilnya.
3. Selesaikan soal-soal latihan

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

26

Percobaan 1 : Direktory
1. Melihat direktori HOME
$ pwd
$ echo $HOME

2. Melihat direktori aktual dan parent direktori


$
$
$
$
$
$

pwd
cd .
pwd
cd ..
pwd
cd

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

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

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

rmdir
ls -l
rmdir
ls -l

B
B
B/F B
B

(Terdapat pesan error, mengapa ?)


(Terdapat pesan error, me ngapa ?)

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


direktori lain.
$
$
$
$
$
$
$
$
$
$

pwd
ls -l
cd A
pwd
cd ..
pwd
cd /home/<user>/C
pwd
cd /<user/C
(Terdapat pesan error, mengapa ?)
pwd

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

Percobaan 2 : Manipulasi file


1. Perintah cp untuk mengkopi file atau seluruh direktori
$ cat > contoh
Membuat sebuah file
[Ctrl-d]
$ cp contoh contoh1
$ ls -l
$ cp contoh A
$ ls l A
$ cp contoh contoh1 A/D
$ ls l A/D

2. Perintah mv untuk memindah file


$
$
$
$
$
$

mv
ls
mv
ls
mv
ls

contoh contoh2
-l
contoh1 contoh2 A/D
l A/D
contoh contoh1 C
l C

3. Perintah rm untuk menghapus file


$
$
$
$
$

rm
ls
rm
rm
ls

contoh2
-l
i contoh
rf A C
-l

Percobaan 3 : Symbolic Link


1.

Membuat shortcut (file link)


$
$
$
$
$
$
$
$
$
$
$

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
ln -s z bye.txt
ls -l bye.txt
cat bye.txt

27

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

Percobaan 4 : Melihat Isi File


$ ls l
$ file halo.txt
$ file bye.txt

Percobaan 5 : Mencari file


1. Perintah find
$ find /home name *.txt print > myerror.txt
$ cat myerror.txt
$ find . name *.txt exec wc l {} ;

2. Perintah which
$ which ls

3. Perintah locate
$ locate *.txt

Percobaan 6 : Mencari text pada file


$ grep Hallo *.txt

LATIHAN:
1. Cobalah urutan perintah berikut :
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$

cd
pwd
ls al
cd .
pwd
cd ..
pwd
ls -al
cd ..
pwd
ls -al
cd /etc
ls al | more
cat passwd
cd
pwd

28

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

29

2. Lanjutkan penelusuran pohon pada sistem file menggunakan cd, ls , pwd dan cat .
Telusuri direktory /bin, /usr/bin, /sbin, /tmp dan /boot.
3. Telusuri direktory /dev.

Identifikasi perangkat yang tersedia. Identifikasi tty

(termninal) Anda (ketik who am i); siapa pemilih tty Anda (gunakan ls l).
4. Telusuri derectory /proc.

Tampilkan isi file interrupts,

devices,

cpuinfo, meminfo dan uptime menggunakan perintah cat . Dapatkah Anda

melihat mengapa directory /proc disebut pseudo -filesystem yang memungkinkan


akses ke struktur data kernel ?
5. Ubahlah direktory home ke user lain secara langsung menggunakan cd ~username.
6. Ubah kembali ke direktory home Anda.
7. Buat subdirektory work dan play.
8. Hapus subdirektory work.
9. Copy file /etc/passwd ke direktory home Anda.
10. Pindahkan ke subirectory play .
11. Ubahlah ke subdirektory play dan buat symbolic link dengan nama terminal yang
menunjuk ke perangkat tty. Apa yang terjadi jika melakukan hard link ke perangkat
tty ?
12. Buatlah file bernama hello.txt yang berisi kata hello word . Dapatkah Anda
gunakan cp menggunakan terminal sebagai file asal untuk menghasilkan efek
yang sama ?
13. Copy hello.txt ke terminal. Apa yang terjadi ?
14. Masih direktory home, copy keseluruhan direktory play ke direktory bernama work
menggunakan symbolic link.
15. Hapus direktory work dan isinya dengan satu perintah

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.


a.

Analisa setiap hasil tampilannya.

b.

Pada Percobaan 1 point 3 buatlah pohon dari struktur file dan direktori

c.

Bila terdapat pesan error, jelaskan penyebabnya.

PRAKTIKUM 3 OPERASI FILE DAN STRUKTUR DIREKTORY

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

30

Praktikum 4 A
Proses dan Manajemen Proses
POKOK BAHASAN:
Proses pada Sistem Operasi Linux
Manajemen Proses pada Sistem Operasi Linux

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami konsep proses pada sis tem operasi Linux.
Menampilkan beberapa cara menampilkan hubungan proses parent dan child.
Menampilkan status proses dengan beberapa format berbeda.
Melakukan pengontrolan proses pada shell.
Memahami penjadwalan prioritas.

DASAR TEORI:
1 KONSEP PROSES PADA SISTEM OPERASI LINUX
Proses adalah program yang sedang dieksekusi. Setiap kali menggunakan
utilitas sistem atau program aplikasi dari shell, satu atau lebih proses child akan
dibuat oleh shell sesuai perintah yang diberikan. Setiap kali instruksi dibe rikan 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 :

Foreground
Proses yang diciptakan oleh pemakai langsung pada terminal (interaktif, dialog)

31

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

32

Batch
Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu). Prose
Batch tidak diasosiasikan (berinteraksi) dengan terminal.

Daemon
Proses yang menunggu permintaan (request) dari proses lainnya dan menjalankan
tugas sesuai dengan permintaan tersebut. Bila tidak ada request, maka program ini
akan berada dalam kondisi idle dan tidak menggunakan waktu hitung CPU.
Umumnya nama proses daemon di UNIX berakhiran d, misalnya inetd, named ,
popd 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 system


Standar nomor sinyal yang terpenting adalah :

No Sinyal

Nama

Deskripsi

SIGHUP

SIGINT

SIGQUIT

Sinyal Quit, melalui ^\

SIGKILL

Sinyal Kill, menghentikan proses

15

SIGTERM

Sinyal terminasi software

Hangup, sinyal dikirim bila proses terputus,


misalnya melalui putusnya hubungan modem
Sinyal interrupt, melalui ^C

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

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

33

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.

4 MENGONTROL PROSES PADA SHELL


Shell menyediakan fasilitas job control

yang

memungkinkan mengontrol

beberapa job atau proses yang sedang berjalan pada waktu yang sama. Misalnya bila
melakukan pengeditan file teks dan ingin melakukan interrupt pengeditan untuk
mengerjakan hal lainnya. Bila selesai, dapat kembali (switch) ke editor dan melakukan
pengeditan file teks kembali.
Job bekerja pada foreground atau background.

Pada foreground hanya

diper untukkan untuk satu job pada satu waktu. Job pada foreground akan mengontrol
shell - menerima input dari keyboard dan mengirim output ke layar.

Job pada

background tidak menerima input dari terminal, biasanya berjalan tanpa memerlukan
interaksi.
Job pada foreground kemungkinan dihentikan sementara (suspend), dengan
menekan [Ctrl-Z].

Job yang dihentikan sementara dapat dijalankan kembali pada

foreground atau background sesuai keperluan dengan menekan fg atau bg . Sebagai


catatan, menghentikan job seme ntara sangat berbeda dengan melakuakan interrupt job
(biasanya menggunakan [Ctrl-C]), dimana job yang diinterrup akan dimatikan secara
permanen dan tidak dapat dijalankan lagi.

5 MENGONTROL PROSES LAIN


Perintah ps dapat digunakan untuk menunjukkan semua proses yang sedang
berjalan pada mesin (bukan hanya proses pada shell saat ini) dengan format :
ps fae atau
ps -aux

Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang
menyediakan cara interaktif untuk memonitor aktifitas sistem. Statistik secara detail

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

34

dengan proses yang berjalan ditampilkan dan secara terus-menerus di-refresh . Proses
ditampilkan secara terurut dari utilitas CPU. Kunci yang berguna pada top adalah
s set update frequency
u display proses dari satu user
k kill proses (dengan PID)
q quit

Utilitas untuk melakukan pengontrolan proses dapat ditemukan pada sistem


UNIX adalah perintah killall. Perintah ini akan menghentikan proses sesuai PID
atau job number proses.

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan di bawah ini :
1. Apa yang dimaksud dengan proses ?
2. Apa yang dimaksud perintah untuk menampilkan status proses :
ps, pstree.

3. Sebutkan opsi yang dapat diberikan pada perintah ps


4. Apa yang dimaksud dengan sinyal ? Apa perintah untuk mengirim sinyal ?
5. Apa yang dimaksud dengan proses foreground dan background pada job control ?
6. Apa yang dimaksud perintah-perintah penjadwalan prioritas :
top, nice, renice.

PERCOBAAN:
1. Login sebagai user.
2. Download program C++ untuk menampilkan bilangan prima yang bernama
primes.

3. Lakukan percobaan-percobaan di bawah ini kemudian analisa hasil percobaan.


4. Selesaikan soal-soal latihan.

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

Percobaan 1 : Status Proses


6.

Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2


dan login ke terminal sebagai user.

7.

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 (Sleepin g) dan R (Running), COMMAND
merupakan instruksi yang digunakan.
$ ps

8.

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

9.

Mencari proses yang spesifik pemakai. Proses diatas hanya terbatas pada
proses milik pemakai, dimana pemakai teresbut melakukan login
$ ps u <user>

10.

Mencari proses lainnya gunakan opsi a (all) dan au (all user)


$ ps a
$ ps au

11.

Logout dan tekan Alt+F7 untuk kembali ke mode grafis

Percobaan 2 : Menampilkan Hubungan Proses Parent dan Child


1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan
login ke terminal sebagai user.

35

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

36

Ketik ps eH dan tekan Enter. Opsi e memilih semua proses dan opsi H

12.

menghasilkan tampilan proses secara hierarki. Proses child muncul dibawah


proses parent. Proses child ditandai dengan awalan beberapa spasi.
$ ps -eH

Ketik ps e f dan tekan Enter. Tampilan serupa dengan langkah 2. Opsi

13.

f akan menampilkan status proses dengan karakter grafis (\ dan _)


$ ps e f

Ketik pstree dan tekan Enter. Akan ditampilkan semua proses pada

14.

sistem dalam bentuk hirarki parent/child. Proses parent di sebelah kiri proses
child. Sebagai contoh proses init sebagai parent (ancestor) dari semua
proses pada sistem. Beberapa child dari init mempunyai child. Proses
login mempunya i proses bash sebagai child. Proses bash mempunyai

proses child startx.

Proses startx mempunyai child

xinit dan

seterusnya.
$ pstree

Ketik pstree | grep mingetty dan tekan Enter.

15.

Akan menampilkan

semua proses mingetty yang berjalan pada system yang berupa console
virtual. Selain menampikan semua proses, proses dikelompokkan dalam satu
baris dengan suatu angka sebagai jumlah proses yang berjalan.
$ pstree | grep mingetty

Untuk melihat semua PID untuk proses gunakan opsi p.

16.

$ pstree p

17.

Untuk menampilk an proses dan ancestor yang tercetak tebal gunakan opsi
h.
$ pstree h

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

Percobaan 3 : Menampilkan Status Proses dengan Berbagai Format


9. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan
login ke terminal sebagai user.
10. Ketik ps e | more dan tekan Enter. Opsi -e menampilkan semua proses
dalam bentuk 4 kolom : PID, TTY, TIME dan CMD.
$ ps e | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen,


tekan q untuk kembali ke prompt perintah.
11. Ketik ps ax | more dan tekan Enter. Opsi a akan menampilkan semua proses
yang dihasilkan terminal (TTY). Opsi x menampilkan semua proses yang
tidak dihasilkan terminal.

Secara logika opsi ini sama dengan opsi e.

Terdapa 5 kolom : PID, TTY, STAT, TIME dan COMMAND.


$ ps ax | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen,


tekan q untuk kembali ke prompt perintah.
12. Ketik ps e f | more dan tekan Enter. Opsi e f akan menampilkan semua
proses dalam format daftar penuh.
$ ps ef | more

Jika halaman penuh terlihat prompt --More-- di bagian bawah screen,


tekan q untuk kembali ke prompt perintah.
13. Ketik ps eo pid, cmd | more dan tekan Enter. Opsi eo akan menampilkan
semua proses dalam format sesuai definisi user yaitu terdiri dari kolom PID
dan CMD.
$ ps eo pid,cmd | more

Jika halaman penuh et rlihat prompt --More-- di bagian bawah screen,


tekan q untuk kembali ke prompt perintah.

37

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

20. Ketik ps eo pid,ppid,%mem,cmd | more dan tekan Enter.

38
Akan

menampilkan kolom PID, PPID dan %MEM. PPID adalah proses ID dari
proses parent.

%MEM menampilkan persentasi memory system yang

digunakan proses. Jika proses hanya menggunakan sedikit memory system


akan dita mpilkan 0.
$ ps eo pid,ppid,%mem,cmd | more
21. Logout dan tekan Alt+F7 untuk kembali ke mode grafis

Percobaan 4 : Mengontrol proses pada shell


1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan
login ke terminal sebagai user.
2. Gunakan perintah yes yang mengirim output y yang tidak pernah berhenti
$ yes

Untuk menghentikannya gunakan Ctrl-C.


3. Belokkan standart output ke /dev/null
$ yes > /dev/null

Untuk menghentikannya gunakan Ctrl-C.


4. Salah satu cara agar perintah yes tetap dijalankan tetapi shell tetap digunakan
untuk hal yang lain dengan meletakkan proses pada background dengan
menambahkan karakter & pada akhir perintah.
$ yes > /dev/null &

Angka dalam [ ] merupakan job number diikuti PID.


5. Untuk melihat status proses gunakan perintah jobs .
$ jobs

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

7. Untuk menghentikan job, gunakan perintah kill diikuti job number atau
PID proses. Untuk identifikasi job number, diikuti prefix dengan karakter
%.
$ kill %<nomor job>

contoh : kill %1

4. Lihat status job setelah diterminasi


$ jobs

39

Praktikum 4 B
Proses dan Manajemen Proses
POKOK BAHASAN:
Proses pada Sistem Operasi Linux
Manajemen Proses pada Sistem Operasi Linux

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami konsep proses pada sis tem operasi Linux.
Menampilkan beberapa cara menampilkan hubungan proses parent dan child.
Menampilkan status proses dengan beberapa format berbeda.
Melakukan pengontrolan proses pada shell.
Memahami penjadwalan prioritas.

DASAR TEORI:
1 KONSEP PROSES PADA SISTEM OPERASI LINUX
Proses adalah program yang sedang dieksekusi. Setiap kali menggunakan
utilitas sistem atau program aplikasi dari shell, satu atau lebih proses child akan
dibuat oleh shell sesuai perintah yang diberikan. Setiap kali instruksi dibe rikan 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 :

Foreground
Proses yang diciptakan oleh pemakai langsung pada terminal (interaktif, dialog)

31

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

32

Batch
Proses yang dikumpulkan dan dijalankan secara sekuensial (satu persatu). Prose
Batch tidak diasosiasikan (berinteraksi) dengan terminal.

Daemon
Proses yang menunggu permintaan (request) dari proses lainnya dan menjalankan
tugas sesuai dengan permintaan tersebut. Bila tidak ada request, maka program ini
akan berada dalam kondisi idle dan tidak menggunakan waktu hitung CPU.
Umumnya nama proses daemon di UNIX berakhiran d, misalnya inetd, named ,
popd 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 system


Standar nomor sinyal yang terpenting adalah :
No Sinyal

Nama

Deskripsi

SIGHUP

SIGINT

SIGQUIT

Sinyal Quit, melalui ^\

SIGKILL

Sinyal Kill, menghentikan proses

15

SIGTERM

Sinyal terminasi software

Hangup, sinyal dikirim bila proses terputus,


misalnya melalui putusnya hubungan modem
Sinyal interrupt, melalui ^C

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

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

33

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.

4 MENGONTROL PROSES PADA SHELL


Shell menyediakan fasilitas job control

yang

memungkinkan mengontrol

beberapa job atau proses yang sedang berjalan pada waktu yang sama. Misalnya bila
melakukan pengeditan file teks dan ingin melakukan interrupt pengeditan untuk
mengerjakan hal lainnya. Bila selesai, dapat kembali (switch) ke editor dan melakukan
pengeditan file teks kembali.
Job bekerja pada foreground atau background.

Pada foreground hanya

diper untukkan untuk satu job pada satu waktu. Job pada foreground akan mengontrol
shell - menerima input dari keyboard dan mengirim output ke layar.

Job pada

background tidak menerima input dari terminal, biasanya berjalan tanpa memerlukan
interaksi.
Job pada foreground kemungkinan dihentikan sementara (suspend), dengan
menekan [Ctrl-Z].

Job yang dihentikan sementara dapat dijalankan kembali pada

foreground atau background sesuai keperluan dengan menekan fg atau bg . Sebagai


catatan, menghentikan job seme ntara sangat berbeda dengan melakuakan interrupt job
(biasanya menggunakan [Ctrl-C]), dimana job yang diinterrup akan dimatikan secara
permanen dan tidak dapat dijalankan lagi.

5 MENGONTROL PROSES LAIN


Perintah ps dapat digunakan untuk menunjukkan semua proses yang sedang
berjalan pada mesin (bukan hanya proses pada shell saat ini) dengan format :
ps fae atau
ps -aux

Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang
menyediakan cara interaktif untuk memonitor aktifitas sistem. Statistik secara detail

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

34

dengan proses yang berjalan ditampilkan dan secara terus-menerus di-refresh . Proses
ditampilkan secara terurut dari utilitas CPU. Kunci yang berguna pada top adalah
s set update frequency
u display proses dari satu user
k kill proses (dengan PID)
q quit

Utilitas untuk melakukan pengontrolan proses dapat ditemukan pada sistem


UNIX adalah perintah killall. Perintah ini akan menghentikan proses sesuai PID
atau job number proses.

Percobaan 5 : Menghentikan dan memulai kembali job


1. Cara lain meletakkan job pada background dengan memulai job secara
normal (pada foreground), stop job dan memulai lagi pada background
$ yes > /dev/null

Hentikan sementara job (suspend ), bukan menghentikannya (terminate ),


tetapi menghentikan sementara job sampai di restart. Untuk menghentikan
sementara job gunakan Ctrl-Z.
2. Untuk restart job pada foreground , gunakan perintah fg.
$ fg

3. Shell akan menampilkan nama perintah yang diletakkan di foreground . Stop


job lagi dengan Ctrl-Z. Kemudian gunakan perintah bg untuk meletakkan
job pada background .
$ bg

Job tidak bisa dihentikan dengan Ctrl-Z karena job berada pada background.
Untuk menghentikannya, letakkan job pada foreground dengan fg dan
kemudian hentikan sementara dengan Ctrl-Z.
$ fg

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

35

4. Job pada background dapat digunakan untuk menampilkan teks pada


terminal, dimana dapat diabaikan jika mencoba mengerjakan job lain.
$ yes &

Untuk menghentikannya tidak dapat menggunakan Ctrl-C.

Job harus

dipindah ke foreground, baru dihentikan dengan cara tekan fg dan tekan


Enter, kemudian dilanjutkan dengan Ctrl-Z untuk menghentikan sementara.
5. Apabila ingin menjalankan banyak job dalam satu waktu, letakkan job pada
foreground atau background dengan memberikan job ID
$ fg %2
$ bg %2

atau

$ %2

6. tekan fg dan tekan Enter, kemudian dilanjutkan dengan Ctrl -Z untuk


menghentikan sementara.
7. Lihat job dengan perintah ps -fae dan tekan Enter. Kemudian hentikan
proses dengan perintah kill.
$ ps -fae
$ kill -9 <NomorPID>
8. Logout dan tekan Alt+F7 untuk kembali ke mode grafis

Percobaan 6 : Percobaan dengan Penjadwalan Prioritas


1. Login sebagai root.
2. Buka 3 terminal, tampilkan pada screen yang sama.
3. Pada setiap terminal, ketik PS1 = \w: diikuti Enter. \w menampilkan path
pada direktori home.
4. Karena login sebagai root, maka akan ditampilkan ~: pada setiap terminal.
Untuk setiap terminal ketik pwd dan tekan Enter untuk melihat bahwa Anda
sedang berada pada direktori /root.
5. Buka terminal lagi (keempat), atur posisi sehingga keempat terminal terlihat
pada screen.

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

6. Pada terminal keempat, ketik top dan tekan Enter. Maka program top
akan muncul. Ketik i. Top akan menampilkan proses yang aktif. Ketik lmt.
Top tidak lagi menampilkan informasi pada bagian atas dari screen. Pada
percobaan ini, terminal ke empat sebagai je ndela Top.
7. Pada terminal 1, bukalah program executable C++ dengan mengetik program
yes dan tekan Enter.
8. Ulangi langkah 7 untuk terminal 2.
9. Jendela Top akan menampilkan dua program yes sebagai proses yang
berjalan. Nilai %CPU sama pada keduanya. Hal ini berarti kedua proses
mengkonsumsi waktu proses yang sama dan berjalan sama cepat. PID dari
kedua proses akan berbeda, misalnya 3148 dan 3149. Kemudian gunakan
terminal 3 (yang tidak menjalankan primes maupun Jendela Top) dan ketik
renice 19 <PID terimnal 1> (contoh : renice 19 3148) dan diikuti Enter.
Hal ini berarti mengganti penjadwalan prioritas dari proses ke 19.
10. Tunggu beberapa saat sampai program top berubah dan terlihat pada jendela
Top. Pada kolom STAT memperlihatkan N untuk proses 3148. Hal ini
berarti bahwa penjadwalan prioritas untuk proses 3148 lebih besar (lebih
lambat) dari 0. Proses 3149 berjalan lebih cepat.
11. Program top juga mempunyai fungsi yang sama dengan program renice .
Pilih Jendela Top dan tekan r.

Program top terdapat prompt PID to

renice: tekan 3148 (ingat bahwa Anda harus mengganti 3148 dengan PID
Anda sendiri) dan tekan Enter. Program top memberikan prompt Renice
PID 3148 to value: tekan -19 dan tekan Enter.
12. Tunggu beberapa saat sampai top berubah dan lihat nilai %CPU pada
kedua proses. Sekarang proses 3148 lebih cepat dari proses 3149. Kolom
status menunjukkan < pada proses 3148 yang menunjukkan penjadwalan
prioritas lebih rendah (lebih cepat) dari nilai 0.

36

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

37

13. Pilih terminal 3 (yang sedang tidak menjalankan yes atau program top )
dan ketik nice n -10 yes dan tekan Enter. Tunggu beberapa saat agar
program top berubah dan akan terlihat proses primes ketiga. Misalnya
PID nya 4107. Opsi -10 berada pada kolom NI (penjadwalan prioritas).
14. Jangan menggunakan mouse dan keyboard selama 10 detik. Program top
menampilkan proses yang aktif selain program yes. Maka akan terlihat
proses top terdaftar tetapi %CPU kecil (dibawah 1.0) dan konsisten. Juga
terlihat proses berhubungan dengan dekstop grafis seperti X, panel dll.
15. Pindahkan mouse sehingga kursor berubah pada screen dan lihat apa yang
terjadi dengan tampilan top .

Proses tambahan akan muncul dan nilai

%CPU berubah sebagai bagian grafis yang bekerja. Satu alasan adalah
bahwa proses 4107 berjalan pada penjadwalan prioritas tinggi. Pilih jendela
Top, ketik r. PID to renice : muncul prompt. Ketik 4107 (ubahlah 4107
dengan PID Anda) dan tekan Enter. Renice PID 4107 to value: muncul
prompt. Ketik 0 dan tekan Enter. Sekarang pindahkan mouse ke sekeliling
screen. Lihat perubahannya.
16. Tutup semua terminal window.
17. Logout dan login kembali sebagai user.

LATIHAN:
1. Masuk ke tty2 dengan Ctrl+Alt+F2. Ketik ps au dan tekan Enter. Kemudian
perhatikan keluaran sebagai berikut :
a. Sebutkan nama -nama proses yang bukan root
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

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

38

$ ls
$ sh
$ ps

f.

Sebutkan PID yang paling besar dan kemudian buat urut-urutan proses sampai
ke PPID = 1.

2. Cobalah format tampilan ps dengan opsi berikut dan perhatikan hasil tampilannya :

-f

daftar penuh

-j

format job

format job control

daftar memanjang

format sinyal

format virtual memory

format register i386

2. Lakukan urutan pekerjaan berikut :


a. Gunakan perintah find ke seluruh direktory pada sistem, belokkan output
sehingga daftar direktori dialihkan ke file directories.txt dan daftar pesan
error dialihkan ke file errors.txt
b. Gunakan perintah sleep 5. Apa yang terjadi dengan perintah ini ?
c. Jalankan perintah pada background menggunakan &
d. Jalankan sleep 15 pada foreground , hentikan sementara dengan Ctrl- Z dan
kemudian letakkan pada background dengan bg. Ketikkan jobs. Ketikkan
ps. Kembalikan job ke foreground dengan perintah fg.

e. Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan


perintah kill untuk menghentikan proses diikuti job number.
f. Jalankan sleep 15 pada background menggunakan & dan kemudian gunakan
kill untuk menghentikan sementara proses. Gunakan bg untuk melanjutkan

menjalankan proses.
g. Jalankan sleep 60 pada background 5 kali dan terminasi semua pada dengan
menggunakan perintah killall.
h. Gunakan perintah ps , w dan top untuk menunjukkan semua proses yang
sedang dieksekusi.

PRAKTIKUM 4 PROSES DAN MANAJEMEN PROSES

39

i. Gunakan perintah ps aeH untuk menampilkan hierarki proses. Carilah init


proses.

Apakah Anda bisa identifikasi sistem daemon yang penting ?

Dapatkan Anda identifikasi shell dan subprose s ?


j. Kombinasikan ps fae dan grep , apa yang Anda lihat ?
k. Jalankan proses sleep 300 pada background. Log off komputer dan log in
kembali. Lihat daftar semua proses yang berjalan. Apa yang terjadi pada
proses sleep ?

LAPORAN RESMI:
1.

Analisa hasil percobaa n yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 5-A
Bekerja Dengan Bash Shell
POKOK BAHASAN:
History pada Bash Shell
Membuat Bash Shell Script

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami shell pada sistem operasi Linux.
Menggunakan feature history pada Bash Shell.
Mengubah feature history pada Bash Shell.
Mengubah prompt shell.
Melakukan konfigurasi Bash Shell untuk menjalankan skrip secara otomatis.
Membuat dan mengeksekusi shell script sederhana melalui editor vi.
Memahami job control.
Memahami stack.
Menggunakan alias.

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 superuser menggunakan promp #.
Beberapa macam shell :

/bin/sh

Bourne shell, dirancang oleh Steve Bourne dari AT&T

45

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

46

/bin/csh

Dikembangkan oleh UNIX Berkeley yang dikenal dengan C -Shell

/bin/bash

Kompatibel dengan Bourne Shell dan juga mengadaptasi kemampuan Korn-Shell.


Perbedaan mendasar antara Shell diatasi hampir tidak ada, kecuali pada fasilitas
pemrograman 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 sebe lum logout

Isi dari /etc/profile:


# System wide environment and startup programs
# Functions and aliases go in /etc/bashrc
PATH=$PATH:/usr/X11R6/bin
PS1=[\u@\h \W]\\$
umask 022
USER=id un
LOGNAME=$USER
MAIL=/var/spool/mail/$USER
HOSTNAME=/bi n/hostname
HISTSIZE=1000
HISTFILESIZE=1000

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

47

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 direktory

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 karakter kontrool sebagai berikut :
^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 actual.

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.

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

48

6 EDITOR vi
Vi adalah full screen editor, artinya editor tersebut dapat memanfaatkan fasilitas
satu layar penuh. Vi mempunyai 2 buah modus, yaitu :

Command line
Editor vi mengintepretasikan input sebagai instruksi untuk dieksekusi oleh editor,
contoh seperti mencari teks, mengganti teks secara otomatis dan lainnya.

Editing
Editor vi mengintepretasikan input sebagai teks yang akan dimasukkan ke dalam
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 :

Kunci

Keterangan

Pindah kursor ke kiri satu karakter

Pindah kursor ke kanan satu karakter

Pinda h kursor ke atas

Pindah kursor ke bawah

Menyisipkan teks (satu baris


setelah posisi kursor)

Menyisip kan teks (di sebelah kiri

Untuk keluar dari 5 model

posisi kursor)

kunci insert di samping ini

Menyisipkan teks (di sebelah kanan dan mengaktifkan kunciposisi kursor)

kunci lain, maka kita harus

Menyisipkan teks (di posisi awal menekan tombol Esc

(shift i)

baris)

terlebih dahulu.

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

Menyisipkan teks (di posisi akhir

(shift a)

baris)

Menghapus 1 huruf (di sebelah kanan posisi k ursor)

Dw

Manghapus 1 kata (di sebelah kanan posisi kursor)

Dd

Menghapus 1 baris (di sebelah kanan posisi kursor)

Yy

Mengkopi 1 baris

2yy

Mengkopi 2 baris

(Paste) Menampilkan baris kalimat yang sudah dikopi dengan


kunci yy

Cw

Mengganti 1 kata yang telah ditulis di sebelah kanan posisi kursor


dengan kata lain

Cc

Mengganti 1 baris kalimat yang telah ditulis di sebelah kanan


posisi kursor dengan kalimat lain

ctrl- b

Mundur satu layar

ctrl- f

Maju satu layar

ctrl- d

Maju setengah layar

Menggerakkan kursor ke kiri satu kata

Manggerakkan kursor ke kanan satu kata

Pergi ke awal baris

Pergi ke akhir baris

Membatalkan perintah yang terakhir kali

Membatalkan seluruh perubahan teks pada baris tempat kursor


berada

:!

Keluar untuk sementara dari editor vi dan menjalankan perintah


yang lain

49

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

: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 ke arah depan

?string

Mencari string ke arah belakang

Meneruskan pencarian untuk arah yang sama

Meneruskan pencarian untuk arah yang berbeda

50

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan di bawah ini :
1. Apa yang dimaksud dengan shell dan sebuatkan shell yang ada di system operasi
Linux.
2. Apa yang dimaksud dengan profile pada Bash Shell.
3. Apa yang Anda ketahui mengenai file .bashrc.
4. Apa yang dimaksud dengan history pada Bash Shell. Apa kegunaan perintah
history, sebutkan cara-cara untuk mengetahui history perintah-perintah yang pernah
digunakan oleh user!
5. Cobalah menggunakan editor vi untuk mengetik dan pahami perintah-perintah yang
ada seperti yang terdapat pada dasar teori (untuk dilakukan, tidak perlu dijawab
sebagai tugas pendahuluan). Perintah-perintah yang penting : insert huruf(kalimat),
delete (per huruf, per kata dan per baris), simpan file dan keluar dari editori vi.

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

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 diekseksi 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 : Menggunakan Feature History Bash


1. Bash shell menyimpan history perintah yang digunakan sebelumnya. Anda
dapat mengaksis history dalam beberapa cara. Cara paling mudah adalah
menggunakan Panah Atas. Maka perintah sebelumnya akan ditampilkan.
2. Berikutnya, berikan Bash shell beberapa perintah untuk diingat. Masukkan
perintah berikut dan tekan Enter pada setiap baris.
$
$
$
$
$

cd
ls l /etc
ls l
whoami
who

3. Untuk memeriksa apakah perintah ini ditambahkan pada history, dapat


menggunakan perintah history untuk melihat semua perintah yang pernah
dimasukkan.
$ history

51

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

52

4. Anda dapat memilih perintah sebelumnya dengan menggunakan Panah Atas ,


tetapi hal ini tidak efisien untuk perintah yang semakin bertambah banyak.
Cara yang mudah menggunkaan nomor pada perintah history atau
mencarinya.

Untuk memilih dan mengeksekusi perintah dengan nomor,

masukkan kunci ! diikuti nomor perintah.


$ !<Nomor Perintah>

Contoh : !780

5. Anda dapat mencari perintah dengan menyertakan perintah yang diinginkan.


Misalnya !?etc?! akan menjalankan perintah ls l /etc yang sebelumnya
digunakan.
$ !?etc?

6. Kemudian gunakan perintah history, maka akan terlihat perintah ls l


/etc yang kedua dan bukan !?etc?
$ history

7. Apabila string tidka ditemukan pada perintha history maka akan terdapat
pesan error.
$ !?wombat99?

8. Jika diketikkan !who maka yang dijalankan adalah perintah who . Tetapi bila
Anda ketikkan !whoa maka yang dijalankan adalah perintah whoami .
$ !who
$ !whoa

9. Anda bisa menggantikant string pada perintah history, terutama pada perintah
yang panjang. Misalnya ketik cat /bin/bash | strings | grep shell | less dan
tekan Enter. Maka akan menampilkan semua string pada file /bin/bash
yang berisi kata shell. Untuk keluar tekan q. Jika ingin menampilkan kata
alias, maka Anda tidak perlu mengetik perintah yang panjang lagi, tetapi
cukup ketik ^shell^alias^ dan tekan Enter maka akan menggantikan kata
shell dengan alias.
$ cat /bin/bash | strings | grep shell | less
$ ^shell^alias^

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

Percobaan 3 : Mengubah Feature History Bash


1. Bash shell akan menyimpan perintah history meskipun telah log out dan log
in kembali. File .bash_history menyimpan file history yang terdapat
pada home directory.
$ cd

2. Lihat beberapa baris pada file .bash_history dengan ketik tail .bash_history
dan tekan Enter. File ini bukan file yang up to date.
$ tail .bash_history

3. Ketik history dan tekan Enter. Maka akan terlihat baris terakhir adalah
perintah history dan baris sebelumnya adalah tail .bash_history .
Perintah history bersifat up to date, karena disimpan pada memory sistem.
$ history

4. Ketik perintah berikut


$ echo Ini perintah saya

5. Log out dan log in kembali sebagai user yang sama. Ketik history dan tekan
Enter. Maka perintah echo Ini perintah saya akan berada pada
baris terakhir. Lihat file .bash_history , maka perintah tsb akan terdapat
pada file .bash_history .
$ history
$ tail .bash_history

6. Ketik history|less untuk melihat perintah history terakhir pada screen. Tekan
spacebar untuk melihat file lebih banyak. Untuk keluar tekan q
$ history|less

7. Untuk melihat berapa banyak perintah history yang ada pada file ketik berikut
dan output yang keluar serupa di bawah ini
$ wc l .bash_history
1000
.bash_history

53

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

54

8. Output menunjukkan bahwa 1000 perintah history disimpan pada file history.
Untuk melihat jangkauan (limit) perintah history digunakan variabel
HISTSIZE. Untuk melihat jangkauan history ketik sebagai berikut
$ set|grep HISTSIZE

9. Bila ingin memperbesar jangkauan file history, maka ubahlah variabel


HISTSIZE pada skrip startup yang disebut .bashrc pada home directory.
$ echo HISTSIZE=5000 >> .bashrc

10. Log out dan log in kembali sebagai user yang sama.

Lihat perubahan

variabel HISTSIZE.
$ set|grep HISTSIZE

11. Ketikkan perintah history beberapa kali, maka perintah ini akan disimpan
pada BASH history meskipun yang diketikkan perintahnya sama.
12. Anda dapat melakukan konfigurasi BASH agar tidak menambah perintah ke
history jika perintah yang diketikkan sama dengan sebelumnya. Hal ini
dilakukan dengan menambahkan variabel HISTCONTROL dan diberikan
nilai ignoredups pada file .bashrc
$ echo HISTCONTROL=ignoredups >> .bashrc

13. Log out dan log in kembali sebagai user yang sama . Ketikkan history
beberapa kali dan perhatikan berapa kali history muncul.

Percobaan 4 : Mengubah Prompt Shell


1. Prompt Bash shell dikonfigurasi dengan men-setting nilai variabel PS1.
Selain menampilkan string statik sebagai prompt, Anda dapat menampilkan
menjadi dinamis. Contohnya, apabila ingin menunjukkan current directory
atau current time.

Ketik PS1=\t: dan tekan Enter untuk menampilkan

waktu sistem da lam format 24 jam sebagai prompt Bash.


HH:MM:SS
$ PS1=\t:

Format dalam

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

3. Untuk menampilkan format 12 jam dengan indikator am dan pm ketik


sebagai berikut :
$ PS1=\t:

4. Kebanyakan orang menginginkan prompt Bash menampilkan current


working directory. Direktory dapat ditampilkan dalam bentuk keseluruhan
path atau hanya nama direktory.

Karakter \w menampilkan hanya nama

direktory. Jika current directory adalah home directory, maka tampil prompt
~:
$ PS1=\w:

5. Ketik cd /usr/sbin untuk melihat prompt /usr/sbin:


$ cd /usr/sbin

5. Ketik PS1=\W: untuk melihat prompt sbin:


$ PS1=\W:

6. Ada beberapa prompt BASH lain yang dapat diubah, yaitu PS2, PS3 dan PS4.
Prompt PS2 digunakan sebagai prompt sekunder. Untuk melihat bagaimana
penggunaannya, ketik echo Hello (tanpa diakhiri penutup quote) dan tekan
Enter. Simbol lebih besar dari (>) akan muncul. Hal ini memberitahukan
bahwa BASH menunggu Anda menyelesaikan perintah. Ketik penutup quote
() dan tekan Enter. Perintah ini akan menyelesaikan prompt PS2, kata
Hello, muncul diikuti dengan prompt PS1 pada baris baru.
$ echo Hello
>

7. Anda dapat mengubah prompt PS2 seperti mengubah prompt PS1. Ketik
perintah berikut :
$ PS2=Selesai memasukkan perintah Anda:

55

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

8.

Kemudian ketik echo Hello (tanpa diakhiri penutup quote) dan tekan Enter.
Pada baris berikutnya akan muncul Selesai memasukkan perintah Anda:.
Kemudian ketikkan penutup quote () dan tekan Enter. Jika perintah selesai,
maka kata Hello akan muncul diikuti prompt PS1 pada baris baru.
$ echo Hello
Selesai memasukkan perintah Anda:

9. Prompt BASH dapat ditampilkan berwar na dengan melakukan setting colorsetting string . Sebagai contoh, prompt BASH di-set dengan \w\$, akan
menampilkan current working directory yang diikuti $ (atau # jika anda
login sebagai root). Untuk setting warna menjadi biru ketikkan berikut :
$ PS1=\033[0;34m\w\$ \033[0;37m

10. Untuk mendapatkan prompt warna merah ketikkan berikut :


$ PS1=\033[0;31m\w\$ \033[0;37m

30=hitam, 31=merah, 32=hijau, 34=biru, 35=ungu, 36=cyan, 37=putih.


11. Bila menginginkan beberapa warna, ketikkan perintah berikut :
$ PS1=\033[0;31m\w\033[0;32m\$ \033[0;37m

12. Anda bisa menampilkan atribut visual seperti lebih terang, berkedip dan
warna kebalikannya. Untuk menampilkan prompt yang lebih terang, atribut
control diganti 1, seperti perintah berikut :
$ PS1=\033[1;34m\w\033[1;32m\$ \033[0;37m

13. Untuk menampilkan prompt dengan warna berkebalikan, atribut control


diganti 7, seperti perintah berikut :
$ PS1=\033[7;34m\w\033[7;32m\$ \033[0;37m
14. Untuk menampilkan prompt berkedip, atribut control diganti 5, seperti
perintah berikut :
$ PS1=\033[5;34m\w\033[5;32m\$ \033[0;37m

56

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

57

Percobaan 5 : Menambahkan otomatisasi ke Prompt Shell


1. Pastikan Anda berada di home directory
$ cd ~

2. Buatlah skrip sederhana untuk mengurut daftar file.

Anda dapat

menggunakan teks editor, tetapi karena hanya satu baris, gunakan perintah
echo untuk membuat file.
$ echo sort ~/list > ~/r13; mv ~/r13 ~/list > ~/sorter

3. Buatlah file skrip diatas menjadi file executable


$ chmod +x sorter

4. Jalankan program sorter diatas setiap shell Bash menampilkan prompt PS1.
Untuk melakukannya, buatlah variable PROMPT_COMMAND dimana
nilainya adalah nama dari program sorter.
$ PROMPT_COMMAND=~/sorter

5. Ketikkan echo John Smith:13001>>list dan tekan Enter. Jika file list
tidak ada, akan dibuat secara otomatis, tetapi jika sudah ada, string John
Smith:13001 aka h ditambahkan.
$ echo John Smith:13001>>list

6. Ketik cat list dan tekan Enter. Maka Anda akan melihat isi file list. Pada
saat ini, file mungkin mempunyai hanya satu baris sehingga tidak dapat
dilihat apakah file sudah terurut.
$ cat list

7. Masukkan bebe rapa perintah serupa dengan point 5 tetapi dengan nama dan
nomor yang berbeda. Kemudian ketik cat list dan tekan Enter.
$
$
$
$
$
$

echo
echo
echo
echo
echo
echo

Anita:13002>>list
Samantha:13003>>list
Patrik:13004>>list
Sponse Bob:13005>>list
Lisa:13006>>list
Squid:13007>>list

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

58

8. Apabila Anda tidak menginginkan Shell Bash menampilkan file terurut


sepanjang

waktu,

Anda

tidak

perlu

menambahkan

variable

PROMPT_COMMAND=~/sorter pada file konfigurasi seperti .bashrc. Bila

Anda ingin BASH berhenti menjalankan program sorter, maka ketikkan


variable PROMPT_COMMAND= dan tekan Enter atau log out dan login
kembali.
$ PROMPT_COMMAND=

Praktikum 5-B
Bekerja Dengan Bash Shell
POKOK BAHASAN:
History pada Bash Shell
Membuat Bash Shell Script

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami shell pada sistem operasi Linux.
Menggunakan feature history pada Bash Shell.
Mengubah feature history pada Bash Shell.
Mengubah prompt shell.
Melakukan konfigurasi Bash Shell untuk menjalankan skrip secara otomatis.
Membuat dan mengeksekusi shell script sederhana melalui editor vi.
Memahami job control.
Memahami stack.
Menggunakan alias.

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 superuser menggunakan promp #.
Beberapa macam shell :

/bin/sh

Bourne shell, dirancang oleh Steve Bourne dari AT&T

45

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

46

/bin/csh

Dikembangkan oleh UNIX Berkeley yang dikenal dengan C -Shell

/bin/bash

Kompatibel dengan Bourne Shell dan juga mengadaptasi kemampuan Korn-Shell.


Perbedaan mendasar antara Shell diatasi hampir tidak ada, kecuali pada fasilitas
pemrograman 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 sebe lum logout

Isi dari /etc/profile:


# System wide environment and startup programs
# Functions and aliases go in /etc/bashrc
PATH=$PATH:/usr/X11R6/bin
PS1=[\u@\h \W]\\$
umask 022
USER=id un
LOGNAME=$USER
MAIL=/var/spool/mail/$USER
HOSTNAME=/bi n/hostname
HISTSIZE=1000
HISTFILESIZE=1000

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

47

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 direktory

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 karakter kontrool sebagai berikut :
^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 actual.

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.

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

48

6 EDITOR vi
Vi adalah full screen editor, artinya editor tersebut dapat memanfaatkan fasilitas
satu layar penuh. Vi mempunyai 2 buah modus, yaitu :

Command line
Editor vi mengintepretasikan input sebagai instruksi untuk dieksekusi oleh editor, contoh seperti mencari teks, mengganti teks
secara otomatis dan lainnya.

Editing
Editor vi mengintepretasikan input sebagai teks yang akan dimasukkan ke dalam 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 :
Kunci

Keterangan

Pindah kursor ke kiri satu karakter

Pindah kursor ke kanan satu karakter

Pinda h kursor ke atas

Pindah kursor ke bawah

Menyisipkan teks (satu baris


setelah posisi kursor)

Menyisip kan teks (di sebelah kiri

Untuk keluar dari 5 model

posisi kursor)

kunci insert di samping ini

Menyisipkan teks (di sebelah kanan dan mengaktifkan kunciposisi kursor)

kunci lain, maka kita harus

Menyisipkan teks (di posisi awal menekan tombol Esc

(shift i)

baris)

Menyisipkan teks (di posisi akhir

(shift a)

baris)

terlebih dahulu.

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

Menghapus 1 huruf (di sebelah kanan posisi k ursor)

Dw

Manghapus 1 kata (di sebelah kanan posisi kursor)

Dd

Menghapus 1 baris (di sebelah kanan posisi kursor)

Yy

Mengkopi 1 baris

2yy

Mengkopi 2 baris

(Paste) Menampilkan baris kalimat yang sudah dikopi dengan


kunci yy

Cw

Mengganti 1 kata yang telah ditulis di sebelah kanan posisi kursor


dengan kata lain

Cc

Mengganti 1 baris kalimat yang telah ditulis di sebelah kanan


posisi kursor dengan kalimat lain

ctrl- b

Mundur satu layar

ctrl- f

Maju satu layar

ctrl- d

Maju setengah layar

Menggerakkan kursor ke kiri satu kata

Manggerakkan kursor ke kanan satu kata

Pergi ke awal baris

Pergi ke akhir baris

Membatalkan perintah yang terakhir kali

Membatalkan seluruh perubahan teks pada baris tempat kursor


berada

:!

Keluar untuk sementara dari editor vi dan menjalankan perintah


yang lain

:wq

Write dan quite, simpan berkas dan keluar

:q!

Keluar vi tanpa menyimpan

49

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

:se all

Menampilkan semua pilihan set status

:se nu

Menampilkan nomor baris pada kiri layar

/string

Mencari string ke arah depan

?string

Mencari string ke arah belakang

Meneruskan pencarian untuk arah yang sama

Meneruskan pencarian untuk arah yang berbeda

Percobaan 6 : Membuat Bash-script dan menjalankannya


1. Membuat file p1.sh
$ vi p1.sh
echo Program bash Script

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

6. Menjalankan beberapa program shell dalam satu baris instruksi yang


dipisahkan dengan tanda ;
$ cat p1.sh ; cat p2.sh
$ ./p1.sh ; ./p2.sh

5. Menjalankan script sebagai prosees background, sehingga prompt tidak

50

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

51

Percobaan 7 : 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

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

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

52

Perc obaan 8 : 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. Instruksi dirs

digunakan untuk melihat stack direktori, pada output hanya

ditampilkan direktori home ~


$ dirs

4. Membuat 3 buah direktori

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

Percobaan 9 : Alias

53

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

1.

54

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

2.

Membuat beberapa alias


$ alias del=rm i
$ alias h=history

3.

Gunakan instruksi hasil alias


$ ls
$ del hasil
$ h | more

4.

Untuk menghapus alias gunakan instruksi unalias


$ unalias del
$ del files (Terdapat Pesan Kesalahan, mengapa ?)

LATIHAN:
1. Eksekusi seluruh profile yang ada :
a. Edit file profile /etc/profile dan tampilkan pesan seba gai berikut :
echo Profile dari /etc/profile

b. Asumsi nama anda student , maka edit semua profile yang ada yaitu :
/home/student /.bash_profile
/home/. student/.bash_login
/home/student /.profile
/home/student /.bashrc
c. Ganti nama /home/student dengan nama anda sendiri.

tersebut,

cantumkan

instruksi

echo,

misalnya

Pada setiap file


pada

/home/

student/.bash_profile:
echo Profile dari .bash_profile

d. Lakukan hal yang sama untuk file lainnya, sesuaikan tampilan dengan nama
file yang bersangkutan.
2. Jalankan instruksi subtitute user, kemudian keluar dengan perintah exit sebagai
berikut :
$ su student

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

55

$ exit

kemudian gunakan opsi sebagai berikut :


$ su student
$ exit

Jelaskan perbedaan kedua utilitas tersebut.


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

b. Edit file .bash_logout , tampilkan pesan dan tahan selama 4 detik, sebelum
eksekusi logout

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

b. Gunakan fasilitas history dengan mengedit instruksi baris ke 5 dari instruksi


yang terakhir dilakukan.
$ !-5

c. Ulangi instruksi yang terakhir. Gunakan juga ^P dan ^N untuk bernavigasi


pada history buffer
$ !!

d. Ulaingi instruksi pada history buffer nomor tertentu, misalnya nomor 150
$ !150

e. Ulangi instruksi dengan prefix ls


$ !ls
$ !?ls?

Jelaskan perbedaan instruksi diatas

5. Prompt String (PS)

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

56

a. Edit file .bash_profile , ganti prompt PS1 dengan >. Instruksi export
diperlukan dengan parameter nama variab le tersebut, agar perubahan variable
PS1 dikenal oleh semua shell
PS1=>
export PS1

Eksperimen hasil PS1 :


$ PS1=\! >
69 > PS1=\d >
Mon Sep 23 > PS1=\t >
10:10:20 > PS1=Saya=\u >
Saya=stD02001 > PS1=\w >
~ > PS1=\h >

b. Ubahlah warna shell prompt dengan warna biru dan berkedip.


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

b. Jalankan script tersebut sebagai berikut dan perhatikan hasilnya :


$
$
$
$

./p1.sh ; ./p3.sh ; ./p2.sh


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

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

PRAKTIKUM 5 BEKERJA DENGAN BASH SHELL

57

do
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 sebagai foreground, tekan ^Z dan kembalikan program


tersebut ke background
$ fg %1
$ bg

d. Stop program background dengan utilitas kill


$ ps x
$ kill [Nomor PID]

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 6-A
Pemrograman Shell
POKOK BAHASAN:
Pemrograman Shell

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mempelajari elemen dasar shell script
Membuat program shell interaktif
Menggunakan parameter dalam program
Mempelajari test kondisi serta operator logic yang terkait dengan instruksi test
Mengenal variable built-in dari shell
Membuat aplikasi dengan shell menggunakan konstruksi if-then-else
Menggunakan struktur case esac.
Loop dengan while, for, do while.
Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.

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

66

PRAKTIKUM 6 PEMROGRAMAN SHELL

67

Awal dari program shell, komentar awal ini akan dibaca oleh system, kemudian
system mengaktifkan program shell (/bin/sh) yang tertera di situ. Program shell
dapat dipilih, misalnya /bin/csh, /bin/ksh dan lainnya

Adalah komentar, sebagai dokumentasi, baris ini akan diabaikan oleh program
shell

Penggunaan variable (assignment), tidak boleh ada spasi di antara nama variable
dan konstanta

2 VARIABEL
Variable shell adalah variable yang dapat mempunyai nilai berupa nilai String.
Tata penulisan variable adalah sebagai berikut :
nama_var = nilai_var

Variable 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 variable tidak boleh dipisahkan dengan spasi, karena shell akan
menganggap pemisahan tersebut sebagai parameter, contoh :
VPT
VPT=

=poltek
poltek

##error
##error

Untuk melihat nilai/isi dari sebuah variable, gunakan tanda $ di depan nama
variable tersebut. Pada shell, instruksi echo dapat menampilkan isi variable 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 :
VPT=poltek
VPT2=poltek elektronika ITS

PRAKTIKUM 6 PEM ROGRAMAN SHELL

68

3 MEMBACA KEYBOARD
Nilai variable dapat diisi melalui keyboard (stdin) dengan instruksi read.

4 PARAMETER
Sebuah program shell dapat mempunyai parameter sebanyak 9 buah dan
direpresentasikan melalui variable khusus yaitu variable $!, $2, $3, $4, $5, $6, $7, $8
dan $9. Nama program she ll (nama script) direpresentasikan melalui variable $0.
Jumlah parameter dinyatakan sebagai $#. Bila tidak memberikan parameter,
maka nilai $# adalah 0.
Shell variable $* 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
variable 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 instruksi-awal
then
instruksi1
instruksi2

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

PRAKTIKUM 6 PEMROGRAMAN SHELL

69

7 KONSTRUKSI IF THEN ELSE


if instruksi1
then
instruksi1.1
instruksi1.2

else
instruksi2.1
instruksi2.2

fi

Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah
else akan dijalankan.

8 INSTRUKSI TEST
Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi.
Ekspresi terdiri dari factor 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

Test untuk files dan directory


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

PRAKTIKUM 6 PEM ROGRAMAN SHELL

70

-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 LOGICAL && DAN || (SHELL LEVEL)


Notasi && dan || digunakan untuk menggabungkan instruksi shell sebagai
alternatif untuk if then else. Notasi && dan || sering ditemukan dalah shell script
system administrator untuk menjalankan routine dari system 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.

tidak dijalankan.

Oleh karena itu, instruksi2

Sebaliknya bila hasil instruksi1 adalah TRUE(0), maka

instruksi2 dijalankan

instruksi1 || instruksi2

shell akan menge ksekusi 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.

PRAKTIKUM 6 PEMROGRAMAN SHELL

71

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 LOGICAL (TEST LEVEL)


Logical operator terdiri dari AND, OR dan NOT. Operator ini menggabungkan
hasil ekspresi sebagai berikut :
NOT : symbol !
!
True

False

False

True

AND : symbol -a
V1

V2

V1 a V2

False

False

False

False

True

False

True

False

False

True

True

True

V1

V2

V1 o V2

False

False

False

False

True

True

True

False

True

True

True

True

OR : symbol -o

PRAKTIKUM 6 PEM ROGRAMAN SHELL

72

12 KONSTRUKSI IF THEN ELSE IF


if instruksi1
then
instruksi1.1
instruksi1.2

elif instruksi2
then
instruksi2.1
instruksi2.2

else
instruksi3.1
instruksi3.2

fi

Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah
else akan dijalankan.

13 HITUNGAN ARITMETIKA
Tipe dari variable SHELL hanya satu yaitu STRING.

Tidak ada tipe lain

seperti Numerik, Floating, Boolean ata u lainnya. Akibatnya variable ini tidak dapat
membuat perhitungan aritmetika, misalnya :
A=5
B=$A +1

## error

UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang
melakukan aritmetika sederhana.

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

PRAKTIKUM 6 PEMROGRAMAN SHELL

73

15 KONSTRUKSI CASE
Case digunakan untuk menyederhanakan pemakaian if yang berantai,
sehingga dengan case, kondisi dapat dikelompokkan secara lo gis dengan lebih
jelas dan mudah untuk ditulis.
case variable in
match1)
instruksi1.1
instruksi1.2

;;
match2)
instruksi2.1
instruksi2.2

;;
*)
instruksi3.1
instruksi3.2

;;
esac

Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan ;;. Pada
akhir pilihan yaitu *) yang berarti adalah default, bila kondisi tidak memenuhi pola
sebelumnya

16 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

PRAKTIKUM 6 PEM ROGRAMAN SHELL

74

17 KONSTRUKSI WHILE
While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan
suatu kondisi. Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan.
Loop akan berhenti, bila kondisi FALSSE, atau program keluar dari blok while melalui
exit atau break.
while kondisi
do
instruksi1
instruksi2

done

18 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 :

19 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 variable local atau global.
Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi,

PRAKTIKUM 6 PEMROGRAMAN SHELL

75

jangan sampai bentrok dengan nama variable yang sam adi luar fungsi, sehingga tidak
terjadi isi variable berubah.

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, bacalah dasar teori diatas kemudian buatlah
program Shell untuk Latihan 1 sampai dengan 5.

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.

PRAKTIKUM 6 PEM ROGRAMAN SHELL

Percobaan 1 : Membuat shell script


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 variable pada shell interaktif
$ VPT=poltek
$ echo $VPT

2. Pemisahan 2 kata dengan spasi menandakan eksekusi 2 buah instruksi.


Karakter $ harus ada pada awal nama variable untuk melihat isi variable
tersebut, jika tidak, maka echo akan mengambil parameter tersebut sebagai
string.
$
$
$
$

3.

VPT2=poltek elektronika (Terdapat pesan error)


VPT2=poltek elektronika
echo VPT2
echo $VPT2

Menggabungkan dua variable atau lebih


$
$
$
$
$

V1=poltek
V2=:
V3=elektronika
V4=$V1$V2$V3
echo $V4

76

PRAKTIKUM 6 PEMROGRAMAN SHELL

4. Menggabungkan isi variable dengan string yang lain.

77
Jika digabungkan

dengan nama variable ya ng belum didefinisikan (kosong) maka instruksi echo


menghasilkan string kosong. Untuk menghindari kekeliruan, nama variable
perlu diproteksi dengan { } dan kemudian isi variable tersebut digabung
dengan string.
$ echo $V3
$ echo $V3ITS
$ echo ${V3}ITS

5. Variabel dapat berisi instruksi, yang kemudian bila dijadikan input untuk
shell, instruksi tersebut akan dieksekusi
$
$
$
$

6.

CMD=who
$CMD
CMD=ls l
$CMD

Modifikasi file prog01.sh berikut


$ vi prog01.sh
#!/bin/sh
V1=poltek
V2=:
V3=elektronika
echo Pemrograman shell
echo $V1$V2$V3
V3=ITS
echo $V1$V2 di $V3

7.

Cara sederhana mengeksekusi shell adalah dengan menggunakan notasi titik


di depan nama shell script tersebut. Bila direktori actual 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

PRAKTIKUM 6 PEM ROGRAMAN SHELL

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
read
echo
read
echo
read

Nama Anda :
nama
Alamat :
alamat
Kota :
kota

echo
echo Hasil adalah : $nama, $alamat di $kota

3.

Eksekusi program prog02.sh


$ . prog02.sh
Nama Anda :
Amir
Alamat :
Jl semangka 67
Kota :
Surabaya
Hasil adalah : Amir, Jl semangka di Surabaya

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

78

PRAKTIKUM 6 PEMROGRAMAN SHELL

echo
read
echo
read
echo
read

n Nama Anda :
nama
n Alamat :
alamat
n Kota :
kota

echo
echo Hasil adalah : $nama, $alamat di $kota

5. Eksekusi program prog02.sh


$ . prog02.sh
Nama Anda : Amir
Alamat : Jl semangka 67
Kota : Surabaya
Hasil adalah : Amir, Jl semangka di Surabaya

6. Variabel kosong adalah variable yang tidak mempunyai nilai. Variabel ini
didapat atas assignment atau membaca dari keyboard atau variable 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 variable DIR
$ pwd
$ DIR=`pwd`
$ echo $DIR

79

PRAKTIKUM 6 PEM ROGRAMAN SHELL

8. Buatlah shell script prog03.sh


$ 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

80

PRAKTIKUM 6 PEMROGRAMAN SHELL

81

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
echo Total parameter adalah $*
echo PID proses shell ini adalah $$

6.

Eksekusi prog04.sh dengan 4 parameter


$ . prog04.sh amir hasan badu ali

PRAKTIKUM 6 PEM ROGRAMAN SHELL

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 <user> /etc/passwd
$ echo $?

Percobaan 6 : Konstruksi if
1.

Instruksi dengan exit status 0


$ who
$ who | grep <user>
$ 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) diatas dapat disederhanakan dengan


$ if who|grep <user> >/dev/null
> then
>
echo okay
> fi

82

PRAKTIKUM 6 PEMROGRAMAN SHELL

Percobaan 7 : Konstruksi if then else


1. Membuat shell script prog05.sh
$ vi prog05.sh
#!/bin/sh
# prog05.sh
# Program akan memberikankonfirmasi 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
$ . prog05.sh

[nama=<user>]
[nama=studentOS]

83

Praktikum 6-B
Pemrograman Shell
POKOK BAHASAN:
Pemrograman Shell

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Menggunakan struktur case esac.
Loop dengan while, for, do while.
Membuat fungsi dan mengetahui cara memanggil fungsi tersebut.

DASAR TEORI:

1 INSTRUKSI TEST
Instruksi test digunakan untuk memeriksa kondisi dari sebuah ekspresi.
Ekspresi terdiri dari factor 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

66

PRAKTIKUM 6 PEMROGRAMAN SHELL

67
String is null

Test untuk files dan directory


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.

2 LOGICAL && DAN || (SHELL LEVEL)


Notasi && dan || digunakan untuk menggabungkan instruksi shell sebagai
alternatif untuk if then else.

Notasi && dan || sering ditemukan dalah shell script

system administrator untuk menjalankan routine dari system 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.

tidak dijalankan.

Oleh karena itu, instruksi2

Sebaliknya bila hasil instruksi1 adalah TRUE(0), maka

instruksi2 dijalankan

instruksi1 || instruksi2

shell akan mengeksekusi instruksi1, bila exit sta tus adalah TRUE(0), hasil dari
operasi OR tersebut sudah pasti menghasilkan TRUE, terlepas dari hasil eksekusi

PRAKTIKUM 6 PEMROGRAMAN SHELL

68

instruksi2. Oleh karena itu instruksi2 tidak perlu dijalankan. Bila hasil
instruksi1 adalah FALSE, maka instruksi2 akan dijalankan.

3 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

4 OPERATOR LOGICAL (TEST LEVEL)


Logical operator terdiri dari AND, OR dan NOT. Operator ini menggabungkan
hasil ekspresi sebagai berikut :
NOT : symbol !
!
True

False

False

True

AND : symbol -a
V1

V2

V1 a V2

False

False

False

False

True

False

True

False

False

PRAKTIKUM 6 PEMROGRAMAN SHELL

69

True

True

True

V1

V2

V1 o V2

False

False

False

False

True

True

True

False

True

True

True

True

OR : symbol -o

5 KONSTRUKSI IF THEN ELSE IF


if instruksi1
then
instruksi1.1
instruksi1.2

elif instruksi2
then
instruksi2.1
instruksi2.2

else
instruksi3.1
instruksi3.2

fi

Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah
else akan dijalankan.

6 HITUNGAN ARITMETIKA
Tipe dari variable SHELL hanya satu yaitu STRING.

Tidak ada tipe lain

seperti Numerik, Floating, Boolean atau lainnya. Akibatnya variable ini tidak dapat
membuat perhitungan aritmetika, misalnya :
A=5
B=$A +1

## error

PRAKTIKUM 6 PEMROGRAMAN SHELL

70

UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang
melakukan aritmetika sederhana.

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

8 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

;;
*)
instruksi3.1
instruksi3.2

;;
esac

Case diakhiri denan esac dan pada setiap kelompok instruksi diakhiri dengan ;;. Pada
akhir pilihan yaitu *) yang berarti adalah default, bila kondisi tidak memenuhi pola
sebelumnya

PRAKTIKUM 6 PEMROGRAMAN SHELL

71

9 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

10 KONSTRUKSI WHILE
While digunakan untuk pengulangan instruksi, yang umumnya dibatasi dengan
suatu kondisi. Selama kondisi tersebut TRUE, maka pengulangan terus dilakukan.
Loop akan berhenti, bila kondisi FALSSE, atau program keluar dari blok while melalui
exit atau break.
while kondisi
do
instruksi1
instruksi2

done

11 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 :

12 FUNGSI

PRAKTIKUM 6 PEMROGRAMAN SHELL

72

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 variable local atau global.
Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi,
jangan sampai bentrok dengan nama variable yang sam adi luar fungsi, sehingga tidak
terjadi isi variable berubah.

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, bacalah dasar teori diatas
kemudian buatlah program Shell untuk Latihan 1 sampai dengan 5.

Percobaan 8 : Instruksi Test


1.

Menggunakan instruksi test, perhatikan spasi antara


$
$
$
$
$

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

PRAKTIKUM 6 PEMROGRAMAN SHELL

2.

73

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>]

4.

(Terdapat pesan error)

Modifikasi prog06.sh dengan menggunakan notasi untuk test


$ vi prog06.sh
#!/bin/sh
# prog06.sh
echo n NAMA =
read NAMA
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]

PRAKTIKUM 6 PEMROGRAMAN SHELL

74

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 ?

5.

File prog99.sh tidak ada, karena itu exit status adalah FALSE, hasil masih
tergantung atas exit status instruksi ke dua, 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 $?

PRAKTIKUM 6 PEMROGRAMAN SHELL

Percobaan 11 : Operator Logical dan konstruksi elif


1.

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 ]
then
BIAYA=25
else
BIAYA=35
fi
echo Biaya = $BIAYA

2.

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 aritmetika


1.

Menggunakan utilitas expr


$
$
$
$
$
$
$
$

2.

expr
A=5
expr
expr
expr
expr
expr
expr

5 + 1
$A
$A
$A
$A
$A
17

+ 2
4
* 2
(Ada Pesan Error)
\* 2
/ 6 +10
% 5

Substitusi isi variable dengan hasil utilitas expr


$ A=5
$ B=`expr $A + 1`
$ echo $B

75

PRAKTIKUM 6 PEMROGRAMAN SHELL

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 $?

Percobaan 14 : Konstruksi case - esac


1. Buatlah file prog09.sh dengan editor vi
$ vi prog09.sh
#!/bin/sh
# Prog: prog09.sh
echo
echo
echo
echo
read
case
1)

1. Siapa yang aktif


2. Tanggal hari ini
3. Kalender bulan ini
n
Pilihan :
PILIH
$PILIH in
echo Yang aktif saat ini
who
;;

2)
echo Tanggal hari ini
date
;;
3)
echo Kalender bulan ini
cal
;;
*)
echo Salah pilih !!
;;
esac

76

PRAKTIKUM 6 PEMROGRAMAN SHELL

2. Jalankan program

prog09.sh, cobalah beberapa kali dengan inputan yang

berbeda
$ . prog09.sh

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

4. Jalankan program

prog10.sh, cobalah beberapa kali dengan inputan yang

berbeda
$ . prog10.sh

5. Modifikasi file prog10.sh yang merupakan bentuk lain dari case


$ vi prog10.sh
#!/bin/sh
# Prog: prog10.sh
echo n Jawab (Y/T) : \c
read JWB
case $JWB in
[yY] | [yY][aA] ) JWB=y ;;
[tT] | [tT]idak ) JWB=t ;;
*) JWB=? ;;
esac

6. Jalankan program
berbeda
$ . prog10.sh

prog10.sh, cobalah beberapa kali dengan inputan yang

77

PRAKTIKUM 6 PEMROGRAMAN SHELL

78

Percobaan 15 : Konstruksi for-do-done


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

2. Jalankan program prog11.sh


$ . prog11.sh

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

4. Jalankan program prog12.sh


$ . prog12.sh

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

6. Jalankan program prog12.sh


$ . prog12.sh

PRAKTIKUM 6 PEMROGRAMAN SHELL

Percobaan 16 : Konstruksi while-do-done


1. 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
Pilihan : \c
read PILIH
if [ $PILIH eq 4 ]
then
break
fi
clear
done
echo Program berlanjut di sini setelah break

2. Jalankan program prog13.sh


$ . prog13.sh

Percobaan 17 : Instruksi dummy


1. Modifikasi file prog13.sh
$ vi prog13.sh
#!/bin/sh
# Prog: prog13.sh

79

PRAKTIKUM 6 PEMROGRAMAN SHELL

PILIH=1
while :
do
echo
echo
echo
echo
echo
read
if [
then

1. Siapa yang aktif


2. Tanggal hari ini
3. Kalender bulan ini
4. Keluar

Pilihan : \c
PILIH
$PILIH eq 4 ]
break

fi
clear
done
echo Program berlanjut di sini setelah break

2. Jalankan program prog13.sh


$ . prog13.sh

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

4. Jalankan program prog14.sh beberapa kali dengan input yang berbeda


$ . prog14.sh

80

PRAKTIKUM 6 PEMROGRAMAN SHELL

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

2. Jalankan program fungsi.sh


$ . fungsi.sh

3. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh


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

4. Jalankan program fungsi.sh


$ . fungsi.sh

81

PRAKTIKUM 6 PEMROGRAMAN SHELL

82

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


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

6. Jalankan program fungsi.sh


$ . fungsi.sh

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 directory, beri pesan bahwa file
tida k 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
#!/bin/sh
# file: salin.sh
# Usage: salin.sh fasal ftujuan
if [ $# -ne 2]
then
echo Error, usage: salin.sh file-asal file-tujuan

PRAKTIKUM 6 PEMROGRAMAN SHELL

83

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 logic al &&
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
[ ] &&

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

PRAKTIKUM 6 PEMROGRAMAN SHELL

84

+ pkp=10000
+ [ 20000 le 10000 ]
++ expr 20000 10000
+ gaji=10000
+ pph=1500
+ pkp=25000
+ [ 10000 le 25000 ]
+ pkp=10000
++ expr 1500 + 10000 * 25 / 100
+ pph=4000
+ echo Pajak Penghasilan = 4000
Pajak Penghasilan = 4000

4. Buatlah program myprog.sh yang memproses parameter $1, nilai parameter harus
berupa string :
start
stop
status
restart
reload

Bila buka dari string tersebut, maka berikan pesan error. Sempurnakan program di
bawah ini untuk keperluan tersebut
#!/bin/sh
# See how we were called
case $1 in
start)
echo Ini adalah start
;;
stop)
echo Ini adalah stop
;;
*)
echo $Usage:$0 {start|stop|restart|reload|status}
;;
esac
return

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

PRAKTIKUM 6 PEMROGRAMAN SHELL

85

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

Test fungsi diatas dengan program berikut :


$ vi testp.sh
. confirm.sh
confirm
if [ $? eq 0 ]
then
echo Jawaban
elif [ $? =eq 1
then
echo Jawaban
else
echo Jawaban
fi

YES OK
]
NO
CONTINUE

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

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 7
Unix System Call dan
Manajemen Memory
POKOK BAHASAN:
UNIX System Call
Manajemen Memory

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Menggunakan system call fork, wait dan execl pada Linux.
Menggunakan perintah-perintah untuk manajemen memory.

DASAR TEORI:
1 UNIX SYSTEM CALL
Pada praktikum ini akan dilakukan percobaan menggunakan system call yang
berhubungan dengan proses pada system operasi UNIX yang biasa disebut UNIX
System Call, yaitu system call fork, execl dan wait.

Pada percobaan yang dilakukan

akan dibuat program yang didalamnya terdapat fungsi system call.


menjalankannya pada Linux gunakan g++.

97

Untuk

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

98

System Call Fork


System call fork adalah suatu system call yang membuat suatu proses baru
pada system operasi UNIX.

Pada percobaan ini menggunakan mesin Linux dan

beberapa program yang berisi system call fork().


Bila suatu program berisi sebuah fungsi fork(), eksekusi dari program
menghasilkan eksekusi dua proses.

Satu proses dibuat untuk memulai eksekusi

program. Bila system call fork() dieksekusi, proses lain dibuat. Proses asal disebut
proses parend dan proses kedua disebut proses child. Proses child merupakan duplikat
dari proses parent. Kedua proses melanjutkan eksekusi dari titik dimana system call
fork() menghasilkan eksekusi pada program utama. Karena UNIX adalah system

operasi time sharing, dua proses tersebut dapat mengeksekusi secara konkuren.
Nilai yang dihasilkan oleh fork() disimpan dalam variable bertipe pid_t ,
yang berupa nilai integer. Karena nilai dari variable ini tidak digunakan, maka hasil
fork() dapat diabaikan.

Untuk kill proses gunakan Ctrl+C.

Untuk dokumentasi fork() dapat dilihat dengan ketikkan man 2 fork.

Untuk melihat id dari proses, gunakan system call getpid()

Untuk melihat dokumentasi dari getpid(), ketikkan man 2 getpid

Perbedaan antara proses parent dan proses child adalah

Mempunyai pid yang berbeda

Pada proses parent , fork() menghasilkan pid dari proses child jika sebuah
proses child dibuat.

Pada proses child, fork() selalu menghasilkan 0

Membedakan copy dari semua data, termasuk variable dengan current value dan
stack

Membedakan program counter (PC) yang menunjukkan eksekusi berikutnya


meskipun awalnya keduanya mempunyai nilai yang sama teta pi setelah itu
berbeda.

Setelah fork, kedua proses tersebut tidak menggunakan variable bersama.

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

99

System call fork menghasilkan :

Pid proses child yang baru ke proses parent, hal ini sama dengan
memberitahukan proses parent nama dari child-nya

0 : menunjukkan proses child

-1 : 1 jika terjadi error, fork() gagal karena proses baru tidak dapat dibuat.

System Call Wait


System call wait menyebabkan proses menunggu sinyal (menunggu sampai
sembarang tipe sinyal diterima dari sembarang proses). Biasanya digunakan oleh proses
parent untuk menunggu sinyal dari system operasi ke parent bila child diterminasi.
System call wait menghasilkan pid dari proses yang mengirimi sinyal. Untuk melihat
dokumentasi wait gunakan perintah man 2 wait .
System Call Execl
Misalnya kita ingin proses baru mengerjakan sesuatu yang berbeda dari proses
parent, sebutlah menjalankan program yang berbeda. Sistem call execl meletakkan
program executable baru ke memory dan mengasosiasikannya dengan proses saat itu.
Dengan kata lain, mengubah segala sesuatunya sehingga program mulai mengeksekusi
dari file yang berbeda.

2 MANAJEMEN MEMORY
Linux mengimplementasikan sistem virtual memory demand-paged. Proses
mempunyai besar memory virtual yang besar (4 gigabyte).

Pada virtual memory

dilakukan transfer page antara disk dan memory fisik.


Jika tidak terdapat cukup memory fisik, kernel melakukan swapping beberapa
page lama ke disk. Disk drive adalah perangkat mekanik yang membaca dan menulis ke
disk yang lebih lambat dibandingkan mengakses memory fisik. Jika memory total page
lebih dari memory fisik yang tersedia, kernel lebih banyak melakukan swapping
dibandingkan eksekusi kode program, sehingga terjadi thrashing dan mengurangi
utilitas.

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

100

Jika memory fisik ekstra tidak digunakan, kernel meletakkan kode program
sebagai disk buffer cache. Disk buffer menyimpan data disk yang diakses di memory;
jika data yang sama dibutuhkan lagi dapat dengan cepat diambil dari cache.
Pertama kali sistem melakukan booting, ROM BIOS membentuk memory test
seperti terlih at berikut :
ROM BIOS (C) 1990
008192 KB OK WAIT......

Kemudian informasi penting ditampilkan selama proses booting pada linux seperti
terlihat berikut :
Memory: 7100k/8192k available (464k
kernel code, 384k reserved, 244k data) ...
Adding Swap: 19464k swap-space

Informasi diatas menampilkan jumlah RAM tersedia setelah kernel di-load ke memory
(dalam hal ini 7100K dari 8192K). Jika ingin melihat pesan saat booting kernel yang
terlalu cepat dibaca dapat dilihat kembali dengan perintah dmesg.
Setiap Linux dijalankan, perintah free digunakan untuk menampilkan total memory
yang tersedia. Atau menggunakan cat /proc/meminfo. Memory fisik dan ruang
swap ditampilkan disini. Contoh output pada sistem :
total used free shared buffers
Mem: 7096 5216 1880 2328
2800
Swap: 19464 0
19464

Informasi ditampilkan dalam kilobyte (1024 byte). Memory total adalah jumlah
tersedia setelah load kernel.
sebagai used .

Memory digunakan untuk proses atau disk bufferring

Memory yang sedang tidak digunakan ditampilkan pada kolom

free. Memory total sama dengan jumlah kolom used dan free.
Memory diindikasikan shared yaitu berapa banyak memory yang digunakan lebih
dari satu proses. Program seperti shell mempunyai lebih dari satu proses yang berjalan.
Kode executable read-only dan dapat disharing oleh semua proses yang berjalan pada
shell. Kolom buffers menampilkan berapa banyak memory digunakan untuk disk
buffering.

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

101

Perintah free juga menunjukkan dengan jelas bagaimana swap space dilakukan
dan berpa banyak swapping yang terjadi.
Percobaan berikut untuk mengetahui manajemen memory :
1. Pada saat bootup, dengan satu user log in, dengan perintah free sistem melaporkan
berikut :
total
used
Mem:
247184
145772
-/+ buffers/cache: 77336
Swap: 522072
0

free
101412
169848
522072

shared
0

buffers
10872

cached
57564

Terdapat free memory (4.4MB) dan sedikit disk buffer (1.1MB).


2. Situasi berubah setelah menjalankan perintah yang membaca data dari disk
(command ls lR / .)
total
used
Mem:
247184
230604
-/+ buffers/cache: 125596
Swap: 522072
308

free
16580
121588
522072

shared
0

buffers
45260

cached
59748

Disk buffer bertambah menjadi 2 MB. Hal ini berakibat pula pada kolom used
dan memory free juga berkurang.

Perintah top dan ps -u juga sangat berguna untuk menunjukkan bagaimana


penggunaan memory berubah secara dinamis dan bagaimana proses individu
menggunakan memory. Contoh tampilannya :
USER
PID %CPU %MEM VSZ
student 4581 0.0 0.3 4316
student 4699 0.0 0.2 2604

RSS TTY
STAT START
856 pts/0 S
10:25
656 pts/0 R
10.39

TIME COMMAND
0:00 bash
0:00 ps -u

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

102

TUGAS PENDAHULUAN :
Jawablah pertanyaan-pertanyaan berikut ini :
1. Apa yang dimaksud dengan system call ?
2. Apa yang dimaksud dengan sistem call fork(), execl() dan wait(). Jawablah
dengan menggunakan perintah man (contoh : man 2 fork, man 2 execl dan
man 2 wait) ?

3. Apa yang dimaksud sistem virtual memory, proses swapping dan buffer cache pada
manajemen memory ?
4. Apa yang dimaksud perintah free dan cat /proc/meminfo ?
5. Apa yang dimaksud perintah ps ?

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latiha n.

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

103

Percobaan 1 : Melihat proses parent dan proses child


1. Dengan menggunakan editor vi, buatlah file fork1.cpp dan ketikkan program
berikut :
#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
/* getpid() adalah system call yg dideklarasikan pada unistd.h.
Menghasilkan suatu nilai dengan type pid_t.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t mypid;
uid_t myuid;
for (int i = 0; i < 3; i++) {
mypid = getpid();
cout << "I am process " << mypid << endl;
cout << "My parent is process " << getppid() << endl;
cout << "The owner of this process has uid " << getuid()
<< endl;
/* sleep adalah system call atau fungsi library
yang menghentikan proses ini dalam detik
*/
sleep(1);
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas


$ g++ -o fork1 fork1.cpp
$ ./fork 1

3. Amati output yang dihasilkan

Percobaan 2 : Membuat dua proses terus menerus dengan sebuah system


call fork()
1. Dengan menggunakan editor vi, buatlah file fork2.cpp dan ketikkan program
berikut :

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

104

#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
/* getpid() dan fork() adalah system call yg dideklarasikan
pada unistd.h.
Menghasilkan suatu nilai dengan type pid_t.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t childpid;
int x = 5;
childpid = fork();
while (1) {
cout << "This is process " << getpid() << endl;
cout << "x is " << x << endl;
sleep(1);
x++;
}
return 0;
}

2. Gunakan g++ compiler untuk menjala nkan program diatas. Pada saat dijalankan,
program tidak akan pernah berhenti. Untuk menghentikan program tekan Ctrl+C.
$ g++ -o fork2 fork2.cpp
$ ./fork2

3. Amati output yang dihasilkan

Percobaan 3 : Membuat dua proses sebanyak lima kali


1. Dengan menggunakan editor vi, buatlah file fork3.cpp dan ketikkan program
berikut :
#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

105

/* getpid() dan fork() adalah system call yg dideklarasikan


pada unistd.h.
Menghasilkan suatu nilai dengan type pid_t.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t childpid;
childpid = fork();
for (int i = 0; i < 5; i++) {
cout << "This is process " << getpid() << endl;
sleep(2);
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas


$ g++ -o fork3 fork3.cpp
$ ./fork 3

3. Amati output yang dihasilkan

Percobaan 4 : Proses parent menunggu sinyal dari proses child dengan


system call wait
1. Dengan menggunakan editor vi, buatlah file fork4.cpp dan ketikkan program
berikut :

#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* pid_t fork() dideklarasikan pada unistd.h.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

106

int main(void) {
pid_t child_pid;
int status;
pid_t wait_result;
child_pid = fork();
if (child_pid == 0) {
/* kode ini hanya dieksekusi proses child */
cout << "I am a child and my pid = " << getpid() << endl;
cout << "My parent is " << getppid() << endl;
/* keluar if akan menghentikan hanya proses child */
}
else if (child_pid > 0) {
/* kode ini hanya mengeksekusi proses parent */
cout << "I am the parent and my pid = " << getpid()
<< endl;
cout << "My child has pid = " << child_pid << endl;
}
else {
cout << "The fork system call failed to create a new
process" << endl;
exit(1);
}
/* kode ini dieksekusi baik oleh proses parent dan child */
cout << "I am a happy, healthy process and my pid = "
<< getpid() << endl;
if (child_pid == 0) {
/* kode ini hanya dieksekusi oleh proses child */
cout << "I am a child and I am quitting work now!"
<< endl;
}
else {
/* kode ini hanya dieksekusi oleh proses parent */
cout << "I am a parent and I am going to wait for my
child" << endl;
do {
/* parent menunggu sinyal SIGCHLD mengirim tanda
bahwa proses child diterminasi */
wait_result = wait(&status);
} while (wait_result != child_pid);
cout << "I am a parent and I am quitting." << endl;
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas


$ g++ -o fork4 fork4.cpp
$ ./fork 4

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

107

3. Amati output yang dihasilkan

Percobaan 5 : System call fork/exec dan wait mengeksekusi program


bernama ls, menggunakan file executable /bin/ls dengan satu
parameter l yang ekuivalen dengan ls l
1. Dengan menggunakan editor vi, buatlah file fork5.cpp dan ketikkan program berikut :
#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* pid_t fork() dideklarasikan pada unistd.h.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/
int main(void) {
pid_t child_pid;
int status;
pid_t wait_result;
child_pid = fork();
if (child_pid == 0) {
/* kode ini hanya dieksekusi proses child */
cout << "I am a child and my pid = " << getpid() << endl;
execl("/bin/ls", "ls", "-l", "/home", NULL);
/* jika execl berhasil kode ini tidak pernah digunakan */
cout << "Could not execl file /bin/ls" << endl;
exit(1);
/* exit menghentikan hanya proses child */
}
else if (child_pid > 0) {
/* kode ini hanya mengeksekusi proses parent */
cout << "I am the parent and my pid = " << getpid()
<< endl;
cout << "My child has pid = " << child_pid << endl;
}
else {
cout << "The fork system call failed to create a new
process" << endl;
exit(1);
}

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

108

/* kode ini hanya dieksekusi oleh proses parent karena


child mengeksekusi dari /bin/ls atau keluar
*/
cout << "I am a happy, healthy process and my pid = "
<< getpid() << endl;
if (child_pid == 0) {
/* kode ini tidak pernah dieksekusi */
printf("This code will never be executed!\n");
}
else {
/* kode ini hanya dieksekusi oleh proses parent */
cout << "I am a parent and I am going to wait for my
child" << endl;
do {
/* parent menunggu sinyal SIGCHLD mengirim tanda
bila proses child diterminasi */
wait_result = wait(&status);
} while (wait_result != child_pid);
cout << "I am a parent and I am quitting." << endl;
}
return 0;
}

2. Gunakan g++ compiler untuk menjalankan program diatas


$ g++ -o fork5 fork5.cpp
$ ./fork 5

3. Amati output yang dihasilkan

Percobaan 6 : System call fork/exec dan wait mengeksekusi program lain


1. Dengan menggunakan editor vi, buatlah file fork6.cpp dan ketikkan program berikut :

#include <iostream>
using namespace std;
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
/* pid_t fork() dideklarasikan pada unistd.h.
pid_t adalah type khusus untuk process id yg ekuivalen dg int
*/

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

109

int main(void) {
pid_t chil d_pid;
int status;
pid_t wait_result;
child_pid = fork();
if (child_pid == 0) {
/* kode ini hanya dieksekusi proses child */
cout << "I am a child and my pid = " << getpid() << endl;
execl("fork3", "goose", NULL);
/* jika execl berhasil kode ini tidak pernah digunakan */
cout << "Could not execl file fork3" << endl;
exit(1);
/* exit menghentikan hanya proses child */
}
else if (child_pid > 0) {
/* kode ini hanya mengeksekusi proses parent */
cout << "I am the parent and my pid = " << getpid()
<< endl;
cout << "My child has pid = " << child_pid << endl;
}
else {
cout << "The fork system call failed to create a new
process" << endl;
exit(1);
}
/* kode ini hanya dieksekusi oleh proses parent karena
child mengeksekusi dari fork3 atau keluar
*/
cout << "I am a happy, healthy process and my pid = "
<< getpid() << endl;
if (child_pid == 0) {
/* kode ini tidak pernah dieksekusi */
printf("This code will never be executed!\n");
}
else {
/* kode ini hanya dieksekusi oleh proses parent */
cout << "I am a parent and I am going to wait for my
child" << endl;
do {
/* parent menunggu sinyal SIGCHLD mengirim tanda
bila proses child diterminasi */
wait_result = wait(&status);
} while (wait_result != child_pid);
cout << "I am a parent and I am quitting." << endl;
}
return 0;
}

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

110

2. Gunakan g++ compiler untuk menjalankan program diatas


$ g++ -o fork6 fork6.cpp
$ ./fork 6

3. Amati output yang dihasilkan

Percobaan 7 : Melihat Manajemen Memory


1. Perhatikan dengan perintah dmesg jumlah memory tersedia dan proses
swapping
$ dmesg | more

2. Dengan perintah free perhatikan jumlah memory free, used, share dan
buffer .
$ free

3. Dengan perintah dibawah ini apakah hasilnya sama dengan no 2 ?


$ cat /proc/meminfo

4. Gunakan perintah dibawah ini


$ ls lR /.

5. Perhatikan perubahan manajemen memory


$ free

6. Jalankan sebuah program, misalnya open Office.

Perhatikan perubahan

manajemen memory
$ free

7. Dengan perintah ps bagaimana penggunaan memory untuk se tiap proses diatas ?


$ ps -uax

PRAKTIKUM 7 UNIX SYSTEM CALL DAN MANAJEMEN MEMORY

111

LATIHAN:
1. Ubahlah program fork5.cpp pada percobaan 5 untuk mengeksekusi perintah yang
ekuivalen dengan
a. ls al /etc.
b. cat fork2
c. ./fork2
2. Informasi apa saja mengenai manajemen memory yang ditampilkan pada perintah
dmesg pada percobaan Anda ?

3. Bagaimana informasi yang ditampilkan dengan perintah free pada percobaan


Anda ?
4. Apa isi file /proc/meminfo pada percobaan yang Anda lakukan ?
5. Berapa besar memory yang digunakan setelah percobaan 7 dengan perintah ps
uax ?

6. Lakukan hal yang sama dengan percobaan 7 untuk melihat perubahan memory
setelah dilakukan beberapa proses pada shell. Tentukan perintah yang dilakukan
misalnya membuka browser dan perhatikan hal- hal berikut :
a. Informasi apa saja yang ditampilkan dengan perintah free ?
b. Informasi apa saja yang disimpan file /proc/meminfo ?
c. Berapa besar kapasitas memory total ?
d. Berapa kapasitas memory yang sudah terpakai ?
e. Berapa kapasitas memory yang belum terpakai ?
f. Berapa kapasitas memory yang digunakan sharing beberapa proses ?
g. Berapa kapasitas buffer cache ?

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 8
Sistem File
POKOK BAHASAN:
Sistem file

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Memahami atribut file dan ijin akses.
Memahami perintah untuk mengubah ijin akses suatu file.
Menggunakan perintah-perintah untuk mengubah ijin akses..

DASAR TEORI:
1 ATRIBUT FILE
File mempunyai beberapa atribut, antara lain :

Tipe file

: menentukan tipe dari file, yaitu :


Karakter

Arti

File biasa

Direktori

Symbolic link

Block special file

Character special file

Socket link

FIFO

112

PRAKTIKUM 8 SISTEM FILE

113

Ijin akses

: menentukan hak user terhadap file ini.

Jumlah link

: jumlah link untuk file ini.

Pemilik (Owner) : menentukan siapa pemilik file ini

Group

: menentukan group yang memiliki file ini

Jumlah karakter

: menentukan ukuran file dalam byte

Waktu pembuatan : menentukan kapan file terakhir dimodifikasi

Nama file

: menentukan nama file yang dimaksud

Contoh :
-rw-rw- r--

bin

Pemilik
Jml link

auth

Group

1639

Oct 31 20:19

Jml karakter

/etc/passwd

Waktu

Ijin akses
tipe

Nama file

2 IJIN AKSES
Setiap obyek pada Linux harus mempunyai pemilik, yaitu nama pemakai
Linux (account) yang terdaftar pada /etc/passwd .
Ijin akses dibagi menjadi 3 peran yaitu :

Pemilik (Owner)

Kelompok (Group)

Lainnya (Others)

Setiap peran dapat melakukan 3 bentuk operasi yaitu :

Pada File
o R (Read)

Ijin untukmembaca

o W (Write)

Ijin untuk mengubah / membuat

o X (Execute)

Ijin untuk menjalankan program

Pada Direktori
o R (Read)

Ijin untukmembaca daftar file dalam direktori

o W (Write)

Ijin untuk mengubah/membuat file di direktori

o X (Execute)

Ijin untuk masuk ke direktori (cd)

PRAKTIKUM 8 SISTEM FILE

114

Pemilik File/Direktori dapat mengubah ijin akses sebagai berikut :


-rwxrwxrwx

1 student test

1639

Oct 31 20:19 file

other
s
group
user

Format untuk mengubah ijin akses


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

dimana

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

Format lain dari chmod adalah menggunakan bilangan octal sebagai berikut
r

3 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

PRAKTIKUM 8 SISTEM FILE

115

TUGAS PENDAHULUAN:
Sebagai tugas pendahuluan, jawablah pertanyaan-pertanyaan berikut ini :
1. Apa saja atribut file ? Berikan contoh file dengan tipe file yang disebutkan pada
dasar teori.
2. Apa yang dimaksud ijin akses ? Bagaimana contoh penggunaan perintah chmod
untuk mengubah ijin akses.
3. Berilah contoh penggunaan perintah umask untuk mengubah ijin akses.

PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.

Percobaan 1 : Ijin Akses


1. Melihat identitas diri melalui etc/passwd atau etc/group , informasi apa yang
ditampilkan ?
$ id
$ grep <user> /etc/passwd
$ grep [Nomor group id] /etc/group

2. Memeriksa direktori home


$ ls -ld /home/<user>

PRAKTIKUM 8 SISTEM FILE

116

3. Mengubah Ijin akses (chmod). Perhatikan ijin akses setiap perubahan !


$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$

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

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

4. Mengganti kepemilikan digunakan perintah chown .

Masuk ke root untuk

mengganti kepemilikan tersebut.


$
$
$
$
$

su root
echo Hallo > f1
ls l f1
chown <user-baru> f1 contoh : chown student1 f1
ls l f1

5. Ubahlah ijin akses home directory <user> (student) pada root sehingga <userbaru> (student1) pada satu group dapat mengakses home direktory <user>.

Hal ini dimaksudkan agar file f1 yang sudah diubah kepemilikannya dapat
diakses <user-baru>. Perubahan ijin akses home directory <user> hanya
dapat dilakukan pada root.
$ chmod g+rwx /home/<user> contoh : chmod g+rwx /home/student
$ ls l /home
$ exit
6. Sekarang cobalah untuk subtitute user ke <user-baru> (student1). Cobalah

untuk mengakses file f1


$
$
$
$

su <user-baru>
ls l f1
cat f1
exit

PRAKTIKUM 8 SISTEM FILE

117

7. Mengubah group dengan perintah chgrp


$
$
$
$
$
$
$
$

$ grep root /etc/group


grep other /etc/group
su
chgrp root f1
ls l f1
chgrp <group-baru> f3
ls l f3
exit

Percobaan 2 : User Mask


1.

Menentukan ijin akses awal pada saat file atau direktori dibuat
$ touch myfile
$ ls -l myfile

2.

Melihat nilai umask


$ umask

3.

Modifikasi nilai umask


$
$
$
$
$
$
$
$
$

umask
umask
touch
mkdir
ls -l
umask
touch
mkdir
ls -l

027
file_baru
mydir
077
xfiles
xdir

LATIHAN:
1. Lakukan tiga cara berbeda untuk setting ijin akses ke file atau direktori menjadi r-r--r-- . Buatlah sebuah file dan lihat apakah yang anda lakukan benar.

2. Buatlah suatu kelompok. Copy-kan /bin/sh ke home directory. Ketik "chmod +s


sh". Cek ijin akses sh pada daftar direktori. Sekarang tanyakan ke teman satu

kelompok anda untuk mengubah ke home directory anda dan menjalankan pr ogram

PRAKTIKUM 8 SISTEM FILE

118

./sh dan menjalankan id command. Apa yang terjadi. Untuk keluar dari shell

tekan exit.
3. Hapus sh dari home directory (atau setidaknya kerjakan perinta h chmod s sh )
4. Modifikasi ijin akses ke home directory anda sehingga sangat privat. Cek apakah
teman anda tidak dapat mengakses directory anda. Kemudian kembalikan ijin akses
ke semula.
5. Ketikkan umask 000 dan kemudian buatlah file yang bernama world.txt yang
berisi beberapa kata "hello world". Lihat ijin akses pada file. Apa yang terjadi?
Sekarang ketikkan umask 022 dan buatlah file bernama world2.txt. Apakah
perintah tersebut lebih berguna ?
6. Buatlah file yang bernama "hello.txt" pada home directory menggunakan
perintah cat -u > hello.txt . Tanyakan ke teman Anda untuk masuk ke home
directory

Anda dan menjalankan tail -f hello.txt.

Sekarang ketikkan

beberapa baris dalam hello.txt. Apa yang terjadi pada layer teman Anda ?

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 9
Manajemen Perangkat Keras
POKOK BAHASAN:
Manajemen Perangkat Keras

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mengetahui bagaimana melihat perangkat keras yang terpasang pada sistem
komputer.
Menggunakan perintah mount dan umount pada sistem file
Menggunakan perintah-perintah untuk manajemen perangkat keras.

DASAR TEORI:
1 FILE PERANGKAT KERAS
/dev berisi file device (perangkat) yang merupakan aspek penting pada sistem
file Linux.

/dev/cdrom dan /dev/fd0 merupakan drive CD-ROM dan floppy pada

komputer Anda. Kita dapat melkaukan akses read dan write pada perangkat. Sebagai
contoh /dev/dsp merupakan perangkat speaker. Sembarang data yang ditulis ke file ini
akan dialihkan ke speaker. cat /boot/vmlinuz > /dev/dsp menyebabkan kita dapat
mendengarkan suara dari speaker. Untuk mencetak file dapat dikirim ke perangkat
/dev/lp0.

Mengirim data ke dan membaca data dari /dev/ttyS0 akan menyebabkan

komunikasi dengan perangkat modem.


Mayoritas device berupa block device atau character device.

Block device

adalah device yang menyimpan atau membawa data, character device adalah device

119

PRAKTIKUM 9 MANAJEMEN PERANGKAT KERAS

120

yang mengirim atau transfer data. Sebagai contoh, diskette drive, hard drive dan CDROM drive adalah block device, seda ngkaan serial port, mouse dan paralel printer
adalah character device.
Beberapa file perangkat yang umum digunakan yang perlu diingat adalah :
/dev/ttyS0 (First communication port, COM1) : First serial port (mouse, modem)
/dev/psaux (PS/2) : PS/2 mouse connection (mouse, keyboard)
/dev/lp0 (First printer port, LPT1) : First parallel prot (printer, scanner dsb)
/dev/dsp (First audio device) : sound card, digitized voice dan PCM
/dev/usb (USB Device) : node USB device
/dev/sda (C:/SCSI device) : First SCSI de vice (HDD, Memory stick, external mass
storage device seperti CD-ROM pada laptop)
/dev/scd (D:\, SCSI CD-ROM device) : First SCSI CD-ROM device
/dev/js0 (Standard gameport joystick) : First joystick device
Device didefinisikan sebagai tipe seperti block atau character dan nomor mayor
dan minor.

Nomor mayor digunakan untuk melakukan katagori device dan nomor

minor untuk mengidentifikasi tipe device khusus. Sebagai contoh, semua IDE device
dihubungkan dengan primary controller mempunyai nomor mayor 3. Perangkat master
dan slave, didefinisikan lebih jauh dengan nomor minor. Terdapat dua nomor sebelum
tanggal yang tercetak. Jika kita lakukan perintah ls l /hd* maka akan terlihat nomor
mayor untuk perangkat hda dan hdb adalah 3. Nomor minor berubah untuk setiap
partisi tertentu. Kita dapat selalu membuat perangkat menggunakan skrip MAKEDEV
dimana akan diletakkan pada directory /dev.
# MAKEDEV *

2 PERINTAH MOUNT dan UMOUNT


Sebelum menggunakan sistem file, harus di-mount terlebih dahulu. Kemudian
sistem operasi dapat mengerjakan penyimpanan file. Karena semua file UNIX berada
pada satu pohon direktori, operasi mount akan terlihat seperti isi dari sub direktory yang
ada pada sistem file yang sudah dilakukan mounting. Contoh perintah mount
$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr

PRAKTIKUM 9 MANAJEMEN PERANGKAT KERAS

121

Perintah mount mempunyai 2 argumen, argumen pertama adalah file device yang
berhubungan dengan disk atau partisi dari sistem file. Argumen kedua adalah direktory
yang dimounting. Perintah diatas berarti bahwa /dev/hda2 dilakukan mounting ke
/home begitu juga dengan /usr. Perbedaan antara file device /dev/hda2 dan direktory
mount /home adalah file device memberikan akses ke isi disk mentah, direktory mount
memberikan akses ke file dari disk. Direktory mount disebut mount point.
Linux mendukung beberapa tipe sistem file. Mount akan menebak tipe dari
sistem file.

Opsi t fstype akan memberikan spesifikasi tipe sistem flie. Sebagai

contoh, untuk mount floppy MS-DOS, dapat menggunakan perintah berikut :


$ mount t msdos /dev/fd0 /floppy

Sistem file root dilakukan mounting pada waktu booting. Jika sistem file root
tidak dapat dimounting, sistem tidak dapat melakukan booting. Nama sistem file
dimounting sebagai root. Sistem file root mula-mula bersifat read-only. Skrip startup
kemudian menjalankan fsck untuk melakukan verifikasi validitas dan jika tidak ada
permasalahan, dilakukan mounting lagi sehingga write diperbolehkan. Fsck tidak boleh
dijalankan pada saat sistem file dimounting, karena setiap perubahan ke sistem file saat
fsck berjalan mengakibatkan kesalahan. Bila sistem file root dimounting read-only saat
dilakukan pengecekan, fsck dapat memperbaiki permasalahan.
Jika sistem file tidak diperlukan untuk dimounting, dapat dilakukan unmounting
dengan perintah umount. Perintah umount mempunyai satu argumen berupa file device
atau mount point. Sebagai contoh untuk unmount direktory pada contoh diatas dapat
digunakan perintah
$ umount /dev/hda2
$ umount /usr

Kita dapat melihat perangkat floppy da n mount point yang diijinkan pada
/etc/fstab.
$ cat /etc/fstab
/dev/fd0
/mnt/floppy
/dev/hdc
/mnt/cdrom
/dev/hdc
/mnt/cdrom

auto
rw,user,noauto
iso9660 ro,user,noauto
iso9660 0 0 0

0 0
0 0

PRAKTIKUM 9 MANAJEMEN PERANGKAT KERAS

122

Kolom terdiri dari file device, directory mounting, tipe sistem file, opsi, frekuensi
backup, fsck pass number (0 berarti tanpa cek). Opsi noauto menghentikan mounting
yang dilakukan secara otomatis jika sistem dimulai (misalnya menghentikan mount a).
Opsi user mengijinkan sembarang user melakukan mounting sistem file dan karena
alasan keamanan, eksekusi program tidak diijinkan (normal atau setuid)
Jika ingin menyediakan akses ke beberapa tipe floppy, perlu diberikan beberapa
mount point.

Setting berbeda untuk setiap mount point.

Seba gai contoh untuk

memberikan akses ke floppy MS-DOS dan ext2, dilakukan perubahan baris pada
/etc/fstab :
/dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0
/ext2floppy ext user,noauto 0 0

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, jawablah pertanyaan-pertanyaan berikut ini :
1. Perangkat keras diakses oleh sistem operasi Linux melalui directory /dev. Apa saja
isi sub directory /dev dan sebutkan perangkatnya.
2. Apa yang dimaksud dengan block device dan character device ? Sebutkan contoh
perangkat yang merupakan block device dan character device.
3. Apa yang dimaksud dengan mounting ? Apa maksud perintah mount dan umount ?

PERCOBAAN:
1. Pada percobaan ini setiap mahasiswa harus membawa sebuah floppy disk dan atau
CDROM
2. Login sebagai user.
3. Bukalah Console Termina l dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
4. Selesaikan soal-soal latihan.

PRAKTIKUM 9 MANAJEMEN PERANGKAT KERAS

123

Percobaan 1 : Melihat perangkat pada sistem komputer


1. Melihat daftar perangkat.

Perhatikan apakah perangkat-perangkat yang

disebutkan pada dasar teori terdapat pada komputer anda. Perhatikan tipe
perangkat berupa block device atau character device. Apa yang membedakan
suatu perangkat merupakan block device atau character device?
$ ls l /dev

2. Perhatikan nomor mayor dan minor pada perangkat hard disk Anda.

Apa

maksudnya ?
$ ls l /dev/hd*

Percobaan 2 : Menangani Removable Media

1. Melihat daftar perangkat yang ada pada sistem file utama. Perhatikan titik
mount untuk perangkat floppy dan CDROM.

Perhatikan opsi yang ada

jelaskan maksudnya.
$ cat /etc/fstab

2. Cobalah melakukan mounting pada floppy disk


$ mount /dev/fd0 /mnt/floppy
$ cd /mnt/floppy
$ ls l

3. Agar semua perubahan data tertulis pada floppy dan mengambil floppy disk dari
sistem file gunakan perintah umount.
$ cd
$ umount /mnt/floppy

4. Lakukan hal yang sama untuk perangkat CDROM.

PRAKTIKUM 9 MANAJEMEN PERANGKAT KERAS

124

Percobaan 3 : Melakukan format MSDOS pada floppy


1. Linux dapat membaca dan menulis dengan format MSDOS maupun Linux.
Untuk menggunakan floppy MS, dapat digunakan perintah MS -DOS dengan
didahului huruf m. Misalnya, mdir a: akan melihat daftar file pada drive a,
mcopy melakukan copy file, mdel melakukan penghapusan file. Lakukan
format floppy dengan perintah
$ fdformat /dev/fd0H1440
$ mformat a:

2. Cobalah melakukan list directory, copy dan delete file


$ mdir a:
$ mcopy <namafile> a:
$ mdel a:/<namafile>

3. Lakukan pembuatan direktory pada floppy dengan perintah mmd, copy file
dengan mcopy, delete file dengan mdel, pindah directory dengan mcd dan
melihat isi directory dengan mdir.
4. Lakukan format floppy disk menggunakan perintah mkfs
$ mkfs t msdos /dev/fd0

5. Sebelum menggunakan floppy yang sudah terformat la kukan mounting sistem


file
$ mount /mnt/floppy

6. Untuk melihat apakah floppy sedang digunakan ketikkan


$ df

7. Lakukan unmount terhadap floppy disk.


$ umount /mnt/floppy

PRAKTIKUM 9 MANAJEMEN PERANGKAT KERAS

125

LATIHAN:
1. Lihatlah directory /proc/devices yang berisi perangkat-perangkat yang terdapat pada
sistem komputer. Perlihatkan tampilannya dan sebutkan block device dan character
device apa saja yang terdapat pada sistem komputer.
2. Lakukan operasi file dan directory dengan menggunakan perintah MS-DOS seperti
mdir, mmd, mcd, mcopy dan mdel, mmove. Tuliskan perintah yang anda lakukan.
3. Lakukan mounting terhadap floppy disk kemudian cobalah pindah ke directory
/mnt/floppy dan lakukan operasi file dan directory (perintah cp, rm, mkdir, rmdir,
cd, move).
4. Lihat manual dari fdisk dan fsck, kemudian lakukan percobaan menggunakan
perintah tersebut.
5. Lihat manual dari perintah mke2fs, kemudian lakukan percoba an dengan
menggunakan perintah tersebut.

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 10
Linux Booting Process
POKOK BAHASAN:
Linux Booting Process

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mengetahui inisialisasi booting proses pada sistem operasi Linux
Melakukan perubahan inisia lisasi booting proses

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.

126

PRAKTIKUM 10 LINUX BOOTING PROCESS

127

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

The Scheduler

The init process

kflushd

kupdate

kpiod

kswapd

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 :
Mengeksekusi program /sbin/init yang memulai semua proses-proses lain.
Program ini akan diberikan ke mesin oleh proses awal yang didefinisikan pada file
/etc/inittab

Komputer akan di-booting ke runlevel yang didefinisikan oleh baris initdefault


pada file /etc/inittab .
id:5:initdefault:

PRAKTIKUM 10 LINUX BOOTING PROCESS

128

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.

Satu dari proses-proses yang dimulai oleh init adalah /sbin/rc.


menjalankan

sekumpulan

skrip

pada

direktory

Skrip ini

/etc/rc.d/rc0.d/,

/etc/rc.d/rc1.d, /etc/rc.d/rc2.d dan seterusnya.

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 :
/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)

Single user mode

Multiuser, without NFS (The same as 3, if you do not have networking)

PRAKTIKUM 10 LINUX BOOTING PROCESS

129

Default text start. Full multiuser

unused

X11

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.
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 direktory
/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

PRAKTIKUM 10 LINUX BOOTING PROCESS

130

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 :
Sistem Service

Deskripsi

anacron

Run jobs which were scheduled for execution while computer was
turned off. Catch up with system duties.

arpwatch

Keeps track of IP address to MAC address pairings

atd

Run scheduled batch jobs.

autofs

automounts file systems on demand.

crond

Job sheduler for periodic tasks

gpm

Allows console terminal cut and paste. (Non X-window consoles)

https

Apache web server.

iptables

Firewall rules interface to kernel

keytable

Loads se lected keyboard map as set in /etc/sysconfig/keyboard

kudzu

New harware probe/detection during system boot.

lpd

Network printer services

microcode_ctl

Uploads microcode to kernel and ultimately to the Intle Pentium


processor. (Hardware specific.)

mysqld

Database services

named DNS

name services (Bind)

network

Active network services during system boot.

nfs

Network file system. Unix file sharing services.

nscd

Password and group lookup services for use with network


authentication (NIS, LDAP,...).

ntpd

Network Time Protocol time synchronization services.

random

Random number generation tool used for encryprion

rawdevices

Enables raw IO. Useful for Oracle and software which utilizes this

PRAKTIKUM 10 LINUX BOOTING PROCESS

131

for high speed disk access.


smb

SAMBA: MS/Windows PC file s haring services

syslog

System log file facility.

ypbind NIS

file sharing/authentication infrastructure service.

yppasswd

NIS file sharing/authentication infrastructure service.

xfs

X-Windows font server.

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
#
Source
function
library. This
creates
environment for the process to be started
. /etc/rc.d/init.d/functions
case "$1" in

the

operating

PRAKTIKUM 10 LINUX BOOTING PROCESS

132

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
;;
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

PRAKTIKUM 10 LINUX BOOTING PROCESS

133

Dua baris dalam skrip yang memungkinkan perintah chkconfig mengontrol


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

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> o ff

Contoh :
chkconfig --level 345 httpd on

- apache diberikan 3, 4 dan 5.


chkconfig --add httpd

- memulai web server daemon pada system boot.


chkconfig --del sen dmail

- 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

PRAKTIKUM 10 LINUX BOOTING PROCESS

134

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, jawablah pertanyaan-pertanyaan berikut ini :
1. Sebutkan inisialisasi proses apa saja yang dilakukan oleh sistem operasi Linux pada
saat booting
2. Apa yang dilakukan sistem operasi Linux pada saat booting ?
3. Apakah isi dari file /etc/inittab .

Sebutkan siste m proses yang dapat

dimasukkan pada variabel initdefault dan jelaskan maksudnya.


4. Apa yang dimaksud dengan run level pada linux ? Sebutkan perbedaan file pada
/etc/rc.d/rc#.d/ yang menggunakan awalan S dan awalan K.

5. Apa yang dimaksud dengan perintah service dan chkconfig ?

PERCOBAAN:
1. Login sebagai root.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.

PRAKTIKUM 10 LINUX BOOTING PROCESS

135

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

sampai

dengan

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

PRAKTIKUM 10 LINUX BOOTING PROCESS

136

# 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

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

PRAKTIKUM 10 LINUX BOOTING PROCESS

137

Percobaan 4 : Menggunakan Virtual Console


1. Untuk mendapatkan command prompt dapat dilakukan dengan membuka
terminal pada Jendela GUI. Default-nya, Linux menjalankan 6 virtual 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 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

PRAKTIKUM 10 LINUX BOOTING PROCESS

138

4. Perintah reboot menpunyai efek yang sama, tetapi juga mengirimkan pesan
warning ke semua user
# reboot

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 untuk append.

Maka akan didapa tkan prompt untuk

menambah opsi boot pada file grub.conf .

PRAKTIKUM 10 LINUX BOOTING PROCESS

139

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


3. Kadangkala anda kehilangan atau lupa pada password root, atau sistem
administrator sebelumnya tidak memberi password kepada Anda
4. Masuk ke console VGA dan tekan <CTRL> <ALT> <DEL>. Sistem akan
shutdown
5. Reboot sistem dan masuk ke mode single user
6. 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
7. Masuk ke default runlevel dengan menggunakan perintah exit.

PRAKTIKUM 10 LINUX BOOTING PROCESS

140

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 dan
5.
# chkconfig list | grep mail

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

PRAKTIKUM 10 LINUX BOOTING PROCESS

141

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

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

Praktikum 11
Manajemen User dan Group
POKOK BAHASAN:
Manajemen user
Manajemen group

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Menambah, memodifikasi dan menghapus user.
Menambah dan menghapus group

DASAR TEORI:
Pada Linux Red Hat, informasi tentang user account dan groups disimpan dalam
beberapa file teks dalam direktory /etc/. Jika sistem administrator membuat user
baru, file tersebut harus diedit atau aplikasi harus digunakan untuk perubahan teresebut.

1 FILE /etc/passwd
File /etc/passwd adalah file yang berisi daftar user yang dipisahkan dengan
baris. Setiap baris berisi informasi mengenai :

Username nama user yang diketik saat login sistem

Password berisi pasword yang di-enkripsi (atau x bila shadow password


digunakan)

142

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

User ID (UID)

143

bilangan numerik yang ekuivalen dengan username yang

menjadi acuan sistem.

Group ID (GID) bilangan numerik yang ekuivalen dengan nama group primer
yang menjadi acuan sistem.

GECOS nama histori, kolom GECOS[1] bersifat opsional dan digunakan untuk
menyimpan informasi tambahan (seperti nama lengkap user).

Home directory path absolut untuk home directory dari user.

Shell program yang otomatis dijalankan bila user login. Berupa command
intepreter (biasanya disebut shell)

Contoh isi file /etc/passwd :


root:x:0:0:root:/root:/bin/bash

Baris idatas menunjukkan root user mempunyai shadow password, UID dan GID nya 0.
User root mempunyai home directory /root/ dan menggunakan shell /bin/bash.

2 FILE /etc/group
File /etc/group adalah file yang berisi daftar group yang dipisahkan per baris.
Setiap baris terdiri dari 4 kolom, yang berisi informasi mengenai :

Group name nama group.

Group password Bila di-set, mengijinkan user yang bukan bagian dari group
bergabung ke dalam group dengan menggunakan printah newgrp dan mengetikkan
password. Jika lebih kecil dari x, maka shadow group password digunakan.

Group ID (GID) Bilangan numerik yang ekuivalen dengan group name.

Member list daftar user yang menjadi milik group.

Contoh baris pada file /etc/group:


general:x:502:juan,shelley,bob

Baris diatas menunjukkan, group general menggunakan password shadow, mempunyai


GID 502 dan anggota juan, shelley dan bob. ]

3 APLIKASI USER ACCOUNT DAN GROUP


Terdapat dua tipe dasar aplikasi yang digunakan untuk mengatur user account
dan group pada sistem Linux Red Hat :

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

Aplikasi Graphical User Manager

Perintah pada virtual console

144

Baik aplikasi User Manager dan utilitas perintah membentuk task yang sama, perintah
mempunyai kelebihan dalam skrip yang lebih mudah diotomatisasi.
Tabel berikut berisi beberapa perintah yang umum untuk membuat dan
mengatur user command dan group :
Aplikasi
/usr/sbin/useradd
/usr/sbin/userdel

Fungsi
Menambah user account. Digunakan untuk keanggotaan
primer dan sekunder
Menghapus user account
Meng-edit atribut account termasuk beberapa fungsi yang

/usr/sbin/usermod

berhubungan dengan masa berlaku password. Juga


digunakan untuk menentukan keanggotaan primer dan
sekunder
Melakukan setting password. Selain untuk mengubah

passwd

password user juga untuk mengontrol semua aspek tentang


masa berlaku password

/usr/sbin/chpasswd

Membaca file yang berisi username dan password dan update


setiap password user

chage

Mengubah masa berlaku password user. Perintah passwd


juga digunakan untuk tujuan ini

chfn

Mengubah informasi GECOS user

chsh

Mengubah shell default user

Tabel berikut berisi beberapa perintah untuk membuat dan mengatur group :
Aplikasi

Fungsi
Menambah group, tetapi tidak menentukan user pada group

/usr/sbin/groupadd

tersebut.

Perintah useradd dan usermod digunakan untuk

menentukan user pada group yang ada.


/usr/sbin/groupdel

Menghapus group

/usr/sbin/groupmod

Memodifikasi nama group adau GID, tetapi tidak mengubah

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

keanggotaan group.

145
Perintah useradd dan

usermod

menentukan user pada group yang ada.


Mengubah keanggotaan group dan melakukan setting
gpasswd

password untuk mengijinkan anggota selain group tersebut


yang mengetahui password group untuk bergabung. Juga
digunakan untuk menentukan administrator group

/usr/sbin/grpck

Memeriksa integritas file /etc/group dan /etc/gshadow

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, jawablah pertanyaan-pertanyaan berikut ini :
1. Apakah dari file /etc/passwd ? Jelaskan isi dari satu baris pada file ini.
2. Apakah dari file /etc/group ? Jelaskan isi dari satu baris pada file ini.
3. Sebutkan perintah yang digunakan untuk membuat user baru dan berikan
contohnya.
4. Sebutkan perintah yang digunakan untuk membuat group baru dan berikan
contohnya.
5. Sebutkan perintah yang digunakan untuk menghapus user dan group.

Berikan

contohnya.
6. Apa yang dimaksud dengan perintah usermod dan groupmod ?

PERCOBAAN:
1. Login sebagai root.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

146

Percobaan 1 : Melihat file /etc/passwd dan /etc/group


1. Lihatlah isi file /etc/passwd dan sebutkan kolom apa saja yang terdapat
pada setiap baris.
# cat /etc/passwd | more

2. Lihatlah isi file /etc/group dan sebutkan kolom apa saja yang terdapat pada
setiap baris.
# cat /etc/group | more

Percobaan 2 : Menambah group user


1. Buatlah 3 group user baru dengan perintah groupadd. Perhatikan informasi
group user baru pada file /etc/group .
#
#
#
#

groupadd friend
groupadd classmate
groupadd neighbour
cat /etc/group

Percobaan 3 : Menambah User


1. Buatlah user baru dengan perintah useradd.
/etc/passwd setelah pembuatan user baru.

Perhatikan perubahan isi file


Juga perhatikan apakah home

direktory setiap user juga dibuat pada saat pembuatan user baru
#
#
#
#
#
#

useradd g friend bob


grep bob /etc/passwd
useradd lili
passwd lili
grep lili /etc/passwd
ls l /home

2. Opsi g pada perintah useradd untuk menentukan group dari user yang dibuat.
# useradd g neighbour jane
# ls l /home

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

147

Percobaan 4 : Memodifikasi group dari user


1. Dengan perintah usermod, modifikasi group dari Setiap user merupakan milih
suatu group primer dan kemungkinan juga bagian dari group lain
(supplementary group).

Untuk memodifikasi group dari suatu user dapat

digunakan perintah usermod.


# usermod g classmate -G friend,neighbour bob
# usermod g friend -G classmate lili

Percobaan 5 : Melihat group dari user


1. Lihat group dari seorang user dengan perintah groups.
# groups bob
# groups lili
# groups jane

Percobaan 6 : Mengubah password user


1. Root dapat mengubah password dari user.
# passwd bob

2. Password yang diubah dengan perintah usermod merupakan file enkripsi,


sehingga tidak dapat digunakan sebagai passwrod pada saat login.
# useradd g friend diane
# usermod p diane diane

3. Cobalah login sebagai diane, apakah anda dapat login ?


4. Cobalah mengubah password user dengan login pada user yang bersangkutan.
Login sebagai user, dan ubahlah password user.
$ passwd

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

148

Percobaan 7 : Menghapus user


1. Hapus user dengan menggunakan perintah userdel. Opsi r untuk menghapus
seluruh isi home directory.
#
#
#
#

userdel
userdel
userdel
userdel

r
r
r
r

bob
lili
jane
diane

Percobaan 8 : Menghapus group


1. Hapus group dengan menggunakan perintah userdel.
# groupdel friend
# groupdel classmate
# groupdel neighbour

Percobaan 9 : Menghapus home directory


1. Hapus home direktory.
#
#
#
#

rmdir
rmdir
rmdir
rmdir

/home/bob
/home/lili
/home/jane
/home/diane

LATIHAN:
1. Buatlah tiga group parent, children dan soho. Perhatikan anggota dari setiap
grup berikut :
Parents Children Soho
Paul

Alice

Jane

Derek

Accounts
Sales

2. Buatlah user account untuk setiap anggota group sesuai tabel diatas.
3. Cek apakah home direktory yang terbentuk sesuai dengan tabel diatas.

PRAKTIKUM 11 MANAJEMEN USER DAN GROUP

4. Ubahlah password Paul dan Derek melalui root.


5. Cobalah mengubah password Alice dengan login sebagai Alice
6. Lihat keanggotaan dari setiap user.
7. Hapuslah user Account dan Sales.

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerja kan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

149

Praktikum 12
Manajemen Aplikasi
POKOK BAHASAN:
Redhat Package Manager
Tar, Gzip

TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
Mengerti konsep RPM, TAR dan GZIP.
Menggunakan RPM.
Menggunakan TAR danGZIP untuk instalasi software.

DASAR TEORI:
1 MANAJEMEN PAKET SOFTWARE
Setiap system Linux mempunyai manajemen paket software,

yang

paling popular adalah RPM (RedHat Package Management).


RPM mengatur instalasi paket software, maintenance/upgrade dan
menghapus paket software dari system, atau lebih dikenal dengan install dan
uninstall (install / remove).
RPM menyimpan informasi tentang paket yang diinstalasi dalam sebuah
database. Penghapusan paket berarti juga menghapus semua files dan direktori
yang terdaftar pada database tersebut, lengkap dengan nama PATH (lokasi diman
afile dan direktori tersebut berada).

150

PRAKTIKUM 12 MANAJEMEN APLIKASI

151

RPM menyimpan paket dalam bentuk file yang telah dikompres dan
ditulis sebagai file degan ekstensi *.rpm.

2 FUNGSI MANAJER PAKET SOFTWARE


Menghitung besar paket yang disesuaikan dengan kapasitas penyimpanan
disk yang masih tersedia, apakah cukup atau tidak.
Memeriksa apakah ada library atau file-file lain yang dibutuhkan untuk
software tersebut.
Menghindari konflik dengan software yang telah terpasang di system.
Proses instalasi tidak mengacaukan system (membuat system file menjadi
terganggu / korup).
Upgrade ke versi yang baru tanpa mengganggu konfigurasi yang sudah ada.
Verifikasi files dalam paket tersebut.

3 PAKET SOFTWARE
Terdiri dari 2 jenis :
1. Paket binary (biner)
Terdiri atas kumpulan program executable. Paket ini berekstensi *.rpm.
2. Paket source
Berisi teks dari program yang kemudian dapat dikompilasi menjadi executable.
Paket ini mempunyai ekstensi *.src.rpm.

4 NAMA PAKET
Penamaan paket diatur dengan konvensi sebagai berikut :

Nama

Versi

Release

Platform arsitektur (Intel, Alpha, Risc, )

PRAKTIKUM 12 MANAJEMEN APLIKASI

152

xyz-1.2-6.i386.rpm

nama
Platform :

versi

i386

Intel

alpha

DEC

sparc

SUN

mips

MIPS

ppc

PowerPC

m68k

Motorola 680x0

noarch

Bebas, tanpa platform

release

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

menampilkan informasi yang lebih rinci

list (daftar) semua file(s)

tampilkan hanya file dokumentasi saja

tampilkan hanya konfigurasi file

info tentang paket memiliki file apa saja

berfungsi pada paket yang belum diinstalasi

--scripts

menampilkan script untuk instalasi

6 TAR
Tar singkatan dari Tape ARchive. Tar mula-mula didesain untuk backup tape,
tetapi digunakan untuk membuat file tar pada semua sistem file. tar membuat satu "tar

PRAKTIKUM 12 MANAJEMEN APLIKASI

153

file" (yang disebut dengan "tarball") pada beberapa file dan direktori. File tar tidak
dikompresi, hanya sebuah file heap yang dibentuk bersama dalam satu kontainer.
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 :

tar

xvf

example.tar mengekstraksi isi dari example.tar dan

menunjukkan file yang akan diekstraksi

tar

cf

backup.tar

/home/ftp/pub

membuat file tar bernama

backup.tar dari isi direktori /home/ftp/pub

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 kompatibel dengan WinZip dan PkZip. Sehingga file zip pada UNIX dapat di
unzip pada Windows.
Contoh :

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

Untuk dekompresi file menggunakan gzip, eksekusi perintah berikut : gzip d


filename.tar.gz. Hasil dari operasi ini adalah file bernama filename.tar. Defaultnya,
gzip akan menghapus file filename.tar.gz

PRAKTIKUM 12 MANAJEMEN APLIKASI

154

TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, jawablah pertanyaan-pertanyaan berikut ini :
1. Apa yang dimaksud dengan RPM ? Sebutkan fungsi-fungsi RPM.
2. Sebutkan opsi-opsi yang digunakan pada perintah rpm dan jelaskan maksudnya.
3. Apa yang dimaksud dengan perintah tar ?
4. Apa yang dimaksud dengan perintah gzip ?

PERCOBAAN:
1. Login sebagai root.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.

PRAKTIKUM 12 MANAJEMEN APLIKASI

155

Percobaan 1 : RPM Query


1. Pada

percobaan

ini

http://www.samba.org.

paket

samba

dapat

didownload

pada

website

Tetapi pada percobaan ini sudah disediakan pada

halaman website ini.


2. Ekstrak file samba menggunakan perintah tar
# tar xvf samba

3. Informasi tentang paket software


# rpm qi samba | more

4. Instal dari CDROM, 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.5-1S.i386.rpm | more

5. Melihat files apa saja yang sudah diinstalasi, gunakan sub-opsi l.


# rpm ql samba | more

6. Melihat file konfigurasi


# rpm qc samba | more

7. Melihat dokumentasi file


# rpm qd samba | more

8. Melihat script file yang digunakan untuk instalasi. Perhatikan bahwa hasil
output tergantung atas versi Linux yang digunakan
# rpm q --scripts samba

PRAKTIKUM 12 MANAJEMEN APLIKASI

Percobaan 2 : Menghapus Paket


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

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

3. Setelah itu paket apache baru bisa dihapus


# rpm e mod_php3
# rpm q --scripts samba

Percobaan 3 : Menggunakan TAR


1. Logout dari root dan login sebagai <user >.
2. Pastikan berada pada home directory. Dan lihatlah isi home direktori Pindah
ke direktori Desktop. Setelah itu kembali ke home direktori
$
$
$
$

cd
ls al
cd Desktop
cd

3. Buatlah file tar pada direktori Desktop


$ tar cvf desktop.tar Desktop
$ ls -al

4. Rename direktori Desktop menjadi Desktop.old. Lihatlah file desktop.tar


pada direktori Desktop.old
$
$
$
$
$

mv
ls
cd
ls
cd

Desktop Desktop.old
l
Desktop.old
l
..

156

PRAKTIKUM 12 MANAJEMEN APLIKASI

157

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

6. Hapus direktori Desktop


$ rm rf Desktop

Percobaan 4 : Menggunakan GZIP


1. Buatlah file gzip dari desktop.tar, pastikan terbentuk file desktop.tar.gz
$ gzip desktop.tar
$ ls al

2. Dekompresi file gzip desktop.tar.gz dan cobalah untuk ekstraksi isi file tar
$
$
$
$
$

gzip d desktop.tar.gz
ls al
tar xvf desktop.tar
ls al
cd Desktop

3. Hapus file tar dan direktori Desktop.old


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

LATIHAN:
1. 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 tersebut buatlah menjadi file tar dan kompresi file tersebut
menggunakan gzip.

PRAKTIKUM 12 MANAJEMEN APLIKASI

LAPORAN RESMI:
1.

Analisa hasil percobaan yang Anda lakukan.

2.

Kerjakan latihan diatas dan analisa hasil tampilannya.

3.

Berikan kesimpulan dari praktikum ini.

158

Você também pode gostar