Anda di halaman 1dari 44

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

NAMA : BAMBANG GUNAWAN TANJUNG


NIM : 185150300111051
MATERI : BAB II
TANGGAL : 09/09/2019
ASISTEN : MUHAMMAD SULTHON YAZID BASTHOMI

BAB II

PENGENALAN LINGKUNGAN SISTEM OPERASI LINUX

2.1 Kebutuhan

Untuk melaksanakan kegiatan praktikum pada bab 2, diperlukan


sebuah sistem operasi yang di dalamnya terdapat sebuah BASH (Bourne
Again SHell).

2.2 Tujuan Praktikum

1. Mengenalkan struktur sistem operasi


2. Mengenalkan antarmuka dalam sistem operasi, yaitu command line
interface
3. Mengenalkan perintah-perintah dasar Linux yang umum digunakan
4. Mengenalkan lingkungan sistem operasi
5. Memberikan bekal kepada praktikan sebelum melanjutkan ke materi
lebih lanjut.
6. Praktikan mengerti dan mampu berinteraksi dengan shell
7. Praktikan mampu membuat program sederhana dengan shell
8. Praktikan mengerti absolute dan relative path
9. Praktikan mengerti proses pemasangan modul

2.3 Materi Praktikum

1.3.1 Command Line Interface

CLI adalah antar muka yang tidak menyediakan grafik, baik berupa
gambar-gambar, jendela-jendela ataupun animasi-animasi yang bisa
memanjakan pengguna, melainkan hanya berupa teks yang harus
diketikkan oleh pengguna. Pada bagian ini akan dikenalkan beberapa
perintah dasar Linux yang diperlukan dalam kehidupan sehari-hari, bahkan
untuk proses administratif. Materi yang disajikan juga untuk mendukung
kegiatan praktikum pada bab selanjutnya. Materi-materi tersebut meliputi:

A Manajemen User dan Group


