LEMBAR PENGESAHAN...................................................................iii
KATA PENGANTAR...........................................................................v
DAFTAR ISI...................................................................................vii
Kernel
Kernel merupakan program yang dimuat ke dalam memori ketika
komputer dinyalakan. Kernel bertanggung jawab untuk mengendalikan
hardware, menyediakan lingkungan agar program lainnya dapat
berjalan serta mengatur alokasi waktu dan memori untuk program-
program yang sedang dijalankan oleh komputer. Selain itu kernel juga
bertugas untuk mengendalikan bagaimana file dan direktori disimpan
dalam harddisk.
Utilitas Standar
Yang dimaksud dengan utilitas standar adalah program kecil yang
digunakan untuk melakukan fungsi-fungsi sederhana seperti
menampilkan isi file, menampilkan daftar file dalam suatu direktori,
mengcopy file serta fungsi-fungsi sederhana lainnya.
1.1.2 Linux
Linux dikembangkan oleh seorang mahasiswa Finlandia yang
bernama Linus Benedict Torvalds. Dulunya, Linux merupakan proyek hobi
yang diinspirasikan dari Minix, yaitu sistem UNIX kecil yang dikembangkan
oleh Andrew Tanenbaum. Linux versi 0.01 dikerjakan sekitar bulan Agustus
1991. Tanggal 5 Oktober 1991, Linus mengumumkan versi resmi Linux,
yaitu versi 0.02 yang pada saat itu hanya dapat menjalankan bash (GNU
Bourne Again Shell) dan GCC (GNU C Compiler). Istilah Linux sebenarnya
hanya mengacu pada nama sebuah kernel.
Kernel linux memiliki versinya sendiri-sendiri, sebagai contoh:
2.6.10
artinya :
2 Menunjukan major version, atau versi utama dari kernel.
6 menunjukan minor version, bila angka genap (2, 4, 6, dst..) maka
tergolong dalam versi produksi. Sebaliknya bila angka ganjil (1, 3, 5,
dst..) maka tergolong versi pengembangan, yang dipublikasikan
dengan tujuan pengembangan, hingga akhirnya menjadi versi yang
stabil.
10 menunjukan angka peluncuran (release). Semakin tinggi berarti
semakin stabil dan memperbaiki dari versi yang sebelumnya.
1.1.3 GNU
Jauh sebelum Linux dibuat tepatnya pada bulan September 1985,
Richard Stallman mendirikan Free Software Foundation(FSF). FSF adalah
sebuah yayasan yang dibuat untuk pengembangan software bebas. Proyek
mereka disebut juga GNU (GNU's Not Unix) dengan tujuan utama membuat
sistem operasi mirip UNIX namun bebas (maksud bebas di sini akan
diterangkan kemudian). Keberhasilan pertama proyek ini adalah membuat
GNU Emacs sebuah editor multifungsi. Sementara keberhasilan yang cukup
gemilang adalah GCC (GNU C Compiler), yaitu sebuah compiler untuk
bahasa C. Program-program tersebut dilisensikan di bawah bendera GNU
GPL (General Public License).
Sebagian besar software yang terdapat pada GNU/Linux, termasuk
kernel Linux itu sendiri, juga menganut lisensi GNU General Public License
(GPL). Lisensi ini disebut juga Free Software, yang sering disalahartikan
sebagai software gratis ( freeware), padahal maksud sebenarnya adalah
software bebas.
Secara garis besar GPL menjamin tiap orang yang menggunakan
program dengan lisensi GPL untuk memiliki empat macam kebebasan
sebagai berikut:
1. Bebas untuk menjalankan program komputer, untuk tujuan apa saja.
2. Bebas untuk mempelajari bagaimana cara kerja program, dan
memodifikasinya sesuai dengan kebutuhan. Akses terhadap kode
sumber(source code) merupakan hal yang dipersyaratkan.
3. Bebas untuk mendistribusikan salinan, baik gratis maupun dengan
menarik biaya.
4. Kebebasan untuk memperbaiki dan mengeluarkan perbaikan tersebut
kepada umum, sehingga mendatangkan keuntungan bagi masyarakat
secara keseluruhan. Akses terhadap kode sumber (source code)
merupakan hal yang dipersyaratkan.
1.1.4 X Window
X Window Sistem adalah lingkungan grafis yang komplek untuk
sistem operasi berbasis UNIX (Unix, Linux, BSD dll) yang digunakan sebagai
interface (antarmuka) antara user sebagai pengguna dengan sistem operasi.
Diluncurkan pertama kali pada tahun 1984. Sekarang, hampir seluruh
workstation UNIX di dunia menggunakan varian X Window Sistem untuk
sistem GUI (Graphical User Interface).
Ada beberapa prinsip dan istilah yang harus anda ketahui artinya
agar dalam menggunakan X tidak menemui batu sandungan. Istilah-istilah
ini akan muncul berkali-kali dalam manual dan file-file Help. Istilah-istilah
tersebut antara lain :
Screen adalah seluruh desktop, secara teknis dapat dijelaskan artinya
tampilan layar utama yang X lihat. Anda dapat mempunyai lebih dari 1
screen, bahkan sebenarnya anda dapat mempunyai lebih dari 1
komputer menjalankan 1 buah X server, tetapi pembahasan akan itu
merupakan pembahasan yang amat kompleks, tetapi anda harus
mengetahui akan kemungkinan ini.
Window manager (deskstop environment) adalah interface utama
antara X Window Sistem dengan user. Tanpa window manager, sistem
akan lebih sulit digunakan dan tidak akan terlalu produktif. Window
manager menyediakan fungsi-fungsi pengontrolan dan kustomisasi
border, menu, icon, virtual desktop, button, toll bar dari X Window.
2. Modifikasi Partisi
Pilih salah satu cara untuk mengatur alokasi ruang hardisk yang
dipersiapkan untuk instalasi linux. Terdapat berbagai cara yang dapat
dipilih, yaitu:
Mengubah secara otomatis.
Menggunakan utiliti Disk Druid
b u a t l a h p a
diinstal.
File sistem yang digunakan adalah ext3. Yaitu salah satu file
sistem yang dikenali oleh linux. Untuk lebih jelasnya akan dije-
laskan pada bab III.
4. Konfigurasi Jaringan
Lakukan konfigurasi hanya jika terdapat kartu jaringan dalam
komputer.
5. Pemilihan Zona Waktu
Pilih zona waktu yang akan digunakan.
6. Membuat Password root
Set password untuk root, untuk authentikasi user root. Password
yang baik terdiri dari gabungan huruf, angka dan karakter. Panjang
minimal adalah 6 karakter.
7. Pemilihan Paket
Pilih opsi customize now untuk memilih paket aplikasi yang akan di
instal.
[root@sisjarkom ~]#
Keterangannya:
Root : nama user yang sedang menggunakan shell
Localhost : nama host
~ : posisi direktori aktif
# : propt untuk menandakan super user, jika menggunakan
user biasa akan bertanda $
Manual
Dalam sistem linux, user dapat mendapatkan informasi mengenai suatu
perintah beserta cara-cara untuk menggunakan suatu perintah dengan
cara mengetikkan:
man [opsi] [nama_perintah]
[root@sisjarkom ~]# ls
anaconda-ks.cfg Desktop instal.log
instal.log.syslog
2. Membuat direktori
Untuk membuat direktori, dapat digunakan perintah mkdir.
[root@sisjarkom ~]# ls
praktikum/
[root@sisjarkom ~]# mkdir latihan
[root@sisjarkom ~]# ls
latihan/ praktikum/
3. Membuat file
Dapat digunakan menggunakan perintah touch, atau dengan
menggunakan editor seperti vi. Penjelasan mengenai vi akan
dijelaskan pada bab-bab berikutnya.
[root@sisjarkom ~]# ls
latihan/ praktikum/
[root@sisjarkom ~]# ls
diqa.txt latihan/ praktikum/
4. Membaca file
Dapat digunakan teks editor seperti vi. Tetapi dapat juga digunakan
perintah cat.
[root@sisjarkom ~]# cat diqa.txt
[root@sisjarkom ~]# ls
diqa.txt latihan/ praktikum/
[root@sisjarkom ~]# ls
diqa.txt citra.txt latihan/ praktikum/
Apabila argumen terakhir adalah nama direktori, maka file tadi akan
di-copy ke direktori tersebut.
cp [direktori_file] [direktori_tujuan]
[root@sisjarkom ~]# ls
diqa.txt citra.txt latihan/ praktikum/
[root@sisjarkom ~]# ls
diqa.txt yopi.txt latihan/ praktikum/
[root@sisjarkom ~]# ls
diqa.txt latihan/ praktikum/
7. Menghapus file
Untuk menghapus file dapat digunakan perintah rm. Setelah perintah
ini, sistem akan menanyakan konfirmasi apakah penghapusan benar-
benar akan dilakukan. Jika tidak ingin mengaktifkan fasilitas ini,
dapat digunakan opsi –f.
[root@sisjarkom ~]# ls
diqa.txt latihan/ praktikum/
[root@sisjarkom ~]# ls
latihan/ praktikum/
8. Menghapus direktori
Untuk menghapus direktori yang kosong dapat digunakan perintah
rmdir.
[root@sisjarkom ~]# ls
latihan/ praktikum/
[root@sisjarkom ~]# ls
praktikum/
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
User ID
Nama login user Keterangan user Shell user
Sedangkan isi dari file /etc/group adalah sebagai berikut:
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root
mail:x:12:mail
ntp:x:38:
gdm:x:42:
dovecot:x:97:
mysql:x:27:
screen:x:84:
postgres:x:26:
cherries:x:500:
Karakter yang diacak di atas adalah password dari user cherries yang
telah dienkripsi, namun masih bersifat read-able.
useradd
Letak file : /usr/sbin/useradd
Fungsi utilitas ini adalah untuk menambahkan user ke sistem. Secara
otomatis menambah user sistem berdasarkan informasi yang ada di
dalam file konfigurasi /etc/adduser.conf. perintah adduser secara
otomastis akan menentukan UID (User Identification) dan GID (Group
Identification). Karena penambahan user ini akan memodifikasi file
konfigurasi penting yaitu: /etc/passwd, maka perintah ini hanya bisa
dijalankan oleh user tertinggi yaitu: root.
Sintaksnya:
adduser [--sistem [--home directory] [--group]]
[--quiet]
[--force-badname] [--help] [--version] [--debug]
username
Atau
adduser [--quiet] [--force-badname] [--help]
[--version]
[--debug] username group
Atau
adduser [--group] [--quiet] [--force-badname]
[--help] [--version] [--debug] group
Atau
useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k
template]] [-f inactive] [-e expire ] [-p passwd]
name
Keterangan:
u : nomor UID (User ID)
g : nomor GID (Group ID)
G : group tambahan
d : direktori home untuk user, kalo tidak diberikan opsi ini maka
secara user akan diberikan direktori home
(/home/namauser). Tapi ini juga harus didasarkan pada file
konfigurasi /etc/useradd.conf
s : default shell (biasanya /bin/bash)
c : info atau deskripsi nama login
m : direktori home akan diciptakan bila belum ada
k : bersama -m memberi isi direktori home
f : jumlah hari sebelum account tersebut kedaluarsa (password
lewat masa berlakunya)
e : tanggal nama login beakhir atau kedaluarsa (expired)
p : password yang telah di enkripsi
D : menetapkan konfigurasi default
Name : nama login
--sistem :menciptakan user sistem. User ini secara otomatis akan
diberikan shell /bin/false dan diberikan password yang
ditandai dengan tanda bintang.
--force-badname : secara default, nama user dan group harus dimulai
dengan huruf kecil lalu kemudian diikuti dengan
huruf kecil lagi atau angka. Dengan opsi ini, maka
penambahan nama user yang keliru akan tetap
diterima.
--help : menampilkan informasi singkat tentang penggunaan
adduser
--version : menampilkan informasi versi dan copyright
--debug : menampilkan inforamsi proses debugging.
userdel
Letak file : /usr/sbin/userdel
Fungsi utilitas ini untuk menghapus user dari sistem. Sintaks :
Keterangan:
r : bila parameter ini disertakan, maka direktori home user
akan turut di hapus.
Username : nama user yang akan dihapus
passwd
Letak file : /usr/sbin/passwd
Fungsi utilitas ini untuk merubah password user. Sintaks:
passwd [username]
Keterangan:
name : nama login user yang ada di dalam sistem. Jika username yang
diberikan tidak terdaftar di dalam sistem, maka Linux akan
menampilkan pesan error seperti dibawah ini:
man [nama_utilitas]
Contoh :
[root@sisjarkom ~]# useradd cnlab
Contoh:
[root@sisjarkom ~]# passwd cnlab
cari baris
## Allow root to run any commands anywhere
tambahkan
praktikan ALL=(ALL) ALL
Contoh:
[root@sisjarkom ~]# userdel praktikan
3.1.2 Partisi
Linux sebenarnya dapat berjalan dengan satu partisi saja, yaitu “/”
(baca : root), selain tentunya partisi swap yang merupakan salah satu
keunggulan Linux dibandingkan sistem operasi yang lain. Tetapi dapat juga
dibuat partisi lain untuk memudahkan perbaikan dan perawatan sistem
(maintenance).
Penamaan partisi di dalam Windows berbeda dengan Linux. Pada
Windows partisi diberi nama dengan huruf, yaitu A:\ dan B:\ untuk floppy
drive, diikuti C:\ untuk partisi pertama pada harddisk, D:\ untuk partisi
kedua, dan seterusnya, termasuk device-device penyimpanan lain selain
harddisk. Sedangkan pada Linux aturan penamaan partisi harddisk adalah
sebagai berikut:
/dev/XdYZ
Keterangan:
1. Semua device termasuk harddisk dibaca dari direktori /dev/.
2. X adalah tipe harddisk.
Huruf h digunakan untuk tipe harddisk IDE (biasa digunakan oleh
PC) dan huruf s digunakan untuk tipe harddisk SCSI (biasa digu-
nakan oleh laptop).
3. Y adalah penomoran harddisk secara fisik.
Huruf a digunakan untuk harddisk pertama, b digunakan untuk hard-
disk kedua dan seterusnya.
4. Z adalah angka partisi.
Partisi primary maksimal 4, misalnya pada harddisk IDE pertama dim-
ulai dari /dev/hda1 sampai /dev/hda4.
Partisi logical dimulai dari angka 5, misalnya pada harddisk IDE per-
tama dimulai dari /dev/hda5, /dev/hda6, dan seterusnya.
a. Tipe file.
Menentukan tipe dari file, keterangannya sebagai berikut:
Karakter Arti
- File biasa
d Direktori
l Symbolic link
b Block special file
c Character special file
s Socket link
p FIFO
b. Hak akses
Merupakan perizinan bagi user untuk dapat menggunakan suatu file
maupun direktori. Terdiri dari tiga jenis operasi yaitu r untuk read, w
untuk write, dan x untuk execute.
Pada file berarti :
r (read) : izin untuk membaca file tersebut
w (write) : izin untuk mengubah file
x (execute) : izin untuk menjalankan file/program
Hak akses juga terbagi untuk tiga jenis user, yaitu user (pemilik file),
group (grup pemilik file), dan other (user selain pemilik dan grup
pemilik file). Untuk lebih jelasnya, mari kita lihat gambar di bawah
ini.
-rw-r--r--
user group other
tipe file
Pada contoh di atas, file tersebut bertipe file biasa dengan hak akses
user pemilik dapat membaca dan menulisi file tersebut, sedangkan
group pemilik dan other hanya dapat membaca, tanpa dapat menulisi
atau memodifikasi file tersebut.
Untuk mengubah hak akses suatu file, dapat digunakan perintah
chmod (change mode). Ada dua cara yang dapat digunakan untuk
mengubah hak akses suatu file atau direktori, yaitu:
yang berarti menetapkan hak read, write, dan execute pada user,
group, dan others.
Setelah melakukan salah satu dari cara di atas, bila kita
cek lagi hak aksesnya akan menjadi:
[root@sisjarkom ~]# ls –l
-rwxrwxrwx 1 root root 4096 Jul 08 00:30 coba.txt
Execute : 2º =1
Write : 2¹ =2
Read : 2² =4
Write + Execute = 21 + 20 = 3
Read + Execute = 22 + 20 = 5
dst.
Selanjutnya, setelah perintah chmod, ketikkan angka untuk user,
lalu angka untuk group, lalu angka untuk others. Misalnya file
cobalagi.txt yang akan diubah hak aksesnya dari r--rwxr-- men-
jadi r---wx---.
[root@sisjarkom ~]# ls –l
-r--rwxr-- 1 root root 4096 Jul 08 00:45
cobalagi.txt
c.Jumlah link
Adalah jumlah link untuk file yang bersangkutan. Link dimaksudkan
seperti shortcut pada Microsoft Windows.
d. User pemilik
Adalah user yang memiliki file tersebut.
e. Group pemilik
Adalah group yang memiliki file tersebut.
f. Ukuran file
Adalah ukuran penyimpanan file tersebut di media penyimpanan
dalam satuan byte.
g. Waktu pembuatan
Adalah waktu yang menunjukkan kapan file itu dibuat atau terakhir
kali dimodifikasi.
h. Nama file
Adalah nama file yang dimaksud untuk membedakannya dengan file
lain. Dalam satu direktori tidak boleh ada file yang memiliki nama dan
ekstensi sama persis.
Setelah itu lihat sistem file-nya, bila NTFS atau FAT32, maka partisi itu
adalah partisi dari Windows. Biasanya partisi yang pertama adalah drive
C:\ selanjutnya D:\, begitu seterusnya. Lalu bila ingin me- mount partisi
D:\ ke direktori /mnt maka perintahnya adalah
[root@sisjarkom ~]# mount /dev/sda2 /mnt
Bila ingin me-mount partisi ini pada direktori lain maka direktori tujuan
mounting harus dibuat terlebih dahulu. Setelah selesai maka lakukan
proses umount.
[root@sisjarkom ~]# umount /dev/sda2
Setelah perintah umount di atas dijalankan, maka isi partisi tidak dapat
dibaca lagi dari direktori tujuan mount sebelumnya. Pada saat
melakukan mount ada kalanya menemui pesan-pesan
kesalahan. Berikut adalah beberapa contoh pesan-pesan
kesalahan yang sering muncul dan penjelasannya.
mount: mount point
/mnt/win_e does not exist
2. Lihat propertinya
[root@sisjarkom ~]# ls –l
3. Ubah hak aksesnya menjadi rwxrwxrwx dengan letter coding
[root@sisjarkom ~]# chmod a=rwx file1
5. Lihat propertinya
[root@sisjarkom ~]# ls –l
Pengenalan Editor
Pada Linux terdapat puluhan jenis editor yang dapat dijalankan di
shell. Berikut adalah daftar editor yang tersedia di Linux:
Nama Deskripsi
Axe X11 text editor
crisplite Editor untuk programmer CRiSP
Ed Editor baris
Edy Editor text (Jerman)
ee, easyedit Emacs dalam mode yang lebih sederhana
elvis, xelvis Bentuk cloning dari editor Vi
jed, xjed Editor untuk console dan X11 bagi programmer
joe, jmacs Editor Joe dan variannya
kedit Text editor bawaan K Desktop
Nvi Bentuk kloning dari editor vi Berkeley
Pico Editor text (distribusi program email pine)
Red Editor baris yang bersifat read-only
Sed Stream editor
starwriter StarOffice word processor
Uemacs MicroEMACs text editor
Vim ViIMproved
Editor vi
Pada praktikum kali ini hanya membahas penggunaan Vi. Sebuah
editor yang terdapat hampir diseluruh distribusi Linux. Sebenarnya
saat ini yang beredar bukan lagi Vi tapi Vim (Vi Improved). Namun
cara pemanggilannya sama. Saat ini Vi juga terdapat pada X window
yaitu Gvim.
Salah satu kelebihan vi adalah syntax highlighting. Yaitu suatu fitur
dalam pembuatan shell script dimana vi secara otomatis membaca
suatu file kemudian memberikan warna tersendiri pada reserved word
(kata-kata yang digunakan bahasa pemrograman, contoh echo, case,
dan for), variael, operator, dsb.
Sehingga memudahkan dalam membuat suatu script. Pada editor vi
terdapat dua buah mode. Yang pertama, mode perintah, dimana tiap
karakter yang dimasukan diinterpretasikan sebagai perintah. Contoh
perintah seperti mencari kata, text, undo, paste, cut,paste, dsb. Yang
kedua, mode edit, dimana terdapat suatu dokumen yang dapat
diketikan sebuah script yang akan dibuat. Ketika pertama kali
memasuki vi secara otomatis kita masuk ke mode perintah.
Perintah editing
i atau insert Masuk ke mode edit. Untuk kembali ke mode perintah
tekan Esc
x Menghapus/meng-cut satu huruf di sebelah kanan kursor
dw Menghapus/meng-cut satu kata di sebelah kanan kursor
dd Menghapus/meng-cut satu baris di tempat kursor berada
yy Meng-copy satu baris di tempat kursor berada
p Mem-paste baris yang di-copy atau di-cut
a. File /etc/issue
File ini berisi pesan untuk ditampilkan pada login prompt (hanya
dapat dilihat di terminal (Ctrl+alt+1/2/3/../6)). Kita dapat
menampilkan pesan untuk user disini sebelum user tersebut login ke
sistem. Hak akses untuk merubah isi dari file /etc/issue ini hanya
diberikan kepada user root (super user).
Berikut contohnya :
Di dalam file /etc/issue diisikan seperti berikut :
Penjelasan :
1. Di login prompt akan muncul tulisan “CentOS”
2. \r dan \m adalah karakter squence, sebagai berikut :
\r : adalah versi kernel
\m : adalah tipe CPU
Sebagai Root (Super User), kita dapat menampilkan pesan apa saja
untuk ditampilkan kepada user sebelum mereka login ke sistem, yaitu
dengan cara memodifikasi isi dari file ini.
b. File /etc/motd
Isi dari file motd ini akan ditampilkan setelah user sukses melakukan
login. Secara default biasanya file ini kosong, namun kita bisa
menggantinya dengan ucapan “Selamat Datang” atau ucapan lain
yang disukai.
c. File /etc/profile
File ini berisi shell script yang berlaku untuk seluruh pengguna
sistem, file ini akan dijalankan pada saat user login ke sistem.
Berikut contoh isi dari file /etc/profile :
# /etc/profile
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
unset pathmunge
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
File konfigurasi boot loader Grub terdapat pada file g rub.conf, dan
berikut ini adalah file konfigurasinya:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun Grub after making
changes to # # this file
# NOTICE: You have a /boot partition. This means
that
# all kernel and initrd paths are relative to /boot/,
eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda2
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/Grub/splash.xpm.gz
title CentOS(2.6.18-92.e15)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.e15 ro root=LABEL=/
initrd /initrd-2.6.18-92.e15.img
title Windows XP
map (hd0,0) (hd0,2)
map (hd0,2) (hd0,0)
rootnoverify (hd0,2)
chainloader +1
title DOS Boot Disk
map (hd0,0) (hd0,2)
map (hd0,2) (hd0,0)
chainloader (fd0)+1
#
# inittab This file describes how the INIT process
should set up
# the sistem in a certain run-level.
#
# Author: Miquel van Smoorenburg,
<miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and
Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not
have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# Sistem initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few
minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd instaled and
your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; Sistem
Shutting Down"
Penjelasan :
Perhatikan baris id:3:initdefault:, ini berarti sewaktu Linux
booting, maka akan langsung menuju ke run level 3. anda dapat
merubah angka 3 disini menjadi 5 misalnya, sehingga Linux akan
langsung masuk ke sistem Xwindow.
Setelah baris Sistem Initialization : sebelum sistem
menjalankan run level yang dipilih, sistem akan menjalankan dulu
script rc.sysinit, baru setelah eksekusi rc.sysinit selesai,
sistem akan mengeksekusi run level pilihan.
Jika diganti menjadi 0, maka ketika komputer melakukan proses
booting, sistem akan langsung mati, dan jika diganti menjadi 6 maka
sistem akan terus-menerus melakukan restart.
4. lakukan restart
[root@sisjarkom ~]# reboot
4. tambahkan baris
/dev/cdrom /isicd auto defaults 0 0
keterangan:
file_arsip : nama arsip dengan ekstensi tar atau tar.gz
file_1, file_2 : nama file 1, nama file 2, dst. yang akan
diarsipkan
direktori : nama direktori yang akan diarsipkan
1. RPM
RPM adalah kependekan dari Red Hat Package Manager.
Pertama kali dikembangkan oleh Red Hat. RPM hanya digunakan pada
semua distro keturunan Red Hat saja. RPM dapat digunakan untuk
membangun paket, melakukan instalasi, mencari informasi paket dalam
sistem, memeriksa keabsahan paket, melakukan update ataupun
menghapus paket tertentu.
Cara menggunakan RPM:
[root@sisjarkom ~]# rpm [opsi] nama_paket.rpm
Opsi dasar RPM:
-i instal : menginstal
-e erase : menghapus
-U Upgrade : meng-upgrade
-q query : mencari
-V Verify : memeriksa
b. locate
Mencari file berdasarkan database yang di-update secara periodik.
Perintah updatedb akan membuat sebuah database yang akan
digunakan oleh locate. Cara penggunaannya:
[root@sisjarkom ~]# locate [opsi] [str1 str2]
c. whereis
Perintah ini digunakan untuk mencari letak file binary, halaman
manual (man pages), dan source suatu perintah atau aplikasi yang
terinstal dalam sistem. Cara penggunaannya:
[root@sisjarkom ~]# whereis [opsi] nama_perintah
salah
4. Buat sebuah file, minimal berisi satu paragraf atau copy
satu file konfigurasi dari sistem. Maksudnya di sini,
agar dapat mengamati perbedaan ukuran file yang
terkompres dengan yang tidak terkompres.
[root@sisjarkom KLSx]# cp /etc/passwd passwd
[root@sisjarkom KLSx]# ls –l
8. Agar file asal yang akan dikompres tidak disimpan, maka dapat
digunakan opsi -n seperti berikut:
[root@sisjarkom KLSx]# gzip -n passwd
Opsi -f harus digunakan dalam utilitas tar agar fungsi utilitas tar ini
dapat berjalan dengan baik. Opsi -f digunakan untuk merujuk file
yang akan dilibatkan dalam pengarsipan.
Atau:
[root@sisjarkom KLSx]# tar -czvf arsip2.tar.gz passwd kompres1
kompres2
2. Pindah direktori.
[root@sisjarkom ~]# cd nama_paket
Bacalah manual pages untuk perintah find dan cari opsi -ctime.
[root@sisjarkom ~]# man find
File Descriptor
Dijelaskan pada diatas (sub bab 1.2.1) bahwa suatu proses
membutuhkan input dan akan menghasilkan output. Dan piranti-piranti
yang digunakan untuk melakukan input dan menampilkan output untuk
kemudian disebut sebagai standar input dan standar output.
Adapun standar input pada linux adalah keyboard dan standar
outputnya adalah monitor.
Sistem Operasi Linux berkomunikasi melalui file (Everything is
Files,tidak membedakan antara hardware dan file, linux memanipulasi
hardware sama dengan file), melalui file descriptore, yang direpresentasikan
dengan :
FILE
DESCRIPTORS USE EXAMPLE
NUMBER
0 Standar Input Keyboard
1 Standar Layar Monitor
Output
2 Standar Error Layar Monitor
6.1.2 Redirection
Redirection adalah istilah yang digunakan untuk mengalihkan
sumber input dan output dari standar yang semestinya (keyboard dan
monitor). Berikut simbol yang digunakan :
6.1.3 Filter
Filter adalah utilitas yang dapat memproses standar input dan
menampilkan hasilnya ke standar output.
6.1.3.1 grep
Perintah ini digunakan untuk menyaring atau mencari isi dari suatu
file yang bertipe string dan menampilkan baris-baris sesuai
dengan pola yang ditentukan. sintaksnya :
[root@sisjarkom ~]# grep [options] “yyy” namafile
Keterangan:
yyy : string yang akan dicari
6.1.3.2 sort
Perintah yang digunakan untuk mengurutkan isi dari suatu file
berdasarkan urutan nomor ASCII dari karakter.
sintaksnya :
[root@sisjarkom ~]# sort [options] namafile
6.1.3.3 uniq
Perintah ini digunakan untuk menghilangkan baris-baris yang
berurutan pada isi sebuah file yang mengalami duplikasi.
Sintaksnya:
[root@sisjarkom ~]# uniq [options] namafile
6.1.3.4 wc
Perintah ini digunakan untuk menghitung jumlah baris, kata dan
karakter dalam sebuah file teks. Sintaksnya :
[root@sisjarkom ~]# wc [options] namafile
6.1.3.5 cut
Perintah ini digunakan untuk mengambil kolom tertentu pada baris-
baris dari suatu file teks. sintaksnya :
[root@sisjarkom ~]# cut [options] namafile
6.1.3.6 more
Perintahini digunakan untuk menampilkan teks
perhalaman satu layar penuh pada satu waktu. sintaksnya
[root@sisjarkom ~]# more [options] namafile
6.1.3.7 tail
Perintah ini digunakan untuk menampilkan 10 baris terakhir isi dari
sebuah file teks.
[root@sisjarkom ~]# tail [options] namafile
6.1.3.8 head
Perintah ini adalah kebalikan dari perintah tail, karena perintah ini
akan menampilkan 10 baris awal dari isi suatu file teks .
[root@sisjarkom ~]# head [options] namafile
6.1.3.9 Pipeline
Pipeline ( | ) adalah fasilitas pada shell Linux yang berfungsi
untuk menjadikan output dari suatu proses dan menggunakannya
sebagai input pada proses selanjutnya. Mekanisme ini digunakan
sebagai alat komunikasi antar proses. contoh :
[root@sisjarkom ~]# Proses 1 | Proses 2
Standar output
[root@sisjarkom ~]# date > date.txt
Perintah date akan menampilkan tanggal dan jam saat perintah
dieksekusi. Tetapi karena ada tanda redirection output, maka hasil
perintah tersebut tidak akan ditampilkan pada layar melainkan
dialihkan kedalam file date.txt
Standar input
[root@sisjarkom ~]# wc < date.txt
Perintah wc akan menghitung jumlah kata, karakter, dan baris dari
input yang berupa isi file date.txt
Standar error
[root@sisjarkom ~]# slh 2> inierror.txt
Pesan kesalahan untuk perintah slh (perintah yang salah) tidak akan
ditampilkan ke layar monitor tetapi dialihkan ke dalam file inierror.txt
Dengan Pipeline :
[root@sisjarkom ~]# rpm –qa | grep zip
Tanpa pipeline , output dari perintah rpm –qa terlebih dahulu akan
disimpan ke dalam file file1.txt, setelah itu file1.txt dijadikan input
pada perintah grep.
Dengan mekanisme pipeline output dari perintah rpm –qa akan
langsung dijadikan input bagi perintah grep.
BAB VII
MANAJEMEN PROSES
7.1 Dasar Teori
7.1.1 Multi-tasking dan multi-user
Saat ini user lebih senang menggunakan tampilan grafis (GUI)
daripada menjalankan sebuah sistem operasi dengan tampilan command
(CLI). Hal tersebut membuat user tidak memaksimalkan komunikasi yang
dapat dilakukan pada sistem. sekarang saatnya user memahami mengenai
proses lebih detail. Tidak setiap perintah yang dijalankan merupakan proses
tunggal. Beberapa perintah pada saat dieksekusi menjalankan serangkaian
proses yang saling terkait, contohnya monzilla, contoh lainnya perintah ls
yang berupa proses tunggal.
Linux merupakan sebuah sistem operasi yang multi-tasking dan
multi-user, yaitu banyak user dapat menjalankan beberapa proses
sekaligus pada waktu yang sama dan pada sistem yang sama.
Contoh penggunaan :
[root@sisjarkom ~]# ps aux
Outputnya:
2. Pstree
Fungsi dari utilitas ini sama dengan perintah ps, hanya saja data
disajikan seperti struktur pohon untuk memperjelas hubungan proses
child dengan parentnya..
untuk membaca manual dari perintah pstree :
[root@sisjarkom ~]# man pstree
contoh penggunaan :
[root@sisjarkom ~]# pstree
Output:
3. Top
Utilitas top secara mendasar fungsinya sama seperti ps, hanya saja
top lebih aktual, karena informasi proses yang sedang berjalan,
ditampilkan secara realtime. Top juga lebih spesifik dalam
menjelaskan keadaan sistem. Kelemahannya adalah proses top ini
lebih banyak memakan memory.
Contoh penggunaan :
[root@sisjarkom ~]# top
Output:
Untuk keluar dari proses top, tekan “q”
Keterangannya:
USER : pemilik proses.
PID : proces ID (Nomor Proses).
%CPU : penggunaan CPU oleh proses.
%MEM : penggunaan Memory (dalam KB) oleh proses.
VSZ/VIRT : penggunaan virtual memory dalam proses.
RSS : penggunaan memory yang resident oleh proses.
TTY : terminal (tty),tempat asal proses tsb dijalankan.
STAT : keadaan suatu proses.
- R : proses dalam kondisi Running.
- S : proses dalam kondisi Sleeping.
- I : proses dalam kondisi idle.
- Z : proses Zombie. Proses zombie adalah suatu
proses (biasanya proses anak) yang telah
mati/dimatikan tetapi tetap ada. Hal ini
dikarenakan proses ibunya(parent process)
tidak mematikan proses anaknya dengan
sempurna. Proses zombie ini akan mati apabila
parent prosesnya mati.
- D : uninterruptible sleep (biasanya I/O).
- < : proses dengan prioritas tinggi.
- N : proses dengan prioritas rendah.
- dan lain lain
START : saat proses dijalankan.
TIME : lama proses dijalankan.
COMMAND : Baris perintah yang dijalankan.
Output:
Keterangan:
real :mengukur waktu total yang dimulai dari saat pertama
aplikasi dijalankan sampai selesai
user :mengukur waktu yang dibutuhkan CPU untuk
menjalankan aplikasi
sys :mengukur waktu yang dibutuhkan CPU untuk
menjalankan sistem atau kernel
Format standar :
at HH:MM
Contoh :
[root@sisjarkom ~]# at 09:30
at> touch file1.txt
at> <EOT>
Selain format waktu diatas (HH:MM) juga terdapat format lain.
Penjelasan lebih lengkap dapat dilihat pada manual perintah at
Tanda ‘+’ berarti proses tersebut berada di urutan paling atas dari
queue (antrian), sedangkan tanda ‘-’ proses tersebut setelah proses
yang menpunyai tanda ‘+’. Yang perlu diperhatikan antrian
menggunakan konsep LIFO (Last In First Out).
[root@sisjarkom ~]# fg
[root@sisjarkom ~]# fg 2
[root@sisjarkom ~]# %2
[root@sisjarkom ~]# ps
[root@sisjarkom ~]# ps u
[root@sisjarkom ~]# ps a
[root@sisjarkom ~]# ps x
[root@sisjarkom ~]# ps aux
[root@sisjarkom ~]# ps r
Perintah lain untuk melihat status proses adalah pstree dan top.
B. Mengelola sinyal
Buat file prog.sh
[root@sisjarkom ~]# vi prog.sh
Isi dengan :
#!/bin/sh
echo “Program berjalan …”
while :
do
echo “X”
sleep 3
done
atau
[root@sisjarkom ~]# kill -15 [Nomor PID]
Atau
[root@sisjarkom ~]# killall -9 sh
Atau
[root@sisjarkom ~]# kill –1 [Nomor PID]
Atau
[root@sisjarkom ~]# kill –2 [Nomor PID]
Atau
[root@sisjarkom ~]# kill –15 [Nomor PID]
C. Penjadwalan
Untuk melakukan penjadwalan, kita gunakan perintah at.
Contoh
berikut kita akan melakukan penjadwalan untuk
melakukan restart sistem pada 2 hari ke depan.
[root@sisjarkom ~]# at now + 2 days
at>init 6
at><EOT>
<EOT> dapat dilakukan dengan menekan <Ctrl+D>.
Macam-macam shell
Terdapat beberapa macam shell yang tersedia di pasaran diantaranya:
1. Bourne Shell (sh) – Shell sederhana , belum dilengkapi oleh fitur.
2. C Shell (csh) - Biasa disertakan bersama keluarga BSD. Sudah mulai
dilengkapi fasilitas job control (membuat proses berhenti sementara,
foreground, background, dsb), alias (membuat nama lain perintah)
dan history mechanism (menyimpan sejarah perintah yang telah
dijalankan).
3. Korn Shell (ksh) - Merupakan pengembangan dari kedua shell
sebelumnya.
4. Bourne Again Shell (bash) - Diciptakan oleh Brian Fox dan Chet
Ramey, adalah salah satu shell yang popular di dunia Linux. Terdiri
dari 48 built-in command dan selusin opsi command line. Fasilitasnya
antara lain: menyediakan help command dan auto-completion.
Hampir semua distribusi Linux saat ini menggunakan shell jenis ini.
Menggabungkan kelebihan C Shell dan Korn Shell
5. Z shell (Zsh) - Kompatibel dengan csh, ksh, dan sh.
Sebelum kita belajar output, variable dan input maka ada baiknya
jika kita membahas dulu tentang tanda petik.
Single quote ' Tanda petik tunggal, digunakan untuk string, tapi
tidak bisa digunakan untuk pengambilan nilai variable
Double " Tanda petik ganda, digunakan untuk string, bisa
quote digunakan untuk pemanggilan nilai variabel
Back quote ` Tanda petik balik, digunakan pada operasi
matematika, digunakan untuk pemanggilan nilai
variabel
Output
Echo adalah salah satu perintah yang digunakan untuk menampilkan
keluaran.
Untuk lebih jelasnya anda dapat mengetikkan man echo pada shell.
Variabel
Seperti halnya bahasa pemrograman yang lain, maka
pada shell programming dikenal juga variable. Pada shell
script, tipe variabel hanya string, sehingga kita tidak perlu
mendeklarasikannya tipenya. Sintaks penulisan variabel
adalah sebagai berikut:
nama_variabel=isi_variabel
contoh:
[root@sisjarkom]# nama=cristiano_ronaldo
[root@sisjarkom]# umur=28
berbeda dengan:
[root@sisjarkom]# kesebelasan=portugal
Bila variabel berupa string yang terdiri lebih dari satu
kata, maka harus berada dalam tanda petik, contoh:
[root@sisjarkom]# praktikum="Sistem Operasi"
Atau:
[root@sisjarkom]# praktikum=’Sistem Operasi’
Input
Perintah read diatas akan meminta masukkan dari user, setelah user
menekan enter, maka masukkan tersebut akan disimpan dalam variable
nama.
Parameter Input
Sebuah program shell dapat menerima sederet masukan yang
biasanya berfungsi sebagai opsi atau argumen. Sederet masukan ini
dimasukkan dalam variabel parameter yang sudah terdapat pada shell.
Variabel parameter adalah $1 sampai $9
$0 adalah nama dari program itu sendiri
$# adalah jumlah dari parameter yang dimasukkan
$* adalah parameter - parameter yang dimasukkan
$$ adalah nomor proses yang sedang dijalankan
Contoh perintah:
[root@sisjarkom]# ls –l /home/Chaca
Maka:
$0=ls
$1=-l
$2=/home/Chaca
Operator
Operator Aritmatika
Pada pemrograman shell, untuk melakukan operasi aritmatika, kita
harus menggunakan perintah expr, contoh:
[root@sisjarkom]# bil=5
[root@sisjarkom]# echo `expr $bil + 1`
Contoh pemakaiannya:
[root@sisjarkom]# sebelas=`expr 5 + 6`
[root@sisjarkom]# enam=`expr 3 \* 2`
Operator Perbandingan
Seringkali kita harus membandingan dua bilangan, terutama jika kita
menggunakan perintah if atau case (akan dijelaskan kemudian).
Berikut beberapa operator perbandingan:
Operator Deskripsi Simbol
-eq Equal, sama dengan =
-ge Greater equal, lebih besar sama dengan >=
-gt Greater than, lebih besar >
-le Less equal, lebih kecil sama dengan <=
-lt Less than, lebih kecil <
-ne Not equal, tidak sama dengan !=
Contoh pemakaiannya:
if [ $bil1 –gt $bil2 ]; then
Operator Logika
Operator logika yang terdapat pada pemrograman shell
ada tiga, NOT, AND dan OR. Berikut tandanya:
Operator Deskripsi
! NOT
-a AND
-o OR
Contoh pemakaiannya :
if [ $bil1 –eq 5 -o $bil2 -eq 10 ]; then
Example:
[root@sisjarkom]# fgrep budi /etc/passwd
budi:x:500:500:budi:/home/budi:/bin/bash
Shell yang sedang kita pakai ditunjukkan pada akhir baris keluaran,
pada contoh diatas kita sedang menggunakan /bin/bash.
Percobaan 2 : Quote
Lakukan percobaan berikut dan amati keluarannya!
[root@sisjarkom]# angka=13
[root@sisjarkom]# echo ‘expr $angka+1’
[root@sisjarkom]# echo “expr $angka+1”
[root@sisjarkom]# echo `expr $angka+1`
[root@sisjarkom]# echo `expr $angka + 1`
masih untuk
2. Buatlah sebuah script lagi dengan nama cari2.sh
pencarian string/kata sebuah file teks, hanya saja
program tersebut dijalankan dengan format :
sh cari2.sh<spasi>kata_yg_dicari<spasi>dari_file
Contoh :
[root@sisjarkom ~]# sh cari2.sh root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
BAB IX
PEMROGRAMAN SHELL 2
Dasar Teori
9.1 Dasar Teori
9.1.1 Status exit
Setelah suatu instruksi dieksekusi, maka instruksi tersebut akan
memberikan keluaran berupa nilai yang merepresentasikan apakah instruksi
tersebut memberikan nilai benar/true/sukses atau salah/false/gagal.
Indikasinya sebagai berikut:
Nilai tersebut disimpan dalam variable ?
Jika instruksi berakhir benar/sukses/true, maka variable ? bernilai 0
Jika instruksi berakhir salah/gagal/false, maka variable ? bernilai 1
Variable ? itulah yang disebut status exit. Untuk melihat nilai dari
status exit dapat dilihat melalui instruksi echo $?.
[root@sisjarkom ~]# echo $?
Test
Instruksi test digunakan untuk memeriksa kondisi dari
suatu ekspresi, dan hasil status exit dapat dilihat melalui
variable ?, sintaksnya:
test ekspresi
Note: Perhatikan spasi! Test akan memberikan nilai status exit (?)
dengan nilai 0 atau true.
9.1.2 Percabangan
Percabangan digunakan sebagai kontrol seleksi yang memungkinkan
program untuk menjalankan suatu perintah berdasarkan kondisi tertentu.
If then
Merupakan percabangan yang paling sederhana.
Sintaksnya adalah sbb:
if [ ekspresi ]; then
Perintahjikabenar_1
Perintahjikabenar_2
Perintahjikabenar_n
fi
If then else
Percabangan if then else memberikan pilihan jika kondisi bernilai
false. Sintaksnya adalah sbb:
if [ ekspresi ]; then
perintahjikabenar_1
perintahjikabenar_2
perintahjikabenar_n
else
perintahjikasalah_1
perintahjikasalah_2
perintahjikasalah_n
fi
Contoh:
#! /bin/bash
#simpan dengan nama ifthenelse.sh
nama=”irwan”
echo –n ”masukkan nama : ”
read masukan
if [ $masukan = $nama ]; then
echo ”nama masukan benar”
else
echo ”nama masukan salah”
fi
Penjelasan :
Script ini hampir sama dengan contoh yang pertama.
Perbedaannya adalah pada else, jika user memasukkan nama
salah, maka akan keluar kalimat “nama masukan salah”
If then elif
Percabangan ini memberikan pilihan lebih dari 2 kondisi untuk
dibandingkan. Sintaksnya:
if [ ekspresi1 ]; then
instruksi 1.1
instruksi 1.2
elif [ ekspresi2 ]; then
instruksi 2.1
intruksi 2.2
else
instruksi 3.1
instruksi 3.2
fi
Penjelasan :
Pertama kali , sistem akan melakukan pengecekan apakah nama1
sama dengan masukan user (apakah ekspresi1 bernilai true), jika
benar maka sistem akan menampilkan pesan “nama pertama
benar”
Jika ekpresi pertama bernilai false maka sistem akan melakukan
pengecekan apakah nama2 sama dengan masukan user, jika
benar sistem akan menampilkan pesan “nama kedua benar”
Jika ternyata kedua ekspresi tersebut bernilai false, maka sistem
akan langsung manampilkan pesan “nama masukan salah”
Case
Konstruksi case ini digunakan untuk menyederhanakan pemakaian if
yang berantai atau kompleks, sehingga dengan menggunakan case ,
kondisi dapat dikelompokkan secara logis dan lebih mudah dan jelas
dalam penulisannya.
Sintaksnya:
case variable in
match_1}
instruksi 1.1
instruksi 1.2
…………..
;;
Match_2)
instruksi 2.1
instruksi 2.2
…………..
;;
Match_n)
instruksi n.1
instruksi n.m
…………..
;;
*)
instruksi *.1
instruksi *.n
…………..
;;
Esac
Penjelasan:
Variable adalah nilai yang akan dibandingkan dengan match_1
sampai match_n
Misalkan jika nilai dari variable sama dengan nilai match_1 maka
sistem akan mengeksekusi instruksi 1.x.
Setiap kelompok instruksi diakhiri dengan tanda ;;
Di dalam *) adalah instruksi – instruksi yang dijalankan jika dari
match_1 sampai match_n tidak ada yang bernilai true.
Case diakhiri dengan perintah esac.
Contoh:
#! /bin/bash
#simpan dengan nama case.sh
echo “pilih perintah : ”
echo “1. Lihat isi direktori”
echo “2. Siapakah aku?”
echo “3. Melihat tanggal hari ini”
echo “4. Melihat direktori kerja”
echo –n “Pilihan anda : “
read pil
case $pil in
1)
echo “Isi direktori: “
ls
;;
2)
echo “aku adalah `whoami`”
;;
3)
echo “Sekarang tanggal: `date`“
;;
4)
echo “Direktori sekarang adalah `pwd`”
;;
*)
echo “Tidak ada dalam pilihan !”
;;
esac
Penjelasan:
Pertama kali sistem akan membaca masukan dari user dan
menyimpannya dalam variable pil.
Kemudian pil dibandingkan , jika isi dari variable pil adalah 3 maka
perintah “echo “Sekarang tanggal:“ date akan dieksekusi.
Select
Select bukan merupakan percabangan murni, karena menggunakan
percabangan lain yaitu if then atau case. Biasanya select digunakan
untuk membuat daftar menu pilihan pada script di dalam select berisi
pola – pola yang mencakup keseluruhan daftar pilihan.
Untuk lebih jelasnya, mari kita perhatikan contoh berikut:
#! /bin/bash
#simpan dengan nama select.sh
PILIHAN=”Halo Keluar”
select opt in $PILIHAN; do
if [ $opt = “Keluar” ]; then
echo “selesai terus keluar”
exit
elif [ $opt = “Halo” ]; then
echo “halo juga”
else
clear
echo “gak ada dalam pilihan”
fi
done
Penjelasan:
Variable PILIHAN digunakan oleh select untuk menyimpan
seluruh nilai dari variable opt
Dengan select, selama belum ada perintah exit dan masih berada
di dalam select, maka program tidak akan pernah keluar.
Select harus diakhiri dengan done
9.1.3 Perulangan
Perulangan digunakan untuk mengeksekusi perintah – perintah yang
berada di dalamnya secara berulang – ulang selama kondisi yang telah
ditentukan.
For
For digunakan sebagai sintak perulangan dengan menggunakan var
yang ada pada setiap pengulangan akan diganti dengan nilai yang
berada pada daftar.
Sintaks:
for var in str_1 str_2 ……str_n
do
instruksi_1
instruksi_2
…………
Instruksi_n
done
Perulangan ini agak berbeda dengan perulangan yang ada pada
bahasa pemrograman lain, karena perulangan dilakukan berdasarkan
nilai – nilai yang ada dalam daftar. Sehingga perulangan ini tidak
dilakukan untuk bilangan integer melainkan string.
Str_1, str_2,…, sampai str_n adalah daftar nilai – nilai yang akan
diulang. Bisa juga diisi dengan instruksi lain yang menghasilkan
daftar nilai – niali seperti ls , misalnya.
Instruksi1 hingga instruksi_n adalah instruksi yang akan diulang
berdasarkan daftar.
Perulangan diawali dengan do dan diakhiri dengan done
Penjelasan contoh:
Daftar – daftar nilai disini diambil dari perintah ls yang
menghasilkan daftar – daftar file pada direktori aktif. Disimpan
dalam variable i. Perintah perulangannya adalah menampilkan kata
“isi direktori : “ diikuti dengan nilai dari variable i.
#! /bin/bash
#simpan dengan nama for1.sh
for i in $(seq 1 10); do
echo perulangan ke : $i
done
Penjelasan:
Perulangan dilakukan dari 1 sampai 10
Memanfaatkan perintah seq untuk men-generate string 1 sampai
10
While
While digunakan untuk perulangan instruksi , yang umumnya dibatasi
dengan suatu kondisi. Selama kondisi tersebut bernilai true, maka
pengulangan terus dilakukan. Pengulangan akan berhenti , bila kondisi
bernilai False atau program keluar dari blok while melalui perintah
break atau exit. Variable yang ingin diulang harus terlebih dahulu
diberikan nilai awal (inisialisasi)
Sintaksnya:
while kondisi
do
instruksi_1
instruksi_2
………….
Instruksi_n
done
Penjelasan:
Jika kondisi selalu benar , maka instruksi_1 hingga instruksi_n
akan terus dilakukan
Jika kondisi berubah jadi salah, maka instruksi dihentikan.
Jika terdapat instruksi exit atau break , maka perulangan juga
dihentikan.
Perulangan while diawali dengan do diakhiri dengan done
Penjelasan:
KOUNTER diinisialisasi dengan nilai awal 0
Kondisi pengulangan adalah selama nilai KOUNTER lebih kecil dari
10
let KOUNTER=KOUNTER+1 digunakan untuk mengganti nilai
KOUNTER dengan KOUNTER+1, sehingga nilai KOUNTER akan
bertambah 1 setiap kali perulangan (proses iterasi).
Until
Perulangan until hampir sama dengan perulangan while,
perbedaannya terdapat pada kondisi perulangan. Perulangan akan
dilakukan selama kondisi bernilai false/salah.
Sintaksnya:
until kondisi
do
instruksi_1
instruksi_2
………….
Instruksi_n
Done
Penjelasan:
Selama kondisi False maka dilakukan instruksi1 hingga
instruksi_n
Perulangan dimulai dengan do dan diakhiri dengan done
Contoh :
#! /bin/bash
KOUNTER=20
until [ $KOUNTER –lt 10 ]; do
echo kounternya : $KOUNTER
let KOUNTER-=1
done
9.1.4 Fungsi
Dalam script shell juga terdapat fungsi. Fungsi dipanggil oleh
program lainnya dengan menggunkan notasi NamaFungsi(). Fungsi
memberikan exit status($?) yang dinyatakan dengan return nr , atau nilai
0 sebagai default.
Variable dalam fungsi dapat didefinisikan sebagai variable local atau
global. Hal yang perlu dipertimbangkan , nama variable yang digunakan
dalam sebuah fungsi , jangan sampai bentrok atau sama dengan nama
variable yang ada diluar fungsi , sehinga tidak terjadi perubahan nilai atau
isi dari variable tersebut.
Jenis-jenis fungsi
Contohnya:
#! /bin/bash
#contoh program fungsi tanpa parameter
#simpan dengan nama fungsi1.sh
function tampil {
tampil=$nama
echo “Nama Anda adalah $tampil”
}
echo -n “masukkan nama : “
read nama
tampil
Penjelasan:
o Dalam script tersebut terdapat 1 buah fungsi yaitu fungsi tampil
o Fungsi tampil digunakan untuk menampilkan nama ke monitor
o Variable nama sendiri di dapat dari inputan user
Penjelasan:
o Hampir sama seperti fungsi tanpa parameter yang berbeda adalah
saat menjalankan program
o Parameter 1 di inputkan setelah nama program
o Contoh menjalankan program : sh tampil.sh ucup
Percobaan ifthen
#! /bin/bash
#program hitung upah
#simpan dengan nama upah1.sh
echo –n “jam kerja : “
read jamkerja
echo –n “upah per jam : “
read upahperjam
upah=`expr $jamkerja \* $upahperjam`
echo “upah yang diterima sebesar : $upah”
if [ $jamkerja –gt 40 ]; then
jamkerja=`expr $jamkerja – 40`
upah=`expr $jamkerja \* $upahperjam + $upah`
echo “upah total yang diterima sebesar $upah”
fi
Percobaan if then else
#! /bin/bash
#program hitung upah2
#simpan dengan nama upah2.sh
echo –n “jam kerja : “
read jamkerja
echo –n “upah per jam : “
read upahperjam
upah=`expr $jamkerja \* $upahperjam`
if [ $jamkerja –le 40 ]; then
echo “upah yang diterima sebesar : $upah”
echo “Tidak ada bonus”
else
jamkerja=`expr $jamkerja – 40`
upah=`expr $jamkerja \* $upahperjam + $upah`
echo “upah total yang diterima sebesar $upah”
fi
Percobaan for
#! /bin/bash
#program cari rata - rata
#simpan dengan nama cariratarata.sh
echo -n "masukkan angka integer positif : "
read n
jum=0
for i in $(seq 1 $n); do
echo -n "masukkan angka:"
read angka
jum=`expr $jum + $angka`
done
rata2=`expr $jum / $n`
echo "rata - ratanya adalah $rata2"
Percobaan while
#! /bin/bash
#program jumlah integer dengan while
#simpan dengan nama jumlah.sh
ulang="yes"
while [ $ulang = yes ]; do
echo -n "masukkan angka integer positif : "
read batas
hasil=0
i=0
if [ $batas -lt 0 ]; then
echo "negative number is not allowed!"
else
while [ $i -lt $batas ]; do
let i+=1
let hasil+=$i
done
fi
echo "jumlah bilangan integer dari 1 sampai $batas
= $hasil"
echo -n "ulangi program ini (yes / no) ?"
read ulang
done
Percobaan until
#! /bin/bash
until [ $jwb = s –o $jwb = b –o $jwb = s –o $jwb =
b ]; do
echo “ sudah sholat blum ?”
read jwb
done