2018 - Modul Pemrograman Sistem
2018 - Modul Pemrograman Sistem
Praktikum 1
Perintah Dasar Sistem Operasi
Linux
POKOK BAHASAN:
TUJUAN BELAJAR:
DASAR TEORI:
Setiap pemakai LINUX harus mempunyai nama login (user account) yang sebelumnya
harus didaftarkan pada administrator system. Nama login umumnya dibatasi maksimum 8
karakter dan umumnya dalam huruf kecil. Prompt dari shell bash pada LINUX menggunakan
tanda “$”. Sebuah sesi LINUX terdiri dari :
1. Login
2. Bekerja dengan Shell / menjalankan aplikasi
3. Logout
Contoh :
$ ls tanpa argumen
$ ls –a option adalah –a = all, tanpa argumen
$ ls /bin tanpa option, argumen adalah /bin
$ ls /bin /etc /usr ada 3 argumen
$ ls –l /usr 1 option dan 1 argumen l = long list
$ ls –la /bin /etc 2 option –l dan –a dan 2 argumen
2. MANUAL
Linux menyediakan manual secara on-line. Beberapa kunci keyboard yang penting dalam
menggunakan manual adalah :
Bab Isi
1 User commands
2 System calls
3 Library calls
4 Devices
5 File format
6 Games
7 Miscellaneous
8 System commands
9 Kernel Internals
N Tcl/TK command
$ id
$ man ls
$ man man
$ man –k file
$ man 5 passwd
Percobaan 6 : Menghapus layer
$ clear
Percobaan 8 : Mencari perintah yang tepat sama dengan kunci yang dicari
$ whatis date
1. Menggunakan instruksi mv
$ mv f1 prog.txt
$ ls
2. Memindahkan file ke direktori lain. Bila argumen terakhir adalah nama direktori,
maka berkas-berkas akan dipindahkan ke direktori tersebut.
$ mkdir mydir
$ mv f1 f2 f3 mydir
LATIHAN:
1. Ubahlah informasi finger pada komputer Anda.
2. Lihatlah user-user yang sedang aktif pada komputer Anda.
3. Perintah apa yang digunakan untuk melihat kalender satu tahun penuh ?
4. Bagaimana anda dapat melihat manual dari perintah cal ?
5. Bagaimana melihat perintah manual ls dengan kata kunci sort ?
6. Bagaimana tampilan untuk perintah ls –a –l dan ls –al ?
7. Tampilkan semua file termasuk yang hidden file pada direktori /etc.
8. Tampilkan semua file secara lengkap pada direktori /etc.
9. Buatlah direktori prak1 pada direktori aktif, kemudian copy-kan file /etc/group
ke file tes1, tes2 dan tes3 pada direktori ini.
10. Tampilkan isi file tes1 per satu layar penuh.
11. Pindahkan file tes1 dan tes2 ke home direktori.
12. Hapus file tes1 dan tes dengan konfirmasi.
LAPORAN RESMI:
1. Buatlah summary Percobaan 1 sampai dengan percobaan 15 dalam bentuk table
seperti di bawah ini :
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.
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.
2 FILE DESCRIPTOR
Linux berkomunikasi dengan file melalui file descriptor yang direpresentasikan melalui
angka yang dimulai dari 0, 1, 2 dan seterusnya.
Tiga buah file descriptor standar yang lalu diciptakan oleh proses adalah :
0 = keyboard (standar input)
1 = layar (standar output)
2 = layar (standar error)
Linux tidak membedakan antara peralatan hardware dan file, Linux memanipulasi peralatan
hardware sama dengan file.
3 PEMBELOKAN (REDIRECTION)
Pembelokan dilakukan untuk standard input, output dan error, yaitu untuk mengalihkan file
descriptor dari 0, 1 dan 2. Simbol untuk pembelokan adalah :
4 PIPA (PIPELINE)
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 “|”.
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.
P1 | P2 | P3 ……. | Pn-1 | Pn
Maka P2 sampai dengan Pn-1 mutlak harus utilitas Linux yang berfungsi sebagai filter. P1
(awal) dan Pn (terakhir) boleh tidak filter. Utilitas yang bukan filter misalnya
Beberapa perintah Linux yang digunakan untuk proses penyaringan antara lain :
Perintah grep
Digunakan untuk menyaring masukannya da n menampilkan baris-baris yang hanya
mengandung pola yang ditentukan. Pola ini disebut regular expression.
Perintah wc
Digunakan untuk menghitung jumlah baris, kata dan karakter dari baris-baris
masukan yang diberikan kepadanya. Untuk mengetahui berapa baris gunakan option
–l, untuk mengetahui berapa kata, gunakan option –w dan untuk mengetahui berapa
karakter, gunakan option –c. Jika salah satu option tidak digunakan, maka
tampilannya adalah jumlah baris, jumlah kata dan jumlah karakter.
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:
1. Operator pipa (|) digunakan untuk membuat eksekusi proses dengan melewati data
langsung ke data lainnya.
$ who
$ who | sort
$ who | sort –r
$ who > tmp
$ sort tmp
$ rm tmp
$ ls –l /etc | more
$ ls –l /etc | sort | more
2. Pipa juga digunakan untuk mengkombinasikan utilitas sistem untuk membentuk
fungsi yang lebih kompleks
$ w –h | grep <user>
$ grep <user> /etc/passwd
$ ls /etc | wc
$ ls /etc | wc –l
$ cat > kelas1.txt
Badu
Zulkifli
Yulizir
Yudi
Ade
[Ctrl-d]
$ cat > kelas2.txt
Budi
Gama
Asep
Muchlis
[Ctrl-d]
$ cat kelas1.txt kelas2.txt | sort
$ cat kelas1.txt kelas2.txt > kelas.txt
$ cat kelas.txt | sort | uniq
LATIHAN:
1. Lihat daftar secara lengkap pada direktori aktif, belokkan tampilan standard output ke
file baru.
2. Lihat daftar secara lengkap pada direktori /etc/passwd, belokkan tampilan
standard output ke file baru tanpa menghapus file baru sebelumnya.
3. Urutkan file baru dengan cara membelokkan standard inp ut.
4. Urutkan file baru dengan cara membelokkan standard input dan standard output ke
file baru.urut.
5. Buatlah direktori latihan2 sebanyak 2 kali dan belokkan standard error ke file
rmdirerror.txt.
6. Urutkan kalimat berikut :
Jakarta
Bandung
Surabaya
Padang
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.
TUJUAN BELAJAR:
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).
2 DIREKTORY STANDAR
Setelah proses instalasi, Linux menciptakan system file yang baku, terdiri atas direktori
sebagai berikut :
Direktori /proc
Direktori /proc adalah direktori yang dibuat diatas RAM (Random Access Memory)
dengan system file yang diatur oleh kernel. /proc berisi nomor proses dari system dan
nama driver yang aktif di system. Semua direktori berukuran 0 (kosong) kecuali file kcore
dan self. Setiap nomor yang ada pada direktori tsb merepresentasikan PID (Process ID)
3 TIPE FILE
Pada Linux terdapat 6 buah tipe file yaitu
Ordinary file
Direktori
Block Device (Peralatan I/O)
Merupakan representasi dari peralatan hardware yang menggunakan transmisi data per block
(misalnya 1 KB block), seperti disk, floppy, tape.
Character Device (Peralatan I/O)
Merupakan representasi dari peralatan hardware yang menggunakan transmisi data karakter
per karakter, seperti terminal, modem, plotter dll
Named Pipe (FIFO)
4 PROPERTI FILE
File mempunyai beberapa atribut, antara lain :
Tipe file : menentukan tipe dari file, yaitu :
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 :
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
fileDuplikat disebut hard link dimana kedua file akan muncul identik (link count = 2)
Bila fileAsli atau ileDuplikat diubah perubahan akan terjadi pada file lainnya.
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.
file filename(s)
Isi file akan dilaporkan dengan deskripsi level tinggin seperti contoh berikut
Perintah ini dapat digunakan secara luas untuk file yang kadang membingungkan, misalnya
antara kode C++ dan Java.
Grep akan mencari file yang bernama sesuai pattern yang diberikan dan akan menampilkan
baris yang sesuai.
TUGAS PENDAHULUAN:
PERCOBAAN:
1. Login sebagai user.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini.
Perhatikan hasilnya.
3. Selesaikan soal-soal latihan
Percobaan 1 : Direktory
$ ls –l
$ file halo.txt
$ file bye.txt
1. Perintah find
$ find /home –name “*.txt” –print > myerror.txt
$ cat myerror.txt
$ find . –name “*.txt” –exec wc –l ‘{}’ ‘;’
2. Perintah which
$ which ls
3. Perintah locate
$ locate “*.txt”
LATIHAN:
1. Cobalah urutan perintah berikut :
$ cd
$ pwd
$ ls –al
$ cd .
$ pwd
$ cd ..
2. Lanjutkan penelusuran pohon pada sistem file menggunakan cd, ls, pwd dan cat.
Telusuri direktory /bin, /usr/bin, /sbin, /tmp dan /boot.
3. Telusuri direktory /dev. Identifikasi perangkat yang tersedia. Identifikasi tty
(termninal) Anda (ketik who am i); siapa pemilih tty Anda (gunakan ls –l).
4. Telusuri derectory /proc. Tampilkan isi file interrupts, devices, cpuinfo,
meminfo dan uptime menggunakan perintah cat. Dapatkah Anda melihat
mengapa directory /proc disebut pseudo -filesystem yang memungkinkan akses ke
struktur data kernel ?
5. Ubahlah direktory home ke user lain secara langsung menggunakan cd ~username.
6. Ubah kembali ke direktory home Anda.
7. Buat subdirektory work dan play.
8. Hapus subdirektory work.
9. Copy file /etc/passwd ke direktory home Anda.
10. Pindahkan ke subirectory play.
11. Ubahlah ke subdirektory play dan buat symbolic link dengan nama terminal
yang menunjuk ke perangkat tty. Apa yang terjadi jika melakukan hard link ke
perangkat tty ?
12. Buatlah file bernama hello.txt yang berisi kata ”hello word”. Dapatkah Anda
gunakan ”cp” menggunakan ”terminal” sebagai file asal untuk menghasilkan efek
yang sama ?
13. Copy hello.txt ke terminal. Apa yang terjadi ?
14. Masih direktory home, copy keseluruhan direktory play ke direktory bernama work
menggunakan symbolic link.
15. Hapus direktory work dan isinya dengan satu perintah
LAPORAN RESMI:
1. Analisa hasil percobaan yang Anda lakukan.
a. Analisa setiap hasil tampilannya.
b. Pada Percobaan 1 point 3 buatlah pohon dari struktur file dan direktori
c. Bila terdapat pesan error, jelaskan penyebabnya.
2. Kerjakan latihan diatas dan analisa hasil tampilannya.
3. Berikan kesimpulan dari praktikum ini.
TUJUAN BELAJAR:
DASAR TEORI:
Proses dapat mengirim dan menerima sinyal dari dan ke proses lainnya. Proses mengirim
sinyal melalui instruksi “kill” dengan format
Nomor sinyal : 1 s/d maksimum nomor sinyal yang didefinisikan system Standar nomor
sinyal yang terpenting adalah :
3 MENGIRIM SINYAL
Mengirim sinyal adalah satu alat komunikasi antar proses, yaitu memberitahukan proses yang
sedang berjalan bahwa ada sesuatu yang harus dikendalikan. Berdasarkan sinyal yang dikirim
ini maka proses dapat bereaksi dan administrator/programmer dapat menentukan reaksi
tersebut. Mengirim sinyal menggunakan instruksi
Sebelum mengirim sinyal PID proses yang akan dikirim harus diketahui terlebih dahulu.
Shell menyediakan fasilitas job control yang memungkinkan mengontrol beberapa job atau
proses yang sedang berjalan pada waktu yang sama. Misalnya bila melakukan pengeditan file
teks dan ingin melakukan interrupt pengeditan untuk mengerjakan hal lainnya. Bila selesai,
dapat kembali (switch) ke editor dan melakukan pengeditan file teks kembali.
Job bekerja pada foreground atau background. Pada foreground hanya diper untukkan
untuk satu job pada satu waktu. Job pada foreground akan mengontrol shell - menerima input
dari keyboard dan mengirim output ke layar. Job pada background tidak menerima input dari
terminal, biasanya berjalan tanpa memerlukan interaksi.
Perintah ps dapat digunakan untuk menunjukkan semua proses yang sedang berjalan pada
mesin (bukan hanya proses pada shell saat ini) dengan format :
ps –fae atau
ps -aux
Beberapa versi UNIX mempunyai utilitas sistem yang disebut top yang menyediakan cara
interaktif untuk memonitor aktifitas sistem. Statistik secara detail dengan proses yang
berjalan ditampilkan dan secara terus-menerus di-refresh. Proses ditampilkan secara terurut
dari utilitas CPU. Kunci yang berguna pada top adalah
Utilitas untuk melakukan pengontrolan proses dapat ditemukan pada system UNIX adalah
perintah killall. Perintah ini akan menghentikan proses sesuai PID atau job number
proses.
TUGAS PENDAHULUAN:
PERCOBAAN:
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke
terminal sebagai user.
2. Instruksi ps (process status) digunakan untuk melihat kondisi proses yang ada. PID
adalah Nomor Identitas Proses, TTY adalah nama terminal dimana proses tersebut
aktif, STAT berisi S (Sleepin g) dan R (Running), COMMAND merupakan instruksi
yang digunakan.
$ ps
3. Untuk melihat faktor/elemen lainnya, gunakan option –u (user). %CPU adalah
presentasi CPU time yang digunakan oleh proses tersebut, %MEM adalah presentasi
system memori yang digunakan proses, SIZE adalah jumlah memori yang digunakan,
RSS (Real System Storage) adalah jumlah memori yang digunakan, START adalah
kapan proses tersebut diaktifkan
$ ps –u
4. Mencari proses yang spesifik pemakai. Proses diatas hanya terbatas pada proses milik
pemakai, dimana pemakai teresbut melakukan login
$ ps –u <user>
5. Mencari proses lainnya gunakan opsi a (all) dan au (all user)
$ ps –a
$ ps –au
6. Logout dan tekan Alt+F7 untuk kembali ke mode grafis
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke
terminal sebagai user.
2. Ketik ps –eH dan tekan Enter. Opsi e memilih semua proses dan opsi H
menghasilkan tampilan proses secara hierarki. Proses child muncul dibawah proses
parent. Proses child ditandai dengan awalan beberapa spasi.
$ ps -eH
3. Ketik ps –e f dan tekan Enter. Tampilan serupa dengan langkah 2. Opsi –f akan
menampilkan status proses dengan karakter grafis (\ dan _)
$ ps –e f
4. Ketik pstree dan tekan Enter. Akan ditampilkan semua proses pada sistem dalam
bentuk hirarki parent/child. Proses parent di sebelah kiri proses child. Sebagai contoh
proses init sebagai parent (ancestor) dari semua proses pada sistem. Beberapa
child dari init mempunyai child. Proses login mempunya i proses bash sebagai
child. Proses bash mempunyai proses child startx. Proses startx mempunyai
child xinit dan seterusnya.
$ pstree
5. Ketik pstree | grep mingetty dan tekan Enter. 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
6. Untuk melihat semua PID untuk proses gunakan opsi –p.
$ pstree –p
7. Untuk menampilk an proses dan ancestor yang tercetak tebal gunakan opsi –h.
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke
terminal sebagai user.
2. Ketik ps –e | more dan tekan Enter. Opsi -e menampilkan semua proses dalam
bentuk 4 kolom : PID, TTY, TIME dan CMD.
$ ps –e | more
Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q
untuk kembali ke prompt perintah.
3. Ketik ps ax | more dan tekan Enter. Opsi a akan menampilkan semua proses yang
dihasilkan terminal (TTY). Opsi x menampilkan semua proses yang tidak dihasilkan
terminal. Secara logika opsi ini sama dengan opsi –e. Terdapa 5 kolom : PID, TTY,
STAT, TIME dan COMMAND.
$ ps ax | more
Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q
untuk kembali ke prompt perintah.
4. Ketik ps –e f | more dan tekan Enter. Opsi –e f akan menampilkan semuaproses
dalam format daftar penuh.
$ ps ef | more
Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q
untuk kembali ke prompt perintah.
5. Ketik ps –eo pid, cmd | more dan tekan Enter. Opsi –eo akan menampilkan semua
proses dalam format sesuai definisi user yaitu terdiri dari kolom PID dan CMD.
$ ps –eo pid,cmd | more
Jika halaman penuh terlihat prompt --More-- di bagian bawah screen, tekan q
untuk kembali ke prompt perintah.
6. Ketik ps –eo pid,ppid,%mem,cmd | more dan tekan Enter. Akan menampilkan
kolom PID, PPID dan %MEM. PPID adalah proses ID dari proses parent. %MEM
menampilkan persentasi memory system yang digunakan proses. Jika proses hanya
menggunakan sedikit memory system akan dita mpilkan 0.
$ ps –eo pid,ppid,%mem,cmd | more
7. Logout dan tekan Alt+F7 untuk kembali ke mode grafis
1. Pindah ke command line terminal (tty2) dengan menekan Ctrl+Alt+F2 dan login ke
terminal sebagai user.
2. Gunakan perintah yes yang mengirim output y yang tidak pernah berhenti
$ yes
Untuk menghentikannya gunakan Ctrl-C.
3. Belokkan standart output ke /dev/null
$ yes > /dev/null
Untuk menghentikannya gunakan Ctrl-C.
4. Salah satu cara agar perintah yes tetap dijalankan tetapi shell tetap digunakan untuk
hal yang lain dengan meletakkan proses pada background dengan menambahkan
karakter & pada akhir perintah.
$ yes > /dev/null &
1. Cara lain meletakkan job pada background dengan memulai job secara normal (pada
foreground), stop job dan memulai lagi pada background
$ yes > /dev/null
Hentikan sementara job (suspend ), bukan menghentikannya (terminate ), tetapi
menghentikan sementara job sampai di restart. Untuk menghentikan sementara job
gunakan Ctrl-Z.
2. Untuk restart job pada foreground , gunakan perintah fg.
$ fg
3. Shell akan menampilkan nama perintah yang diletakkan di foreground. Stop job lagi
dengan Ctrl-Z. Kemudian gunakan perintah bg untuk meletakkan job pada
background .
$ bg
Job tidak bisa dihentikan dengan Ctrl-Z karena job berada pada background. Untuk
menghentikannya, letakkan job pada foreground dengan fg dan kemudian hentikan
sementara dengan Ctrl-Z.
$ fg
4. Job pada background dapat digunakan untuk menampilkan teks pada terminal,
dimana dapat diabaikan jika mencoba mengerjakan job lain.
$ yes &
Untuk menghentikannya tidak dapat menggunakan Ctrl-C. Job harus dipindah ke
foreground, baru dihentikan dengan cara tekan fg dan tekan Enter, kemudian
dilanjutkan dengan Ctrl-Z untuk menghentikan sementara.
5. Apabila ingin menjalankan banyak job dalam satu waktu, letakkan job pada
foreground atau background dengan memberikan job ID
$ fg %2 atau $ %2
$ bg %2
6. tekan fg dan tekan Enter, kemudian dilanjutkan dengan Ctrl -Z untuk menghentikan
sementara.
7. Lihat job dengan perintah ps -fae dan tekan Enter. Kemudian hentikan proses
dengan perintah kill.
$ ps -fae
$ kill -9 <NomorPID>
8. Logout dan tekan Alt+F7 untuk kembali ke mode grafis
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
$ 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
j format job control
l daftar memanjang
s format sinyal
v format virtual memory
X format register i386
3. Lakukan urutan pekerjaan berikut :
a. Gunakan perintah find ke seluruh direktory pada sistem, belokkan output
sehingga daftar direktori dialihkan ke file directories.txt dan daftar
pesan error dialihkan ke file errors.txt
b. Gunakan perintah sleep 5. Apa yang terjadi dengan perintah ini ?
c. Jalankan perintah pada background menggunakan &
d. Jalankan sleep 15 pada foreground , hentikan sementara dengan Ctrl- Z
dan kemudian letakkan pada background dengan bg. Ketikkan jobs.
Ketikkan ps. Kembalikan job ke foreground dengan perintah fg.
e. Jalankan sleep 15 pada background menggunakan & dan kemudian
gunakan perintah kill untuk menghentikan proses diikuti job number.
f. Jalankan sleep 15 pada background menggunakan & dan kemudian
gunakan kill untuk menghentikan sementara proses. Gunakan bg untuk
melanjutkan menjalankan proses.
LAPORAN RESMI:
$ id
$ grep <user> /etc/passwd
$ grep [Nomor group id] /etc/group
$ ls -ld /home/<user>
$ touch f1 f2 f3
$ ls -l
$ chmod u+x f1
$ ls –l f1
$ chmod g=w f1
$ ls –l f1
$ chmod o-r f1
$ ls –l f1
$ chmod a=x f2
$ ls –l f2
$ chmod u+x,g-r,o=w f3
$ ls –l f3
$ chmod 751 f1
$ chmod 624 f2
$ chmod 430 f3
$ ls –l 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
<user- baru> (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.
$ su <user-baru>
$ ls –l f1
$ cat f1
$ exit
$ touch myfile
$ ls -l myfile
$ umask 027
$ umask
$ touch file_baru
$ mkdir mydir
$ ls -l
$ umask 077
$ touch xfiles
$ mkdir xdir
$ ls -l
LATIHAN:
1. Lakukan tiga cara berbeda untuk setting ijin akses ke file atau direktori menjadi r--
r--r--. Buatlah sebuah file dan lihat apakah yang anda lakukan benar.
2. Buatlah suatu kelompok. Copy-kan /bin/sh ke home directory. Ketik "chmod
+s sh". Cek ijin akses sh pada daftar direktori. Sekarang tanyakan ke teman
satu kelompok anda untuk mengubah ke home directory anda dan menjalankan
program ./sh dan menjalankan id command. Apa yang terjadi ?. Untuk keluar
dari shell tekan exit.
3. Hapus sh dari home directory (atau setidaknya kerjakan perintah chmod –s sh).
4. Modifikasi ijin akses ke home directory anda sehingga sangat privat. Cek apakah
teman anda tidak dapat mengakses directory anda. Kemudian kembalikan ijin akses
ke semula.
5. Ketikkan umask 000 dan kemudian buatlah file yang bernama world.txt
yang berisi beberapa kata "hello world". Lihat ijin akses pada file. Apa yang
terjadi? Sekarang ketikkan umask 022 dan buatlah file bernama world2.txt.
Apakah perintah tersebut lebih berguna ?
6. Buatlah file yang bernama "hello.txt" pada home directory menggunakan
perintah cat -u > hello.txt. Tanyakan ke teman Anda untuk masuk ke
home directory Anda dan menjalankan tail -f hello.txt. Sekarang
ketikkan beberapa baris dalam hello.txt. Apa yang terjadi pada layer teman
Anda ?
LAPORAN RESMI:
1. Pada percobaan ini setiap mahasiswa harus membawa sebuah floppy disk dan
atau CDROM
2. Login sebagai user.
3. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah
ini kemudian analisa hasil percobaan.
4. Selesaikan soal-soal latihan.
$ ls –l /dev
2. Perhatikan nomor mayor dan minor pada perangkat hard disk Anda. Apa
maksudnya ?
$ ls –l /dev/hd*
$ cat /etc/fstab
3. Agar semua perubahan data tertulis pada floppy dan mengambil floppy
disk sistem file gunakan perintah umount.
$ cd
$ umount /mnt/floppy
1. Linux dapat membaca dan menulis dengan format MSDOS maupun Linux.
Untuk menggunakan floppy MS, dapat digunakan perintah MS-DOS dengan
didahului huruf ”m”. Misalnya, ”mdir a:” akan melihat daftar file pada drive a,
”mcopy” melakukan copy file, ”mdel” melakukan penghapusan file. Lakukan
format floppy dengan perintah
$ fdformat /dev/fd0H1440
$ mformat a:
$ mdir a:
$ mcopy <namafile> a:
$ mdel a:/<namafile>
3. Lakukan pembuatan direktory pada floppy dengan perintah mmd, copy file
dengan mcopy, delete file dengan mdel, pindah directory dengan mcd dan
melihat isi directory dengan mdir.
$ mount /mnt/floppy
$ df
$ umount /mnt/floppy
LATIHAN:
2. Lihatlah isi file /etc/group dan sebutkan kolom apa saja yang terdapat
pada setiap baris.
# groupadd friend
# groupadd classmate
# groupadd neighbour
# cat /etc/group
2. Opsi –g pada perintah useradd untuk menentukan group dari user yang dibuat.
# groups bob
# groups lili
# groups jane
# passwd bob
4. Cobalah mengubah password user dengan login pada user yang bersangkutan.
Login sebagai user, dan ubahlah password user.
$ passwd
# groupdel friend
# groupdel classmate
# groupdel neighbour
# rmdir /home/bob
# rmdir /home/lili
# rmdir /home/jane
# rmdir /home/diane
LATIHAN:
1. Buatlah tiga group “parent”, “children” dan “soho”. Perhatikan anggota dari setiap
grup berikut :
2. Buatlah user account untuk setiap anggota group sesuai tabel diatas.
3. Cek apakah home direktory yang terbentuk sesuai dengan tabel diatas.
4. Ubahlah password Paul dan Derek melalui root.
5. Cobalah mengubah password Alice dengan login sebagai Alice
6. Lihat keanggotaan dari setiap user.
7. Hapuslah user Account dan Sales.
LAPORAN RESMI:
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 (1)
# Program shell (2)
#
var1=x (3)
var2=8
(1) 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
(2) Adalah komentar, sebagai dokumentasi, baris ini akan diabaikan oleh program
shell
(3) Penggunaan variable (assignment), tidak boleh ada spasi di antara nama variable
dan konstanta
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=Teknik Informatika
i=5
Pemberian nilai variable tidak boleh dipisahkan dengan spasi, karena shell akan menganggap
pemisahan tersebut sebagai parameter, contoh :
VPT = Teknik Informatika ##error
VPT = Teknik Informatika ##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= Teknik Informatika
echo $VPT
Gaji=850000
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= Teknik Informatika
VPT2=” Teknik Informatika Amikom”
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 / argument 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.
Setiap program setelah selesai dieksekusi akan memberikan informasi melalui variable
spesial $?. Indikasi yang diberikan adalah :
Bila program berakhir dengan sukses, $? = 0
Bila program berakhir dengan error, $? ≠ 0
Nilai dari status exit dapat dilihat melalui instruksi echo $?
6 KONSTRUKSI IF
if instruksi-awal
then
instruksi1
instruksi2
………………
fi
if akan mengeksekusi instruksi-awal, dan exit status dari instruksi tersebut akan menjadi
kondisi. Bila 0, maka instruksi selanjutnyua masuk ke dalam blok then. Bila tidak 0, maka
alur program diteruskan setelah kunci kata fi.
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.
NOT : symbol !
AND : symbol -a
Bila status exit tidak sama dengan 0, maka kondisi menjadi FALSE dan instruksi setelah else
akan dijalankan.
13 HITUNGAN ARITMETIKA
Tipe dari variable SHELL hanya satu yaitu STRING. Tidak ada tipe lain seperti Numerik,
Floating, Boolean ata u lainnya. Akibatnya variable ini tidak dapat membuat perhitungan
aritmetika, misalnya :
A=5
B=$A +1 ## error
UNIX menyediakan utilitas yang bernama expr yaitu suatu utilitas yang melakukan
aritmetika sederhana.
14 INSTRUKSI EXIT
Program dapat dihentikan (terminated/selesai) dengan instruksi exit. Sebagai nilai default
program tersebut akan memberikan status exit 0.
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).
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
19 FUNGSI
Fungsi adalah program yang dapat dipanggil oleh program lainnya dengan menggunakan
notasi NamaFungsi(). Fungsi memberikan exit status ($?) yang dinyatakan dengan return nr,
atau nilai 0 sebagai default. Membuat fungsi diawali dengan nama fungsi, parameter,
kemudian blok program yang dinyatakan dalam { … }.
Contoh :
F1( ) {
……..
……..
return 1
}
Variabel dapat didefinisikan dalam fungsi sebagai variable local atau global. Hal yang perlu
diperhatikan, nama variable yang digunakan dalam sebuah fungsi, 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.
Percobaan 4 : Parameter
Percobaan 6 : Konstruksi if
1. Instruksi dengan exit status 0
$ who
$ who | grep <user>
$ echo $?
2. If membandingkan exit status dengan 0, bila sama, maka blok program masuk ke
dalam blok then-fi
$ if [ $? = 0 ]
> then
> echo “Pemakai tersebut sedang aktif”
> fi
3. Nomor (1) dan (2) diatas dapat disederhanakan dengan
$ if who|grep <user> >/dev/null
> then
> echo okay
> fi
1. Bila file prog01.sh ada (TRUE), maka jalankan program berikutnya. File
prog01.sh ada, karena itu exit status adalah TRUE, hasil operasi AND masih
tergantung pada hasil eksekusi instruksi ke 2, dan dengan demikian instruksi echo
akan dijalankan.
$ [ -f prog01.sh ] && echo “Prog01.sh ada”
2. File prog99.sh tidak ada, karena itu exit status adalah FALSE dan instruksi echo
tidak dijalankan
$ [ -f prog99.sh ] && echo “Prog99.sh ada”
3. Bila prog01.sh ada maka jalankan shell script tersebut
$ [ -f prog01.sh ] && . prog01.sh
4. Bila prog01.sh ada maka jalankan program berikutnya. File prog01.sh memang
ada, karena itu exit status adalah TRUE, dan karena sudah TRUE maka instruksi
echo tidak lagi dijalankan
$ [ -f prog01.sh ] || echo “Dieksekusi tidak ?”
5. File prog99.sh tidak ada, karena itu exit status adalah FALSE, hasil masih
tergantung atas exit status instruksi ke dua, karena itu instruksi echo dijalankan
$ [ -f prog99.sh ] || echo “Dieksekusi tidak ?”
6. File prog99.sh tidak ada, maka tampilkan pesan error $ [ -f prog99.sh ] ||
echo “Sorry, prog99.sh tidak ada”
case $JWB in
y | Y | ya |Ya |YA ) JWB=y ;;
t | T | tidak | Tidak | TIDAK ) JWB=t ;;
esac
4. Jalankan program prog10.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog10.sh
5. Modifikasi file prog10.sh yang merupakan bentuk lain dari case
$ vi prog10.sh
#!/bin/sh
# Prog: prog10.sh
case $JWB in
[yY] | [yY][aA] ) JWB=y ;;
[tT] | [tT]idak ) JWB=t ;;
*) JWB=? ;;
esac
6. Jalankan program prog10.sh, cobalah beberapa kali dengan inputan yang berbeda
$ . prog10.sh
for F in *
do
echo $F
done
4. Jalankan program prog12.sh
$ . prog12.sh
5. Modifikasi file prog12.sh, program ini akan menampilkan long list dari file yang
mempunyai ekstensi lst
$ vi prog12.sh
#!/bin/sh
# Prog: prog12.sh
for F in *.lst
do
ls –l $F
done
6. Jalankan program prog12.sh
$ . prog12.sh
PILIH=1
while [ $PILIH –ne 4 ]
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
PILIH=1
while :
do
echo “1. Siapa yang aktif”
echo “2. Tanggal hari ini”
echo “3. Kalender bulan ini”
echo “4. Keluar”
echo “ Pilihan : \c”
read PILIH
if [ $PILIH –eq 4 ]
then
break
fi
clear
done
echo “Program berlanjut di sini setelah break”
2. Jalankan program prog13.sh
$ . prog13.sh
3. Buatlah file prog14.sh yang berisi instruksi dummy untuk konstruksi if
$ vi prog14.sh
#!/bin/sh
# Prog: prog14.sh
Percobaan 18 : Fungsi
1. Buatlah file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( ) {
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo $?
2. Jalankan program fungsi.sh
$ . fungsi.sh
3. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( )
{
Honor=10000
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor”
4. Jalankan program fungsi.sh
$ . fungsi.sh
5. Menggunakan variable pada fungsi dengan memodifikasi file fungsi.sh
$ vi fungsi.sh
#!/bin/sh
# Prog: fungsi.sh
F1( )
{
local Honor=10000
echo “Fungsi F1”
return 1
}
echo “Menggunakan Fungsi”
F1
F1
echo “Nilai balik adalah $?”
echo “Honor = $Honor”
1. Buatlah program salin.sh yang menyalin file (copy ) sebagai berikut : salin.sh
file-asal file-tujuan Dengan ketentuan :
a. Bila file asal tidak ada, berikan pesan, salin gagal.
b. Bila file tujuan ada dan file tersebut adalah directory, beri pesan bahwa file
tidak bisa disalin ke direktori
c. Bila file tujuan ada dan file biasa, beri pesan apakan file tersebut akan
dihapus, bila dijawab dengan “Y”, maka copy file tersebut
d. Bila file tujuan belum ada, lakukan copy
Untuk mengambil nama file, gunakan parameter $1 dan $2. Bila jumlah parameter
tidak sama ($#) dengan 2, maka beri pesan exit = -1
#!/bin/sh
# file: salin.sh
# Usage: salin.sh fasal ftujuan
if [ $# -ne 2]
then
echo “Error, usage: salin.sh file-asal file-tujuan”
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:
a. 10 juta pertama PPH 15%
b. 25 juta berikutnya (sisa) PPH 25%
c. Bila masih ada sisa, maka sisa tersebut PPH 35%
Contoh :
Gaji 8 juta
PPH = 15% * 8 juta
Gaji 12 juta
Debugging : untuk melakukan tracing (debug) gunakan opsi –x pada eksekusi shell.
$ sh –x pph.sh
+ echo –n ‘Berikan gaji dalam ribuan rupiah : ‘
Berikan gaji dalam ribuan rupiah : + read gaji
20000
+ pkp=10000
+ ‘[‘ 20000 –le 10000 ‘]’
++ expr 20000 – 10000
+ gaji=10000
+ pph=1500
+ pkp=25000
+ ‘[‘ 10000 –le 25000 ‘]’
+ pkp=10000
++ 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() {
Perhatikan baris pertama, adalah loading dari fungsi confirm yang terdapat di script
confirm.sh. Setelah eksekusi script tersebut, maka fungsi confirm dapat digunakan.
LAPORAN RESMI:
1. Analisa hasil percobaan yang Anda lakukan.
2. Kerjakan latihan diatas dan analisa hasil tampilannya.
3. Berikan kesimpulan dari praktikum ini.