Pada sistem operasi yang mendukung banyak pengguna/multiuser
Linux menyediakan konsep pengaturan user yang sederhana. Untuk dapat
menambah, menghapus, ataupun mengelompokkan user/group baru harus
login sebagai root (#), jadi seorang ‘user/group’ tidak dapat memodifikasi
user/group lain. Perintah-perintah yang digunakan untuk memanajemen
user dan group:

Membuat User

Untuk membuat user dan group hanya dapat dilakukan oleh super
user “root”. Perintah untuk membuat user baru adalah :

#useradd nama_user

#adduser nama_user

Untuk mengubah password :

#passwd nama_user
Menghapus User

Untuk menghapus user jalankan perintah berikut ini :

#userdel nama_user

Atau

# userdel –r nama_user

Jelaskan perbedaan dari kedua syntax diatas :

Perbedaannya adalah , pada syntax (#userdel nama_user) syntax ini hanya


menghapus usernya saja. Sedangkan pada syntax (# userdel –r nama_user)
syntax ini menghapus user dan user information yang tersimpan pada saat
membuat user.

Membuat Group

Group adalah gabungan dari beberapa user membentuk suatu


kelompok. User-user yang tergabung dalam satu group dapat saling
berbagi file.

 Berikut syntax untuk menambah group:

#groupadd nama_group

 Memberikan password group:

#gpasswd nama_group
 Perintah untuk menghapus group:

#groupdel nama_group

B File dan direktori

File merupakan koleksi dari data yang disimpan di dalam disk dan
dapat dimanipulasi sebagai suatu unit sesuai dengan namanya. Sedangkan
directories atau direktori adalah sebuah file yang bertindak sebagai folder
untuk file lain. Sebuah direktori juga berisi direktori lain(subdirektori).
Sebuah direktori yang berisi direktori lain disebut direktori parent. Sebuah
directory tree termasuk sebuah direktori dan semua file di dalamnya.
Sebuah karakter slash (‘/’) adalah nama dari root directory.

Operasi pada file

 Menamakan Files Dan Directories

Sebuah file dapat terdiri dari huruf besar dan huruf kecil, nomor, titik
(.), tanda penghubung(-) dan tanda garis bawah (_). Sebuah nama dari file
juga mengandung case sensitive. ‘sisop’ , ‘Sisop’ dan ‘SISOP’ merupakan
nama yang berbeda.

Linux juga tidak membatasi dalam ekstensi sebuah file, tapi akan
sangat baik dan berguna jika memberikan ekstensi yang sesuai untuk
mengidentifikasi tipe file dengan sekali lihat. Nama file sebelum ekstensi
disebut dengan base file name. sebagai contoh base file name dari
‘sisop.txt’ adalah sisop.

 Membuat File

Untuk membuat file ‘sisop’ di direktori terkini

Syntax :

$ touch sisop
Untuk membuat file ‘sisop’ di dalam direktori ‘home/praktikum’
subdirektori dari direktori tersebut

Syntax :

$ touch home/praktikum/sisop

 Membuat Direktori

Gunakan perintah ‘mkdir’ untuk membuat sebuah direktori baru,


berikan path name untuk direktori baru sebagai argumen.

Untuk membuat folder ‘sisop’ di direktori terkini.

Syntax :

$ mkdir sisop

Untuk membuat folder ‘sisop’ di dalam direktori ‘/tmp’ subdirektori dari


direktori tersebut

Syntax :

$ mkdir /tmp/sisop

 Berpindah Direktori

Gunakan perintah cd untuk berpindah direktori dari direktori


sebelumnya.

Syntax :

$ cd [alamat_direktori]
Contoh : $ cd /var/www

Untuk Berpindah direktori ke direktori diatasnya (parent) gunakan


perintah

$ cd ..

 Mendapatkan Nama Direktori Terkini

Untuk memperlihatkan di direktori mana posisi kita berada sekarang


digunakan perintah

Syntax :

$ pwd

 List Directory

Perintah ini berfungsi untuk menampilkan isi dari suatu direktori


beserta atribut file-nya.

Syntax :

$ ls [option]

OPTION FUNGSI
bila Anda ingin menampilkan semua file dan folder, termasuk
-a file dan folder yang tersembunyi

-A sama dengan -a, tetapi tidak menampilkan direktori. dan ..

-C menampilkan direktori dengan output berbentuk kolom

-d menampilkan direktori saja, isi direktori tidak ditampilkan

-f menampilkan isi direktori tanpa diurutkan


menampilkan isi direktori secara lengkap, mulai dari hak
-l akses, owner, group dan tanggal file atau direktori tersebut
dibuat
menampilkan isi direktori dengan format satu direktori per
-1
baris
Contoh : $ ls –l

 Copy Berkas

Digunakan untuk melakukan copy file.

Syntax :

$ cp /[direktori]/[file_yang_ingin_dicopy] /[direktori tujuan]

Contoh : $ cp /etc/file1.txt /var/www

 Memindah Berkas

Digunakan untuk melakukan memindahkan, cut atau rename file.

Syntax :

$ mv /[direktori]/[file_yang_ingin_dicut] /[direktori
tujuan] (cut)
$ mv /[direktori]/[file_yang_ingin_direname]
/[nama_baru_file] (rename)

Contoh : $ mv /etc/file1.txt /var/www

$ mv /etc/file1.txt file2.txt
 Menghapus File

Digunakan untuk menghapus file.

Syntax :

$ rm [nama_file]

Contoh : $ rm file1.txt

 Menghapus Direktori

Syntax :

$ rmdir [nama_file]

Contoh : $ rmdir coba

 Menghapus Direktori yang di Dalamnya Terdapat File

Syntax :

$ rm –rf [nama_direktori]

Contoh : $ rm –rf coba

 Menampilkan Isi Sebuah File

Syntax :

$ more [nama_file]
Contoh : $ more file1.txt

C Kepemilikan File dan Hak Akses

Ketika sebuah file atau direktori dibuat, maka file atau direktori
tersebut kepemilikannya akan melekat pada suatu user dan group tertentu.
Selain itu pada file tersebut akan melekat juga tiga hak akses yang berbeda,
yaitu baca (read), tulis (write), dan eksekusi (execute), terhadap pemilik,
grup, atau user lain. Hak akses tersebut dapat diubah oleh root atau user
yang memilikinya. Mekanisme kepemilikan dan akses file tersebut sangat
penting, karena Linux bersifat multiuser, sehingga harus ada mekanisme
untuk mencegah akses-akses ilegal terhadap file. Secara umum
pengaturan hak akses atas file atau direktori mempunyai prinsip sebagai
berikut:

 Setiap file selalu dimiliki oleh seorang yang berhak mengatur hak akses
terhadap file tersebut.

 Hak akses terbagi menjadi 3 bagian: Read, Write, dan Execute.

 Hak akses dapat diberikan kepada 3 kelompok pemakai, yaitu pemilik


file (Owner), grup pemilik file (Group), dan pemakai lainnya (Other).

Hak akses

 read :r

 write :w

 execute :x

Kelompok pemakai

 User pemilik (Owner) :u


 Group :g

 User lain :o

Kemudian tanda (+) untuk menandakan pemberian hak akses,


sedangkan tanda (-) untuk menandakan penghapusan hak akses.
Perhatikan perintah berikut ini:

# chmod go+w nama_file.txt

Untuk mengubah hak akses sebuah file atau direktori hanya bisa
dilakukan oleh user root. Contoh berikut menunjukkan agar group (g) dan
other (o) bisa menulis (w). Selain menggunakan kombinasi huruf, hak akses
file atau direktori dapat dilakukan dengan kombinasi bilangan numerik, yaitu
0 sampai 7.

Untuk merubah kepemilikan file atau direktori baik user maupun grup
gunakan perintah chown dan chgrp, kepemilikan file ini terkadang perlu
dilakukan dengan alasan keamanan.

# chown [nama pemilik baru] [nama directory/nama file]

Begitu juga nama group pada sebuah file juga dapat kita ubah, untuk
mengubahnya kita bisa menggunakan chgrp.

# chgrgp [nama group baru] [nama direktory/ nama file

Contoh :
Pemilik file/direktori dapat mengubah ijin akses sebagai berikut :

-rwxrwxrwx 1 student test 1639 2001-08-31 20:19 file.txt

Format untuk mengubah ijin akses :

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

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

Dimana:

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

Format lain dari chmod adalah menggunakan bilangan biner sebagai


berikut

chmod [Angka_ijin] File(s)

chmod [Angka_Ijin] Dir(s)


Note : angka 0 diberikan apabila kita tidak memberikan ijin sedangkan
angka 1 diberikan apabila diberikan ijin.

Contoh :

Ada file dengan nama file.txt dimana untuk ijin aksesnya owner diberi
seluruh akses, group hanya baca, other tidak ada akses sama sekali.
Bagaimanakah format yang digunakan untuk mengubah ijin akses dari
file.txt tersebut?

Jawab :

u =rwx=111 =7

g =rwx=100 =4

o =rwx=000 =0

jadi formatnya adalah : $ chmod 740 file.txt

# Apakah ada cara lain untuk mengganti hak ijin akses file selain
dengan menggunakan mode biner dan alfabet? jika ada jelaskan!

Ada, Dengan melakukan setting hak akses pada file itu langsung. Caranya
Klik kanan pada file -> properties -> permissions -> lalu atur hak akses
nya. Dengan catatan apabila Owner adalah root maka cara ini tidak akan
bisa

# Buatlah file dengan nama coba1 lalu ubahlah hak ijin aksesnya
dengan $chmod u-x,g+r,o=w coba1. Jelaskan proses perintah tersebut!
Sebelum syntax di jalankan Sesudah syntax di jalankan

Jadi syntax di atas akan mengubah hak akses sebagai berikut. User dikurangi
hak akses untuk mengeksekusi (execute), tetapi tetap bisa Read & Write seperti
Acces awal [u-x], Group ditambah aksesnya menjadi bisa membaca file (read)
namun karna akses awalnya sudah Read Only jadi setelah di jalankan Group
akan tetap Read Only [g+r] dan Other di set bisa menulis (write), Akses Read
Only berubah menjadi np read,write yang berarti hak akses sudah menjadi
Write Only [o=w]

Pemilik sebuah file atau direktori dapat diganti menjadi user yang lain
yang kita inginkan. Untuk menggantinya digunakan perintah chown.

Syntax:

# chown [option] [pemilik_baru] [nama_file/direktori]

Begitu juga nama group pada sebuah file juga dapat kita ubah, untuk
mengubahnya kita bisa menggunakan perintah chgrp.

Syntax:

# chgrp [option] [group_pengganti] [nama_file/direktori]


Untuk keamanan dan privasi, setiap file di Linux memiliki identitas
kepemilikan(ownership). Dengan adanya identitas ini maka akan jelas siapa
pemilik file tersebut.

D Process dan Thread

Proses pada Linux merupakan aktifitas permintaan user terhadap


sistem operasi. Model proses pada Linux mirip dengan UNIX, dimana
prinsip dasar keduanya menggunakan fungsi fork() dan exec(). fork()
digunakan untuk membuat proses baru sedangkan exec() digunakan untuk
memanggil program.

Kedua pendekatan di atas merupakan dua hal yang berbeda, dimana


proses (child) bisa diciptakan tanpa membuka program baru, dan secara
sederhana akan meneruskan program awal (parent) untuk mengeksekusi
perintah yang sama pada program awal.

Untuk membuat proses baru, bisa dengan mengetikan perintah


langsung pada shell Linux.

Tipe Proses

Terdapat beberapa tipe proses yang dikenal dalam OS berbasis Linux


pada umumnya, antara lain:

 Interactive : proses yang dimulai (dan dikontrol oleh) shell. Bisa


tampak di luar (foreground) ataupun hanya di dalam (background).

 Batch : proses yang tidak berhubungan dengan terminal,


tetapi menunggu untuk dieksekusi secara berurutan (sekuensial).

 Daemon : proses yang dimulai ketika Linux booting dan berjalan


secara background. Proses ini menunggu permintaan dari proses
lainnya, bila tidak ada request, maka berada dalam keadaan ‘idle’.

Process Environment

Pada sistem operasi Linux process environment terdiri dari dua


komponen, argumen dan environment. Argumen adalah daftar opsi
tambahan pada CLI yang berkaitan dengan perilaku program ketika
dijalankan, sedangkan environment adalah daftar parameter, baik berupa
variabel, direktori home yang secara tekstual dibutuhkan oleh program.
Environment variable biasanya terdiri dari beberapa informasi seperti:

 PATH, daftar lokasi direktori dimana file executable berada.


 HOME, lokasi direktori home.

 CPPLIBS, lokasi dimana library yang berkaitan dengan program


disimpan.

 HOSTNAME digunakan untuk penamaan mesin.

 USER user yang digunakan pada saat login pada sistem operasi

Memulai menggunakan perintah ps

# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil


output seperti di atas?

$ ps -aux

# Apa fungsi perintah tersebut?

Untuk menampilkan atau melihat seluruh proses status atau antrian proses
yang sedang terjadi didalam OS Linux dan user dengan tampilan yang detail
Menampilkan semua proses yang sedang berjalan pada sistem

# Apa perintah yang seharusnya Anda tulis agar menampilkan hasil


output seperti di atas?

$ ps -e
# Atau Anda bisa menggunakan perintah lain, seperti ?

$ ps -aux

# Dan perintah apa yang berfungsi menampilkan semua proses dalam


format sesuai definisi user yaitu terdiri dari kolom PID dan CMD.?

$ ps -P

Melihat semua proses yang berjalan kecuali root

# Pada poin ketiga ini, Anda dapat menggunakan perintah seperti di


bawah ini :

ps -U root -u root -N

# Bagaimana hasil ouput-nya?


Menampilkan proses yang sedang dijalankan oleh user tertentu

# Untuk menjalankan fungsi pada poin empat, Anda dapat


menggunakan perintah seperti di bawah ini :

ps -u <user>

# Bagaimana hasil ouput-nya?

Menampilkan proses yang sedang berjalan dalam bentuk pohon

# Untuk menjalankan fungsi pada poin lima, Anda dapat


menggunakan perintah seperti di bawah ini :

$ pstree

#Bagaimana hasil ouput-nya?


# Apa perbedaan perintah pstree dengan pstree –h?

Pada pstree -h syntax ini berguna untuk meng highlight proses pada saat ini
dan proses induknya sedangkan pstree tidak meng highlight proses pada
saat ini

Controlling Proses

Dalam sistem operasi Linux semua proses dikontrol oleh shell yaitu
sebuah antar muka antara sistem operasi dengan user.

Sebagai contohnya kita akan mengirim output yang tidak akan pernah
selesai. Dengan menggunakan sintak sebagai berikut :

$yes

# Bagaimana untuk menghentikan perintah $yes di atas?

Setelah menjalankan syntax $yes maka terminal akan menampilkan huruf y


terus menerus secara vertikal. Untuk menghentikannya cukup dengan
menekan tombol Ctrl + c

Hasil output:
#Bagaimana cara agar perintah $yes tetap dijalankan tetapi shell tetap
digunakan untuk hal yang lain ?

Hasil output:

Dengan cara membuka terminal baru File -> New Tab atau New Window.

Atau dengan perintah $ yes > dev/null

# Bagaimana cara untuk melihat status proses yang sedang berjalan?

$ ps

Hasil output:
PERINTAH KILL

Perintah kill adalah salah satu perintah dasar Linux yang digunakan
untuk menghentikan atau mematikan proses yang sedang berjalan pada
Sistem Operasi Linux / UNIX. perintah ini sangat penting karena dengan
memahami perintah ini kita bisa mengetahui mana proses yang
mengganggu performa, tidak dibutuhkan, dll.

# Bagaimana contoh perintah kill ?

Contohnya saya ingin Menghapus proses yes karena sangat tidak


dibutuhkan. Yes memiliki PID 22550 maka lakukan perintah $kill 22550

Maka proses $yes akan Terminated atau dihentikan

# PID adalah nomor proses yang akan di hentikan. Tidak tahu PID
proses mana yang akan dihentikan? Cobalah bereksperimen dengan
perintah:

ps aux | grep <myusername>

# Lalu tempelkan hasil output pada kolom di bawah ini


Daemons
Daemons adalah sebuah proses yang bekerja pada background
karena proses ini tidak memiliki terminal pengontrol. Dalam sistem operasi
Windows biasanya lebih dikenal dengan sebutan service. Daemon adalah
sebuah proses yang didesain supaya proses tersebut tidak mendapatkan
intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang
sangat lama dan bertugas menerima request dan menjalankan responsnya.

# Apa yang membedakan Daemons dengan proses lain ?

- Berjalan dalam previlege super user


- Tidak memiliki terminal pengontrol baik itu STDOUT,STDIN maupun
STDERR
- Tidak memiliki parent process ID

Berikut ini adalah beberapa cara untuk membuat daemon:

● Forking dan pembunuhan Proses induk.

Langkah pertama dari pembuatan daemon adalah dengan men-


spawn proses menjadi induk dan anak dengan melakukan forking,
kemudian membunuh proses induk. Proses induk yang mati akan
menyebabkan sistem operasi mengira bahwa proses telah selesai sehingga
akan kembali ke terminal user.

# Contoh Script :
pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);}
if(pid > 0)
{
printf("process_id of child process %d \n", pid);
exit(EXIT_SUCCESS);
}
umask(0);

● Membuat proses bekerja secara independen

Daemon harus bekerja secara independen dibandingkan dengan


proses-proses lainnya, termasuk juga proses yang menjalankannya.
Langkah ini bisa dilakukan dengan memanggil fungsi setsid(), sehingga
proses akan mendapatkan sebuah session ID yang baru.

# Contoh Script:
sid=setsid ();
if(sid<0){
exit(EXIT_FAILURE);
}
if((chdir("/"))<0){
exit(EXIT_FAILURE);
}

● Menutup standar I/O descriptor yang diwarisi

Untuk mencegah terjadinya intervensi dari user serta untuk


pengamanan, maka standar I/O descriptor dan descriptor yang diwarisi dari
proses induk harus ditutup. Ada 3 jenis standar I/O descriptor : STDIN
(standar input), STDOUT (standar output), STDERR (standar error).

# Contoh Script:

close(STDIN_FILENO);
close(STDERR_FILENO);

● Melakukan masking pada File Creation

Sebagian besar daemon bekerja dalam previlege super user. Daemon


biasanya memproteksi setiap file yang dibuat, dengan alasan keamanan.
Fungsi umask() akan mencegah file-file previleges yang tidak aman dalam
setiap pembuatan file.
# Contoh Script:

pid_t pid,sid;
pid=fork();
if(pid < 0)
{
exit(EXIT_FAILURE);}
if(pid > 0)
{
printf("process_id of child process %d \n", pid);
exit(EXIT_SUCCESS);
}
umask(0);

● Running Directory

Directory kerja daemon haruslah sebuah directory yang selalu hidup.


Bisa saja pada saat starting working directory-nya pada saat itu berada
pada user home. Karena daemon bekerja sampai sistem reboot, maka file
sistem user directorynya tidak akan pernah bisa di-unmount.

# Contoh Script :

sid = setsid();
if(sid < 0) {
exit(EXIT_FAILURE);
}
if((chdir(“/home/indra/Desktop/Data/”)) < 0){
exit(EXIT_FAILURE);
}

● Mendengarkan signal

# Tulislah pada kolom di bawah ini, apakah maksud dari proses ini?

Tugas utama dari Daemon adalah mendengarkan request signal. Maka


didalam Daemon haruslah terdapat pendengar signal yang dapat
merespon Daemon dikirimi signal tertentu, hal ini dapat dilakukan dengan
memanggil fungsi signal() untuk menginstall sebuah signal listener. Perlu
diketahui bahwa signal 15 (SIGTERM) dan signal 9 (SIGKILL) tidak dapat
ditangkap oleh signal handler

● Logging

# Sebutkan beberapa cara untuk melakukan proses logging dan


berikan penjelasan!
1. Metode Log File
Semua pesan ditulis ke dalam file tertentu yang diatur di dalam file
konfigurasi daemon tersebut. Kita dapat melakukannya dengan
memanggil fungsi open()
2. Metode Log Server
Sistem operasi UNIX dan keluarganya memiliki daemon khusus yang
digunakan untuk logging yang dinamakan syslogd. Daemon ini
mengelompokkan pesan-pesan menjadi beberapa kelompok (disebut
facility) dan kelompok-kelompok ini dapat dikirim ke tempat-tempat yang
berbeda, misalnya langsung dikirim ke sysadmin lewat email, dikirimkan
ke console terminal semua pengguna yang sedang logged in, atau ditulis
dalam suatu file logger. Konfirmasi dari daemon syslogd ini ditulis dalam
file etc/syslog.conf

1.3.2 Pengenalan Lingkungan Sistem Operasi Linux

Shell

Shell merupakan command executive, yaitu program yang


menunggu instruksi atau perintah dari pemakai, memeriksa sintaks dari
perintah yang diberikan, dan kemudian mengeksekusi perintah tersebut

Shell disebut juga dengan command interpreteur language, artinya


shell adalah bahasa yang menerjemahkan perintah yang menjadi
penghubung secara langsung atau antar muka antara user dengan utilitas
& bahasa pemrograman dari sistem operasi itu sendiri. Contohnya pada
saat kita mengetikkan perintah “ls” di terminal, shell akan menjalankan
perintah tersebut dengan mengeksekusi program “ls” yang ada pada
sistem operasi. Jika kita mengetikkan perintah yang tidak memiliki program
di dalam sistem operasi, misal kita mengetikkan “hello” saja pada terminal,
maka shell tidak akan mengeksekusi program apapun, dan biasanya akan
muncul pesan “command not found”.

# Bagaimana cara menampilkan shell yang tersedia di linux anda?


Tunjukkan screenshot!
1. Macam-macam Shell

Shell sendiri terdiri dari berbagai macam dengan kelebihan dan


kekurangan masing-masing. Untuk melihat langsung shell apa saja yang
ada di inux bisa dengan menggunakan perintah $ls /etc/shells kemudian
enter. Berikut adalah beberapa contoh macam shell yang digunakan pada
Linux:

Shell Developer Lokasi Keterangan

Bourne Steven Shell yang pertama kali ada di


Shell Bourne Unix

(/bin/sh)

Bourne Brian Fox Free Shell BASH merupakan shell


Again Shell dan Chet Software yang paling umum digunakan di
semua sistem operasi Linux
(/bin/bash) Ramey Foundatio
n

C Shell Bill Joy Universitas C Shell adalah shell yang


(/bin/csh) Berkeley mengadopsi perintah
pemrograman C
California

Tenec C TCSH adalah Shell


Shell pengembangan dari UNIX C
Shell
(/bin/tcsh)
Korn Shell Bill Joy AT&T Labs Shell ini menggabungkan
(/bin/ksh) kelebihan Bourne Shell dan C
Shell sehingga lebih interaktif.

Alquimist Kenneth Ash banyak digunakan dalam


Shell Almquist embedded Linux, sistem yang
tertanam misalnya BIOS.
(/bin/ash)

Z Shell Z Shell ini biasa digunakan oleh


(/bin/zsh) pengguna Linux untuk
membangun script yang
kompleks.

# Ketikkan perintah "bash" pada terminal Anda, apa yang akan


muncul? Mengapa muncul seperti itu?

Jika diketikkan pada saat kita menggunakan shell bash maka tidak akan
terjadi apa-apa. Tetapi jika kita menggunakan shell lainnya (selain bash)
maka shell yang kita gunakan akan berubah menjadi shell bash

● Mengganti dan Menjalankan Shell

Linux menggunakan bash sebagai shell default, tetapi pengguna


bisa mengubah shell default untuk tiap user-nya. Untuk melihat shell yang
sedang digunakan oleh user bisa dilihat pada file:

/etc/passwd
.................................
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
.................................
Isi dari file tersebut tiap barisnya dibagi menjadi tujuh bagian, dan
setiap terakhir digunakan untuk mendefinisikan shell yang digunakan.
Dalam contoh di atas user root menggunakan shell Bash sedangkan
daemon menggunakan shell bourne shell.

Cara lain yang bisa digunakan untuk melihat shell adalah dengan
melihat environmet user dengan menjalankan perintah env. Environment
user merupakan lingkungan user yang berisi semua variabel atau ketentuan
khusus untuk user tersebut.

$env
...........
SHELL=/bin/bash
..............

● Mengganti Shell
Ada beberapa cara yang dapat digunakan untuk mengubah shell
default, yaitu dengan utilitas userconf, atau dapat juga dengan mengubah
pada file /etc/passwd tersebut tetapi harus sebagai root.

# Contoh mengganti shell dengan utilitas chsh (change shell) :

● Menjalankan Shell
Sebuah shell dapat dijalankan tanpa harus mengubah default shell-
nya. Cara yang digunakan adalah dengan memanggil nama shell pada
command prompt. Misalnya, user akan menggunakan shell sh, user tinggal
menjalankan shell sh, user tinggal menjalankan sh sehingga prompt akan
berubah sesuai dengan promt Bourne shell.

Untuk keluar dan kembali ke shell default, ketik exit atau tekan Ctrl
+ d.

Contoh :

bash@praktikum:~$ sh
$
$ exit
● Menjalankan Script Shell
Untuk menjalankan sebuah script shell, Ada dua cara yang
digunakan untuk menjalankan sebuah shell script, yaitu:

a) Langsung running dari file [dot]sh-nya.

