Escolar Documentos
Profissional Documentos
Cultura Documentos
System Operasi
Kerjakan soal-soal berikut ini:
1.
Sebutkan dan jelaskan tentang langkah-langkah yang dilakukan oleh komputer saat
pertama kali dijalankan!
2.
3.
4.
5.
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.
dibatasi maksimum 8 karakter dan umumnya dalam huruf kecil. Prompt dari shell bash
pada LINUX menggunakan tanda $.
Sebuah sesi LINUX terdiri dari :
1. Login
2. Bekerja dengan Shell / menjalankan aplikasi
3. Logout
Tergantung atas shell yang digunakan, pada Linux bash maka pada proses login
akan mengeksekusi program /etc/profile (untuk semua pemakai) dan file .base_profile
di direktori awal (HOME) masing- masing.
Pada saat logout, maka program shell bash akan mengeksekusi script yang
bernama .bash_logout.
Pilihan adalah option yang dimulai dengan tanda (minus). Argumen dapat kosong,
satu atau beberapa argumen (parameter).
Contoh :
$ ls
tanpa argumen
$ ls a
$ ls /bin
ada 3 argumen
$ ls l /usr
$ ls la /bin /etc
2 MANUAL
Linux menyediakan manual secara on-line.
<Enter>
<Spasi>
/teks
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.
2.
3.
PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
3. Selesaikan soal-soal latihan
2. Melihat kalender
$ cal 9 2002
$ cal -y
man
man
man
man
ls
man
k file
5 passwd
Percobaan 8 : Mencari perintah yang tepat sama dengan kunci yang dicari
$ whatis date
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
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
rm
cp
cp
rm
rm
f1
mydir/f1 f1
mydir/f2 f2
f1
i f2
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 ?
LAPORAN RESMI:
1. Buatlah summary Percobaan 1 sampai dengan percobaan 15 dalam bentuk table
Deskripsi
id
date
cal
hostname
uname
w
who
whoami
chfn
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.
10
Keyboard (input)
Layar (output)
Files
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 :
Input
(keyboard)
Output
(monitor)
Proses
2
3 PEMBELOKAN (REDIRECTION)
Pembelokan dilakukan untuk standard
atau
<
1>
atau
>
2>
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.
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.
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.
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.
2.
3.
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.
13
4. Input nama direktori, output tidak ada (membuat direktori baru), bila terjadi error
maka tampilan error pada layar (standard error)
$ mkdir mydir
$ mkdir mydir
2. Pembelokan standar input, yaitu input dibelokkan dari keyboard menjadi dari file
$ cat 0< myfile.txt
$ cat myfile.txt
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
echo kata
echo kata
echo kata
cat surat
echo kata
cat 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!
%%%
Artinya
15
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
who
who | sort
who | sort r
who > tmp
sort tmp
rm tmp
ls l /etc | more
ls l /etc | sort | more
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.
17
Palembang
Lampung
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
19
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
/bin
/sbin
/usr/sbin
/usr/bin
/usr/lib
20
/boot
/proc
/var
/home
/mnt
/root
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 :
rc.d atau init.d, inisialisasi (startup) dan terminasi (shutdown) proses di Linux
dependent process)
21
FILES, file security dan konfigurasi meliputi : passwd, hosts, shadow, ftpaccess,
Direktori
/dev/fd0
CDROM
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.
system dan nama driver yang aktif di system. Semua direktori berukuran 0 (kosong)
kecuali file kcore
dan self .
22
3 TIPE FILE
Pada Linux terdapat 6 buah tipe file yaitu
Ordinary file
Direktori
Link File
4 PROPERTI FILE
File mempunyai beberapa atribut, antara lain :
Tipe file
Karakter
Arti
File biasa
Direktori
Symbolic link
Socket link
FIFO
Ijin akses
Jumlah link
23
Group
Jumlah karakter
Nama file
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
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.
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:
Perintah
ini
dapat
digunakan
secara
luas
untuk
file
yang
kadang
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
25
locate
Format : locate string
Akan me ncari file pada semua directori dengan lebih cepat dan ditampilkan dengan
path yang penuh.
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.
PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini.
Perhatikan hasilnya.
3. Selesaikan soal-soal latihan
26
Percobaan 1 : Direktory
1. Melihat direktori HOME
$ pwd
$ echo $HOME
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
pwd
ls -l
cd A
pwd
cd ..
pwd
cd /home/<user>/C
pwd
cd /<user/C
(Terdapat pesan error, mengapa ?)
pwd
mv
ls
mv
ls
mv
ls
contoh contoh2
-l
contoh1 contoh2 A/D
l A/D
contoh contoh1 C
l C
rm
ls
rm
rm
ls
contoh2
-l
i contoh
rf A C
-l
27
2. Perintah which
$ which ls
3. Perintah locate
$ locate *.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
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.
(termninal) Anda (ketik who am i); siapa pemilih tty Anda (gunakan ls l).
4. Telusuri derectory /proc.
devices,
LAPORAN RESMI:
1.
b.
Pada Percobaan 1 point 3 buatlah pohon dari struktur file dan direktori
c.
2.
3.
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
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
No Sinyal
Nama
Deskripsi
SIGHUP
SIGINT
SIGQUIT
SIGKILL
15
SIGTERM
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
33
Mengirim sinyal
menggunakan instruksi
kill [-nomor sinyal] PID
Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui
terlebih dahulu.
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.
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].
Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang
menyediakan cara interaktif untuk memonitor aktifitas sistem. Statistik secara detail
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
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.
PERCOBAAN:
1. Login sebagai user.
2. Download program C++ untuk menampilkan bilangan prima yang bernama
primes.
7.
8.
9.
Mencari proses yang spesifik pemakai. Proses diatas hanya terbatas pada
proses milik pemakai, dimana pemakai teresbut melakukan login
$ ps u <user>
10.
11.
35
36
Ketik ps eH dan tekan Enter. Opsi e memilih semua proses dan opsi H
12.
13.
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
xinit dan
seterusnya.
$ pstree
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
16.
$ pstree p
17.
Untuk menampilk an proses dan ancestor yang tercetak tebal gunakan opsi
h.
$ pstree h
37
38
Akan
menampilkan kolom PID, PPID dan %MEM. PPID adalah proses ID dari
proses parent.
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
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
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
Nama
Deskripsi
SIGHUP
SIGINT
SIGQUIT
SIGKILL
15
SIGTERM
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
33
Mengirim sinyal
menggunakan instruksi
kill [-nomor sinyal] PID
Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui
terlebih dahulu.
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.
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].
Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang
menyediakan cara interaktif untuk memonitor aktifitas sistem. Statistik secara detail
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
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
35
Job harus
atau
$ %2
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.
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
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 .
%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
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
daftar memanjang
format sinyal
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.
39
LAPORAN RESMI:
1.
2.
3.
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
45
46
/bin/csh
/bin/bash
2 PROFILE
Pada saat login, program akan menjalankan beberapa program yaitu :
1.
/etc/profile
Berisi shell script yang berlaku untuk seluruh pengguna Linux.
2.
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
47
PATH
PS1
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)
^N (Ctrl-N
!!
!! 3
!!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.
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
posisi kursor)
(shift i)
baris)
terlebih dahulu.
(shift a)
baris)
Dw
Dd
Yy
Mengkopi 1 baris
2yy
Mengkopi 2 baris
Cw
Cc
ctrl- b
ctrl- f
ctrl- d
:!
49
:wq
:q!
:se all
:se nu
/string
?string
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.
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
cd
ls l /etc
ls l
whoami
who
51
52
Contoh : !780
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^
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
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
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
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.
Format dalam
direktory. Jika current directory adalah home directory, maka tampil prompt
~:
$ 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
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
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
56
57
Anda dapat
menggunakan teks editor, tetapi karena hanya satu baris, gunakan perintah
echo untuk membuat file.
$ echo sort ~/list > ~/r13; mv ~/r13 ~/list > ~/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
58
waktu,
Anda
tidak
perlu
menambahkan
variable
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
45
46
/bin/csh
/bin/bash
2 PROFILE
Pada saat login, program akan menjalankan beberapa program yaitu :
1.
/etc/profile
Berisi shell script yang berlaku untuk seluruh pengguna Linux.
2.
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
47
PATH
PS1
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)
^N (Ctrl-N
!!
!! 3
!!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.
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.
Keterangan
posisi kursor)
(shift i)
baris)
(shift a)
baris)
terlebih dahulu.
Dw
Dd
Yy
Mengkopi 1 baris
2yy
Mengkopi 2 baris
Cw
Cc
ctrl- b
ctrl- f
ctrl- d
:!
:wq
:q!
49
:se all
:se nu
/string
?string
3. Menjalankan script
$
$
$
$
bash p1.sh
sh p1.sh
. p1.sh
./p1.sh
50
51
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
ditampilkan kata Hallo setiap 10 detik. Untuk keluar program, tekan Ctrl-C
(^C)
$ chmod +x ploop.sh
$ ./ploop.sh
52
3. Instruksi dirs
Percobaan 9 : Alias
53
1.
54
Alias adalah mekanisme untuk memberi nama alias pada satu atau sekelompok
instruksi. Untuk melihat alias yang sudah terdaftar pada system :
$ alias
2.
3.
4.
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
/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
55
$ exit
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
d. Ulaingi instruksi pada history buffer nomor tertentu, misalnya nomor 150
$ !150
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
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 ]
57
do
date >> hasil
sleep 10
done
LAPORAN RESMI:
1.
2.
3.
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
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
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
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 .
69
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.
string1 = string2
Identical
string1 != string2
Not identical
-n string
-z string
String is null
-f namafile
-d namafile
-r namafile
70
-w namafile
-x namafile
-s namafile
-w namafile
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.
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.
71
Operator
i1 eq i2
Bilangan sama
i1 ge i2
i1 gt i2
Lebih besar
i1 le i2
i1 lt i2
Lebih kecil
i1 ne i2
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
72
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.
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.
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
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().
..
..
return 1
}
Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global.
Hal yang perlu diperhatikan, nama variable yang digunakan dalam sebuah fungsi,
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.
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
3.
V1=poltek
V2=:
V3=elektronika
V4=$V1$V2$V3
echo $V4
76
77
Jika digabungkan
5. Variabel dapat berisi instruksi, yang kemudian bila dijadikan input untuk
shell, instruksi tersebut akan dieksekusi
$
$
$
$
6.
CMD=who
$CMD
CMD=ls l
$CMD
7.
. prog01.sh
prog01.sh
(Terdapat pesan error)
./prog01.sh
(Terdapat pesan error)
chmod +x prog01.sh
./prog01.sh
Nama Anda :
nama
Alamat :
alamat
Kota :
kota
echo
echo Hasil adalah : $nama, $alamat di $kota
3.
4.
78
echo
read
echo
read
echo
read
n Nama Anda :
nama
n Alamat :
alamat
n Kota :
kota
echo
echo Hasil adalah : $nama, $alamat di $kota
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.
79
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
80
81
5.
6.
Percobaan 6 : Konstruksi if
1.
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.
82
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.
string1 = string2
Identical
string1 != string2
Not identical
-n string
-z string
66
67
String is null
-f namafile
-d namafile
-r namafile
-w namafile
-x namafile
-s namafile
-w namafile
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.
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
68
instruksi2. Oleh karena itu instruksi2 tidak perlu dijalankan. Bila hasil
instruksi1 adalah FALSE, maka instruksi2 akan dijalankan.
Operator
i1 eq i2
Bilangan sama
i1 ge i2
i1 gt i2
Lebih besar
i1 le i2
i1 lt i2
Lebih kecil
i1 ne i2
False
False
True
AND : symbol -a
V1
V2
V1 a V2
False
False
False
False
True
False
True
False
False
69
True
True
True
V1
V2
V1 o V2
False
False
False
False
True
True
True
False
True
True
True
True
OR : symbol -o
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.
seperti Numerik, Floating, Boolean atau lainnya. Akibatnya variable ini tidak dapat
membuat perhitungan aritmetika, misalnya :
A=5
B=$A +1
## error
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
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
72
Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan
menggunakan notasi NamaFungsi().
..
..
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.
NAMA=amir
test $NAMA = amir
echo $?
test $NAMA = boris
echo $?
2.
73
3.
4.
5.
74
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.
4.
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.
2.
2.
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
75
2.
2)
echo Tanggal hari ini
date
;;
3)
echo Kalender bulan ini
cal
;;
*)
echo Salah pilih !!
;;
esac
76
2. Jalankan program
berbeda
$ . prog09.sh
4. Jalankan program
berbeda
$ . prog10.sh
6. Jalankan program
berbeda
$ . prog10.sh
77
78
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
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
79
PILIH=1
while :
do
echo
echo
echo
echo
echo
read
if [
then
Pilihan : \c
PILIH
$PILIH eq 4 ]
break
fi
clear
done
echo Program berlanjut di sini setelah break
80
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 $?
81
82
LATIHAN:
1. Buatlah program salin.sh yang menyalin file (copy ) sebagai berikut :
salin.sh file-asal file-tujuan
Dengan ketentuan :
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
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
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:
-
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
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
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
}
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.
2.
3.
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.
97
Untuk
98
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.
Pada proses parent , fork() menghasilkan pid dari proses child jika sebuah
proses child dibuat.
Membedakan copy dari semua data, termasuk variable dengan current value dan
stack
99
Pid proses child yang baru ke proses parent, hal ini sama dengan
memberitahukan proses parent nama dari child-nya
-1 : 1 jika terjadi error, fork() gagal karena proses baru tidak dapat dibuat.
2 MANAJEMEN MEMORY
Linux mengimplementasikan sistem virtual memory demand-paged. Proses
mempunyai besar memory virtual yang besar (4 gigabyte).
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 .
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.
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
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.
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
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.
103
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
105
#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
*/
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;
}
107
108
#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
*/
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;
}
110
2. Dengan perintah free perhatikan jumlah memory free, used, share dan
buffer .
$ free
Perhatikan perubahan
manajemen memory
$ free
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 ?
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.
2.
3.
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
Arti
File biasa
Direktori
Symbolic link
Socket link
FIFO
112
113
Ijin akses
Jumlah link
Group
Jumlah karakter
Nama file
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)
Pada File
o R (Read)
Ijin untukmembaca
o W (Write)
o X (Execute)
Pada Direktori
o R (Read)
o W (Write)
o X (Execute)
114
1 student test
1639
other
s
group
user
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
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.
116
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
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
su <user-baru>
ls l f1
cat f1
exit
117
Menentukan ijin akses awal pada saat file atau direktori dibuat
$ touch myfile
$ ls -l myfile
2.
3.
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.
kelompok anda untuk mengubah ke home directory anda dan menjalankan pr ogram
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
Sekarang ketikkan
beberapa baris dalam hello.txt. Apa yang terjadi pada layer teman Anda ?
LAPORAN RESMI:
1.
2.
3.
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.
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.
Block device
adalah device yang menyimpan atau membawa data, character device adalah device
119
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.
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 *
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.
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
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.
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.
123
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*
1. Melihat daftar perangkat yang ada pada sistem file utama. Perhatikan titik
mount untuk perangkat floppy dan CDROM.
jelaskan maksudnya.
$ cat /etc/fstab
3. Agar semua perubahan data tertulis pada floppy dan mengambil floppy disk dari
sistem file gunakan perintah umount.
$ cd
$ umount /mnt/floppy
124
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
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.
2.
3.
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
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
127
Description
The Scheduler
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
128
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.
sekumpulan
skrip
pada
direktory
Skrip ini
/etc/rc.d/rc0.d/,
Skrip pada direktory tersebut dieksekusi pada setiap boot state dari oeprasi sampai
menjadi operasi yang lengkap. S krip mulai dengan S yang merupakan skrip startup
sedangkan skrip yang dimulai dengan K menandakan skrip shutdown (kill). Angka
yang mengikuti huruf tersebut merupakan urutan eksekusi (terendah ke tertinggi)
Jika Anda menginstall semua daemons (proses bac kground), Linux akan
menjalankan semua , menyebabkan mesin lebih lambar. Kita bisa memulai (start) /
menghentikan (stop) daemon secara individual dengan mengubah direktory :
/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.
129
unused
X11
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
Proses individual
del
httpd akan
130
menghapus web server dari proses startup dan shutdown. Sebaliknnya chkconfig
add httpd akan menambahke ke proses startup/shutdown dengan membangkitkan
Deskripsi
anacron
Run jobs which were scheduled for execution while computer was
turned off. Catch up with system duties.
arpwatch
atd
autofs
crond
gpm
https
iptables
keytable
kudzu
lpd
microcode_ctl
mysqld
Database services
named DNS
network
nfs
nscd
ntpd
random
rawdevices
Enables raw IO. Useful for Oracle and software which utilizes this
131
syslog
ypbind NIS
yppasswd
xfs
gpm,
iptables,
keytable,
kudzu,
microcode_ctl (Intel32
6. SKRIP INIT
Skrip init berada pada direktory /etc/rc.d/script-name .
Gunakan
the
operating
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
133
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
Contoh :
chkconfig --level 345 httpd on
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 .
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.
135
runlevel
sampai
dengan
berada
pada
sub
direktory
136
3. Metode Otomatis : Anda dapat menjalankan X terminal GUI setiap kali reboot
menggunakan
perintah
init .
Anda
harus
mengedit
variabel
137
Opsi y untuk
3. Anda juga bisa menggunakan perintah init untuk reboot sistem dengan
memasukkan runlevel 6
# init 6
138
4. Perintah reboot menpunyai efek yang sama, tetapi juga mengirimkan pesan
warning ke semua user
# reboot
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
139
5. Tekan Enter. Sistem akan melanjutkan booting, tetapi akan menuju ke promp
root # tanpa menanyakan username dan password
140
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
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.
2.
3.
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 :
142
User ID (UID)
143
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).
Shell program yang otomatis dijalankan bila user login. Berupa command
intepreter (biasanya disebut shell)
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 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.
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
passwd
/usr/sbin/chpasswd
chage
chfn
chsh
Tabel berikut berisi beberapa perintah untuk membuat dan mengatur group :
Aplikasi
Fungsi
Menambah group, tetapi tidak menentukan user pada group
/usr/sbin/groupadd
tersebut.
Menghapus group
/usr/sbin/groupmod
keanggotaan group.
145
Perintah useradd dan
usermod
/usr/sbin/grpck
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.
146
2. Lihatlah isi file /etc/group dan sebutkan kolom apa saja yang terdapat pada
setiap baris.
# cat /etc/group | more
groupadd friend
groupadd classmate
groupadd neighbour
cat /etc/group
direktory setiap user juga dibuat pada saat pembuatan user baru
#
#
#
#
#
#
2. Opsi g pada perintah useradd untuk menentukan group dari user yang dibuat.
# useradd g neighbour jane
# ls l /home
147
148
userdel
userdel
userdel
userdel
r
r
r
r
bob
lili
jane
diane
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.
LAPORAN RESMI:
1.
2.
3.
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
150
151
RPM menyimpan paket dalam bentuk file yang telah dikompres dan
ditulis sebagai file degan ekstensi *.rpm.
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
152
xyz-1.2-6.i386.rpm
nama
Platform :
versi
i386
Intel
alpha
DEC
sparc
SUN
mips
MIPS
ppc
PowerPC
m68k
Motorola 680x0
noarch
release
platform
5 RPM QUERY
RPM dengan opsi q memberikan informasi tentang paket sebagai berikut :
# rpm q samba
samba 2.0.5-1S
#
--scripts
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
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
tar
cf
backup.tar
/home/ftp/pub
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 :
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.
155
percobaan
ini
http://www.samba.org.
paket
samba
dapat
didownload
pada
website
Untuk itu
8. Melihat script file yang digunakan untuk instalasi. Perhatikan bahwa hasil
output tergantung atas versi Linux yang digunakan
# rpm q --scripts samba
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
cd
ls al
cd Desktop
cd
mv
ls
cd
ls
cd
Desktop Desktop.old
l
Desktop.old
l
..
156
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
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
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.
LAPORAN RESMI:
1.
2.
3.
158