$ bash hello.sh

b) Ubah Hak Aksesnya.


$ chmod +rwx hello.sh

● Melihat variabel PATH


Untuk melihat variabel path, gunakan perintah:
Syntax:

$ echo $PATH

● Menentukan variabel PATH

Mengatur PATH di bash, ksh atau csh adalah satu dan sama.
Syntax:

$ PATH=$PATH:folder_baru_yang_mengandung_binari

Contoh : $ PATH=$PATH:/usr/share/java

● Menentukan variabel PATH secara permanen


Jika ingin tetap menjaga agar variabel PATH tetap bisa dieksekusi
setelah reboot/restart, maka harus diset secara permanen. Masukan
kalimat:

export PATH=$PATH:/user/share/java

di dalam file ~/.profile atau ~/.bashrc agar dapat digunakan


secara permanen.
Setelah diset, kita perlu menambahkan perintah source di terminal
agar PATH menjadi tersedia dan dapat digunakan.

$ Source ~/.profile atau


$ Source ~/.bashrc

Atau lakukan reboot.


1.3.3 Macam Struktur Sistem Operasi

Sebuah sistem yang besar dan kompleks seperti sistem operasi


modern harus diatur dengan cara membagi tugas ke dalam beberapa
komponen-komponen kecil agar dapat berfungsi dengan baik dan mudah
dimodifikasi. Ada beberapa jenis struktur pembagian komponen sistem
operasi antara lain :

a. Struktur Sederhana
b. Struktur Lapisan
c. Struktur Monolitik
d. Struktur Microkernel
e. Struktur Modular

Berikut penjelasan detail dari masing-masing jenis struktur sistem


operasi:

A. Struktur Sederhana

Ada sejumlah sistem komersial yang tidak memiliki struktur yang cukup
baik. Sistem operasi tersebut sangat kecil, sederhana dan memiliki banyak
keterbatasan. Salah satu contoh sistem tersebut adalah MS-DOS. MS-DOS
dirancang oleh orang-orang yang tidak memikirkan akan kepopuleran
software tersebut. Sistem operasi tersebut terbatas pada perangkat keras
sehingga tidak terbagi menjadi modul-modul. Meskipun MS-DOS
mempunyai beberapa struktur, antar muka dan tingkatan fungsionalitas
tidak terpisah secara baik.

B. Struktur Monolitik

Pada perkembangannya, mulai terjadi pemisahan struktur sistem


operasi yaitu antara bagian kernel dan program sistem. Kernel berada di
bawah tingkat antarmuka system call dan di atas perangkat lunak secara
fisik. Kernel ini berisi system file, penjadwalan CPU, manajemen memori,
dan fungsi sistem operasi lainnya yang ada pada sistem call berupa
sejumlah fungsi yang besar pada satu level. Program sistem meminta
bantuan kernel untuk memanggil fungsi-fungsi dalam kompilasi dan
manipulasi file. Salah satu contoh sistem operasi dengan struktur monolitik
adalah sistem operasi UNIX generasi awal.

C. Struktur Lapisan

Sistem operasi dibagi menjadi sejumlah lapisan yang masing-masing


dibangun di atas lapisan yang lebih rendah. Lapisan yang lebih rendah
menyediakan layanan untuk lapisan yang lebih tinggi. Lapisan yang paling
bawah adalah perangkat keras, dan yang paling tinggi adalah User-
Interface.

D. Struktur Microkernel

Metode ini menyusun sistem operasi dengan mengeluarkan semua


komponen yang tidak esensial dari kernel, dan mengimplementasikannya
sebagai program sistem dan level pengguna. Hasilnya kernel yang lebih
kecil. Pada umumnya mikrokernel mendukung proses dan manajemen
memori yang minimal, sebagai tambahan untuk fasilitas komunikasi.

E. Struktur Modular

Pada struktur modular, kernel hanya menyediakan layanan inti dari


sistem operasi sedangkan layanan lain diimplementasikan secara dinamis
ketika kernel sedang berjalan. Sebagai contoh, layanan inti seperti
penjadwalan CPU dan manajemen memori ditangani langsung oleh kernel,
sedangkan layanan-layanan yang lain seperti dukungan untuk beragam
jenis file system dilakukan pada modul-modul yang dapat dipasang dan
dilepas saat kernel utama berjalan. Modul-modul tersebut dikenal dengan
istilah loadable kernel module.

Salah satu contoh sistem operasi yang memakai pendekatan struktur


modular adalah Linux. Salah satu contoh kernel module di Linux adalah
modul ath3k, ath9k yang berfungsi sebagai device driver untuk perangkat
wifi dengan chipset Atheros. Pada bagian selanjutnya, akan disajikan
contoh kode kernel module sederhana dalam bahasa C beserta cara
kompilasi dan pemasangannya.

Pada bagian ini akan dijelaskan mengenai tahapan kompilasi dan


pemasangan sebuah kernel module sederhana.

1. Sebelum melakukan kompilasi kernel module, terlebih dahulu kita harus


memasang paket yang dibutuhkan antara lain: library header sesuai
versi kernel Linux, gcc (GNU C Compiler) dan make dengan perintah :
sudo apt-get install linux-headers-general make gcc

2. Buat file hello.c dengan editor favorit Anda dengan isi sebagai berikut

hello.c

#include <linux/module.h> /* Needed by all modules */

#include <linux/kernel.h> /* Needed for KERN_INFO */

#include <linux/init.h> /* Needed for the macros */

static int __init hello_start(void){

printk(KERN_INFO "Loading hello module...\n");

printk(KERN_INFO "Hello world Mr. Praktikan\n");

return 0;

static void __exit hello_end(void){

printk(KERN_INFO "Goodbye Mr. Praktikan\n");

module_init(hello_start);

module_exit(hello_end);
Penjelasan source code :

Pada kode hello.c tersebut terdapat dua fungsi callback yang dipanggil
yaitu module_init() dan module_exit(). Fungsi callback
module_init() akan dipanggil ketika kernel module dipasang.
Selanjutnya, fungsi hello_start() sebagai parameter dari
module_init() akan dieksekusi. Pada hello_start() dilakukan
pencetakan string dengan fungsi printk(). Prosedur yang sama
berlaku untuk fungsi module_exit() yang dipanggil ketika sebuah
kernel module dilepas.

3. Buat sebuah file bernama Makefile di direktori yang sama dengan


hello.c. Makefile berisi informasi source code mana yang akan
dikompilasi, lokasi library yang dibutuhkan dan juga output dari proses
kompilasi. Berikut isi Makefile:

Makefile

obj-m = hello.o

KVERSION = $(shell uname -r)

all:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

4. Compile source code dengan perintah:


make

5. Pada direktori tersebut akan muncul file baru yaitu hello.ko. File
tersebut adalah file executable dari kernel module yang kita buat.

6. Pasang kernel module tadi dengan perintah:


sudo insmod hello.ko
7. Cek apakah kernel module berhasil dipasang dengan perintah lsmod.
Jika sudah terpasang dengan benar, maka nama kernel module hello
akan ada pada daftar modul yang terpasang.

8. Cek output dari kernel module setelah dipasang dengan perintah


dmesg.

9. Untuk melepas kernel module hello yang sudah terpasang tadi, kita
dapat memakai perintah:
sudo rmmod hello

10. Cek output dari kernel module setelah dilepas dengan perintah dmesg.
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

NAMA : BAMBANG GUNAWAN TANJUNG


NIM : 185150300111051
TUGAS : BAB II
TANGGAL : 09/09/2019
ASISTEN : MUHAMMAD SULTHON YAZID BASTHOMI

2.4 Tugas

1. Carilah fungsi dari directory berikut:

Direktori Deskripsi

/ Dibaca root yang merupakan direktori paling utama pada


linux yang membawahi semua direktori

/bin Direktori ini berisi program perintah esensial yang


dibutuhkan oleh semua user. Semua program di dalam
direktori ini dapat dijalankan meskipun tidak ada sistem file
lain yang di mount

/dev Direktori ini menyimpan konfgurasi device/hardware pada


sistem

/etc Direktori inilah banyak tersimpan file-file konfgurasi sistem


Linux seperti konfgurasi penjadwalan, service, dll

/home Direktori ini berisi data-data pribadi dari user Linux yang
disimpan seperti hal pada umumnya berisi seperti:
Documents, Downloads, Music, Videos,Dll. Setiap user
memiliki hak akses untuk direktorinya sendiri

/lib Direktori yang menyimpan file-file library dasar dari sistem


termasuk modul drive yang dapat diisi pada sistem boot

/proc Direktori yang berisi file-file khusus yang mempresentasikan


informasi mengenai berbagai aspek dari proses sistem dan
kernel pada Linux

/root Struktur paling dasar yang bisa melakukan: boot,perbaikan


atau mengembalikan sistem seperti keadaan semula.
Dalam struktur paling atas ini harus di buat sesederhana
mungkin dan sebagai direktori user root inti hak akses tak
terbatas
/sbin Direktori yang berisi file-file yang dioperasikan oleh super
user (root) seperti mount, shutdown, unmount dan lain-lain

/tmp Direktori yang berfungsi menyimpan file-file aplikasi yang


sedang berkalan di Linux. File-file tersebut akan terhapus
setiap kali komputer di restart

/usr Direktori yang berfungsi menyimpan aplikasi dan file yang


digunakan oleh user bukan oleh sistem. Misal: LibraOffice
dan Mozila Firefox

/var Direktori ini berfungsi untuk menyimpan informasi history log


sistem, mailbox, web server dan data aplikasi lainnya.

2 Buatlah file dengan nama coba2.txt lalu ubahlah ijin aksesnya dengan 2
cara yaitu biner & alfabet, dimana owner ijin hanya read, group hanya
execute, dan other tidak ada akses sama sekali. (Sertakan Screenshot)

Dengan Cara Biner

Dengan keterangan $ chmod 410 adalah user = 4 = 1 0 0 (read only),


group = 1 = 0 0 1 (execute only), dan other = 0 = 0 0 0 (none)

Dengan cara Alphabet


Dengan keterangan user ditambahkan akses read tetapi dikurangi akses
write dan execute. Group di tambahkan akses executenya tetapi dikurangi
read dan writenya. Other di kurangi read,write dan execute

3 Saya mempunyai script yang berada di /home/sisop/script. Saya


ingin mengeksekusi script saya tanpa menjalankan sh atau bash.
Bagaimanakah caranya?

Ubahlah file permissionnya menjadi dapat di eksekusi dengan cara


$chmod a+x script

Kemudian kita tuliskan perintah apa yang diinginkan didalam script


tersebut. Disini saya membuat perintah untuk membuat file baru didalam
folder sisop dengan nama testJalankanScript jadi nanti apabila script
dijalankan maka akan membuat file baru dengan nama tersebut

Lalu jalankan script tersebut melalui terminal dengan syntax: ./script


Maka hasilnya dapat dilihat, file testJalankanScript pun berhasil dibuat

4 Buatlah 2 groups dengan nama parent dan children dan buatlah user
baru untuk masing-masing groups lalu susunlah groups dan user
tersebut sehingga pengelompokannya menjadi seperti ini:

Parent Children

Joni Ana
Budi Ani

Sertakan Screenshot!

5. Hapuslah user yang telah kalian buat (min 2) beserta home directory-
nya!

6. Buatlah perintah untuk menghitung perkalian aritmatika dengan


menggunakan variabel inputan!
Pertama buatlah isi dari perintah pada aplikasi editor dan beri nama script

Kemudian jalankan file script dengan syntax ./script

7. Coba buatlah sebuah modul kemudian install dan kemudian remove

Buat file hello.c dengan text editor dan save file dengan format .c seperti
gambar di atas
Buat file Makefile dengan text editor dan save file dengan nama yang sama
dan isi seperti gambar di atas . Di dalam 1 folder yg sama dengan hello.c

Kemudian compile seluruh code dengan cara klik kanan pada folder
directori kemudian pilih open terminal dan ketikkan syntax: make
Maka akan terbuat beberapa file baru salah satunya hello.ko

Pasang kernel module tadi dengan perintah $ sudo insmod hello.ko


Cek output dari kernel module setelah dipasang dengan perintah dmesg

Kemudian hapus modul dengan perintah sudo rmmod hello lalu jalankan
dmesg maka akan tampil Goodbye Mr. Praktikan yang menandakan
bahwa modul sudah dihapus
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

NAMA : BAMBANG GUNAWAN TANJUNG


NIM : 185150300111051
KESIMPULAN : BAB II
TANGGAL : 09/09/2019
ASISTEN : MUHAMMAD SULTHON YAZID BASTHOMI

2.5 Kesimpulan

1. Jelaskan pengertian dari CLI beserta kelebihan dan kekurangannya!

CLI atau Command Line Interface adalah salah satu User Interface yang
ada pada Sebuah Sistem Operasi. CLI merupakan media komunikasi
program dengan user. CLI itu sendiri berisi perintah-perintah yang
dimasukkan oleh user dan jika perintah tersebut benar dan tepat maka
akan di olah oleh Terminal dan dilanjutkan ke proses dari Sistem Operasi.

Kelebihan CLI :
- Tidak menggunakan unsur grafis sehingga sangat praktis digunakan
untuk membangun server dengan alasan CLI lebih stabil dan lebih ringan
dari pada menggunakan Interface GUI
- Sangat cepat dalam menjalankan program/fungsi yang tertentu dan
sederhana, contohnya seperti copy file,membuat directory, memanggil
file, menghapus data, bermain dengan kernel dan mengatur urusan yang
lambat dilakukan GUI. Ketika menggunakan CLI kita tidak perlu
berpindah-pindah folder dan menghabiskan banyak langkah, cukup
dengan mengetik dengan benar dan tepat, kita bisa melakukan pekerjaan
seperti membuat,menghapus dan mencopy data.
- Membutuhkan Spesifikasi hardware yang rendah dan tidak begitu
banyak menggunakan kapasitas memori RAM

Kekurangan CLI :
- Tampilan kurang User Friendly dan sangat sulit bagi pemula untuk
menggunakan CLI tanpa panduan. Jadi membutuhkan waktu untuk
mempelajari perintah-perintah CLI
- Sangat case sensitif, jadi mengakibatkan seringnya terjadi kesalahan
pada penulisan perintah
- Tidak bisa melakukan proses-proses berat dan komplex misalnya:
Rendering Foto, Edit Video, Edit Foto dan program-program yang secara
logika hanya bisa dilakukan dengan GUI
- Tampilan sangat membosankan dan tidak interaktif

2. Sebutkan dan jelaskan 5 jenis perintah ls (list directory) beserta


fungsinya!
ls (list directory content) adalah salah satu perintah untuk melihat daftar
sebuah direktori atau direktori aktif (pwd) di dalam lingkungan keluarga
sistem operasi Unix. Perintah ls serupa dengan perintah dir dalam
lingkungan DOS

5 Jenis perintah ls beserta fungsinya :

• -a menampilkan output termasuk file dan folder yang tersembunyi


(hidden file and folder, biasanya diawali dengan '.').
• -l menampilkan output yang lengkap, beserta informasi mengenai
hak akses, pemilik, grup, ukuran, dan tanggal modifikasi.
• -R menampilkan output sub-folder.
• -t menampilkan output dengan mengurutkan waktu
modifikasinya.
• -h menampilkan ukuran yang dapat dibaca oleh manusia (human
readable) seperti 1 K, 4 M, 3 G, dan lain-lain. Biasanya berfungsi
jika dikombinasikan dengan ls -l (dengan mengetikkan 'ls -lh').

3. Jelaskan kegunaan shell dan tunjukkan shell apa saja yang ada pada
Linux!

Shell merupakan command executive, yaitu program yang menunggu


instruksi atau perintah dari pemakai, memeriksa sintaks dari perintah
yang diberikan, dan kemudian mengeksekusi perintah tersebut.
Shell adalah bahasa yang menerjemahkan perintah yang menjadi
penghubung secara langsung atau antar muka antara user dengan
utilitas & bahasa pemrograman dari sistem operasi itu sendiri.

Macam-macam Shell pada Linux :


1. sh atau Bourne Shell : shell asli yang masih digunakan di sistem UNIX
dan beberapa sistem operasi yang berbasis UNIX. Shell ini merupakan
shell dasar, dengan beberapa ftur. Walaupun bukan sebagai standar, sh
masih tersedia untuk menjaga kompabilitas dengan program UNIX

2. bash atau Bourne Shell Again : shell standar bagi program scripting
GNU. Pada Linux. Bash menjadi standar bagi seluruh pengguna. Shell ini
juga sering disebut sebagai tambahan bagi bourne shell
sehinggaperintah yang berjalan di sh, dapat dijalankan pada bash. Tetapi
tidak dapat sebaliknya

3. csh atau C Shell : shell ini adalah rakitan ulang dari bahas
pemrograman C.

4. Tcsh atau Turbo C shell : pengembangan dari C shell biasa, lebih


mengutamakan kemudahan pemakaian dan kecepatan eksekusi
5. Ksh atau Korn Shell : kadang kala digunakan oleh seseorang dengan
latar belakang dan pengalaman menggunakan UNIX. Korn Shell
merupakan pengembangan dari Bourne Shell akan tetapi memiliki
standar konfgurasi yang menyusahkan bagi pengguna awal.

4. Jelaskan fungsi dari hak akses!

Hak akses pada sistem operasi memiliki peran penting dalam menjaga
program atau data agar tidak sembarangan user dapat mengaksesnya.
Selain itu hak akses fle pada sistem operasi linux sangat penting untuk
melindungi data atau fle - fle yang tersimpan didalam sistem operasi
tersebut supaya aman dari pengguna lain. Pada sebuah sistem operasi
linux ada beberapa fle yang tidak dapat diakses oleh user tertentu,hal ini
dikarenakan hak akses yang diberikan oleh user dalam sebuah sistem
operasi

Anda mungkin juga menyukai