Linux merupakan sistem operasi terbuka yang bisa dimodifikasi dan dikembangkan. Biasanya linux digunakan untuk menangani jaringan. Pertama kali dikembangkan oleh Linus Torvalds pada tahun 1991. Komponen mayor dari linux ada 5, yaitu kernel (driver), daemons (process), applications, data files, dan configuration files. Linux biasanya diakses melalui CLI atau command line interface, meskipun demikian tersedia juga dalam bentuk GUI atau graphical user interface. Kernel atau kalau di windows disebut driver merupakan komponen yang cukup krusial, sebab jika tidak dipatching sebelum update maka memungkinkan terjadinya crash atau bug. Ada 3 distro besar di linux, yaitu fedora, debian, dan openSUSE, distro ubuntu merupakan turunan dari debian sedangkan red hat merupakan turunan dari fedora. Distro red hat ini berbayar karena kita bisa bertanya jika terjadi error. Distro red hat memiliki kedekatan dengan CentOS karena distro CentOS merupakan distro gratis yang diharapkan menjadi jembatan sebelum menggunakan red hat.
Begitu linux di-install maka akan muncul di CLI untuk login (masukan user name) dan password (masukan kata sandi). Ada 3 syntax standar yang digunakan, yaitu man (untuk melihat man page), -i (mencari dengan case-insensitive), dan whoami (untuk mengetahui siapa yang login). Sedangkan untuk mengetahui identitas baik uid, gid, maupun groups bisa menggunakan syntax id. Nama host juga bisa diketahui melalui syntax hostname. Berikut daftar syntax yang mungkin dibutuhkan:
- uptime : mengetahui panjang waktu sistem sejak boot
- date : melihat tanggal
- cal : melihat kalender
- clear : menghapus layar
- echo : seperti print pada python atau console.log di JavaScript
- history : melihat apa yang telah dilakukan user
- touch : membuat file dengan ekstensi tertentu
- cat : menampilkan isi file
- ls -l 1>folder.txt : menyimpan data permission ke file folder.txt
- find / -name "*" -print 2> / dev/null : mencetak pesan error
- ls : melihat file yang ada di lokasi saat ini
- pwd : mengetahui lokasi saat ini
 |
sumber: vitalsource.com |
Cara untuk membuat user account menggunakan syntax: useradd (nama user), nah, untuk melihat user yang telah dibuat bisa menggunakan syntax: id (nama user). Berikut syntax penting untuk user atau group:
- useradd -c "new employee" jdoe : membuat user baru bernama jdoe dengan komentar new employee
- useradd -e 2025-01-01 jdoe : membuat user baru bernama jdoe dengan expired date 1 Januari 2025
- useradd -d /users/jdoe jdoe : membuat user baru bernama jdoe dengan path home directory di /users/jdoe
- userdel -r jdoe : menghapus user dengan nama jdoe
- passwd (nama user) : memberikan password ke user tertentu
- groupadd (nama group) : membuat grup
- groupdel (nama group) : menghapus grup
- groupmod -n (nama grup baru) (nama group lama) : mengubah nama grup
- tail -n 3 /etc/group : melihat daftar group 3 terakhir
- usermod -aG (nama grup pertama),(nama grup kedua) (nama user) : memasukan user ke dalam dua grup yang berbeda
- gpasswd -a (nama user) (nama grup) : memasukkan satu user ke dalam satu grup
Pengguna linux memiliki 2 kategori yaitu root user(#) dan standard user($). Root user memiliki otoritas tertinggi, dia bisa membuat standard user termasuk mengubah dan menghapusnya. Untuk pindah ke root user bisa menggunakan syntax: su root. Su merupakan kependekan dari switch user. Di bawahnya ada sudo yang merupakan kependekan dari superuser do. Bedanya kalau su memiliki full administrative permission sedangkan sudo hanya memiliki permission yang didelegasikan.
Untuk membuat teks di linux ada 3 cara, yaitu melalui Vim, GNU nano, dan gedit. Pilihan untuk mengedit teks opsional bagi pengguna linux artinya bergantung kenyamanan. Secara user interface lebih mudah menggunakan GNU nano. Khusus untuk gedit hanya bisa dilakukan di GUI atau graphical user interface. Syntax yang digunakan untuk membuat file adalah: nano (nama file.ekstensi). Jika file yang sudah dibuat begitu banyak sehingga sulit untuk mencarinya satu per satu maka bisa menggunakan syntax grep, seperti:
- ls -l | grep .txt : cari file atau folder dengan ekstensi .txt
- ls -l | grep index : cari file atau folder dengan nama yang mengandung index
Ada 9 directories yang penting diketahui di linux, yaitu:
- / : root of the file system
- /boot : boot files and kernel
- /dev : devices
- /etc : configuration files
- /home : standard users' home directories
- /media : removable media
- /mnt : network drives
- /rott : root user home directory
- /var : log files, print spool, network services
Syntax ls digunakan untuk menampilkan file atau folder di posisi saat ini. Syntax tersebut dapat dikombinasikan dengan -l (long format), -h (human friendly report), -a (show all files even hidden files), -R (menampilkan subdirectories. Untuk melakukan duplikasi file bisa menggunakan syntax cp, perhatikan contoh:
- cp file.txt file1.txt : membuat duplikasi dari file.txt dengan nama file1.txt
- cp (nama file) (destination) : membuat duplikasi dengan lokasi tertentu
- rm (nama file) : menghapus file
- mkdir (nama directories) : membuat directories
- mv (nama file atau directories) (lokasi yang dituju) : memindahkan file atau direktori
- rmdir (nama directory) : menghapus directory
- pwd : mengetahui posisi saat ini
- hash : melihat proses yang sedang running
- cksum (nama file) : melihat value dari file biasanya untuk melihat terjadinya corrupt saat transfer
- find (nama file atau directory) : menemukan nama file atau directory secara persis
- grep (pattern) : menemukan nama file atau directory sesuai pattern tertentu
- diff (file1) (file2) : membandingkan dua file
- tar -cvf (nama kompres).tar file1 file2 : membuat kompres file1 dan file2
- tar -xf (namaFile.tar) : untuk dekompres file .tar
- gzip (namaFile.tar) : membuat file lebih terkompres
- gzip -d (namaFile.tar.gz) : untuk dekompres file.tar.gz
Manajemen file di linux menggunakan kode rwx, r artinya read yaitu file bisa dibaca, w artinya write yaitu file bisa diedit, dan x artinya execute yaitu untuk file eksekusi di linux. Secara default baik root user maupun user standard bisa mengubah permission sebuah file dengan syntax: chmod (kode permission) (nama file yang akan diubah). Pengubahan permission ini ada 2 jenis, yaitu simbolik dan absolut. Sebelum mengganti permission sebuah file perlu diketahui permission dari file tersebut saat ini dengan syntax: ls -l.
 |
sumber: vitalsource.com |
Gambar diatas menunjukkan siapa yang memiliki permission atas sebuah file, permission untuk user artinya khusus untuk user tersebut saja yang bisa mengakses, sedangkan permission group artinya setiap user yang masuk ke dalam grup bisa menggunakan permission tersebut, dan other permission artinya selain user dan group. Untuk mengubah permission dengan cara simbolik maka ada beberapa simbol yang perlu diketahui, yaitu:
- Identity
- u : user
- g : guest
- o : other
- Permission
- r : read
- w : write
- x : execute
- Operator
- + : menambah permission yang sebelum -
- - : menghapus permission yang sebelumnya sudah ada
- = : mengganti permission yang lama menjadi yang baru
- Contoh penggunaan:
- chmod u+r file.txt : mengubah permission file.txt menjadi read untuk user
- chmod u-r file.txt : mengubah permission file.txt menjadi -
- chmod u=x file.txt : mengubah permission file.txt yang sebelumnya r menjadi x
Sedangkan untuk absolute mdoe perhatikan simbol dibawah:
- Read : 4
- Write : 2
- Execute : 1
- All permision : 7
- Contoh penggunaan:
- chmod 400 file.txt : mengubah permission menjadi r--------
- chmod 637 file.txt : mengubah permission menjadi rw--wxrwx
Selain mengubah permission, bekerja dengan command yang ada di linux menjadi krusial sebab itu adalah jalan untuk berinteraksi dengan sistem linux. Metacharacter yang perlu diketahui seperti * (star/wildcard/all), ? (hook/wildcard), ; (command chain), ~ (home directory), dan - (previous working directory). Contoh penggunaan star untuk menduplikasi data:
- touch file.txt
- touch file1.txt
- mkdir file
- cp *.txt file/
- perintah di atas akan membuat file duplikasi yaitu file.txt dan file1.txt kemudian ditempatkan di directory file
Cara menghapus file dengan hook:
- touch file2019.txt
- touch file2020.txt
- touch file2021.txt
- touch file2022.txt
- rm file202?.txt
- perintah di atas akan membuat file dengan awalan file202 dan satu karakter apapun untuk dihapus
Untuk dapat memanipulasi teks perhatikan syntax di bawah:
- sort (nama file) : otomatis data yang ada di dalam file akan diurutkan secara alfabet
- sort -r (nama file) : otomatis data yang ada di dalam file akan diurutkan terbalik dari alfabet
- sort -u (nama file) : mengurutkan dengan menghapus duplikat (biasanya digunakan untuk log)
- sort -M (nama file) : mengurutkan berdasarkan Month (bulan)
Seperti sistem operasi lain yang menjalankan proses baik itu proses sistem atau proses aplikasi maka di linux juga demikian. Proses yang besar biasanya akan memiliki child process. Perhatikan syntax di bawah:
- echo $PATH : melihat path secara spesifik
- ps : melihat proses yang sedang berjalan
- ps -ef : melihat seluruh proses yang sedang berjalan walaupun hidden
- ps -e : melihat seluruh proses (hidden juga) tetapi lebih ringkas
- pstree : melihat proses yang sedang berjalan dengan format tree
- top : melihat rangkuman proses sistem real-time
- killall -9 less : akan menghentikan proses dengan cmd less
- jobs : menampilkan proses yang dimulai oleh user dengan urutan
- at : untuk menjalankan proses
- crontab -e : edit crontab file dengan root user
- sudo systemctl status httpd : setelah install httpd maka diperiksa statusnya apakah berjalan
- lscpu : menampilkan informasi dari cpu
- lshw : menampilkan daftar hardware
- du : memeriksa ukuran file dan direktori
- df : melihat disk free
- vmstat : melihat apakah menggunakan virtual memory
- free : melihat apakah menggunakan physical memory
- uptime : mengetahui sudah berapa lama sistem digunakan sejak diaktifkan
Kode sederhana juga dimungkinkan untuk dibuat di linux command line. Syntax echo mirip penggunaannya seperti console.log pada JavaScript. Memang mempelajari linux akan mirip-mirip mempelajari bahasa pemrograman php. Perhatikan syntax bash shell:
- namasaya="ronaldo"
- echo $namasaya
- maka akan menghasilkan ronaldo
Perhatikan penggunaan syntax echo yang lain serta penggunaan alias:
- echo $USER : untuk mencetak nama user
- echo $HOME : untuk mencetak path home
- echo $SHELL : untuk mencetak path bash
- alias ll='ls -l' : cara singkat untuk mendapatkan ls -l dengan ll saja
- unalias ll : menghapus cara singkat (short hand)
- nano ~/.bashrc : menambahkan alias di file bashrc
Kalau di windows ada file eksekusi seperti .exe maka di linux file eksekusi berformat .sh. Sebelum melakukan eksekusi tentu file .sh tersebut perlu diubah permissionnya menjadi x atau execute. Perhatikan langkah pembuatannya:
- Buat file script.sh
- Kemudian edit dengan nano
- Misalnya saat script.sh dijalankan akan menampilkan 'Hello World', gunakan shebang (#!/bin/bash)
- #!/bin/bash
- echo 'Hello World'
- Simpan file yang diedit dengan nano tersebut kemudigan gunakan syntax dibawah untuk menjalankannya:
- Jika berhasil akan tampil frasa Hello World
Perhatikan pembuatan syntax untuk mengimplementasikan operator:
- Buat file script.sh dan gunakan syntax:
- #!/bin/bash
- sum=$(($1 + $2))
- echo $1 + $2 equals $sum
- Jalankan syntax dengan
- Jika berhasil akan muncul 4 + 5 equals 9
Hati-hati dalam melakukan bash shell scripting karena whitespace itu menjadi penting, hal ini tentu berbeda dengan misalnya JavaScript yang tidak terlalu memperhatikan whitespace. Selain mencetak karakter dan melakukan operasi, di bash shell scripting juga ada conditional dan looping statements. Perhatikan statements di bawah:
- Conditional statements
- #!/bin/bash
- if [ cp file1 /tmp ];
- then
- rm file1
- fi
- Looping statements
- for
- #!/bin/bash
- for x in 1 2 3 4 5 a b c d
- do
- echo "the value is $x"
- done
- until
- #!/bin/bash
- counter=1
- until [ $counter -gt 10 ];
- do
- echo $counter
- ((counter++))
- done
- echo "loop exited"
- echo "counter equals $counter"
- while
- #!/bin/bash
- counter=1
- while [ $counter -le 10 ];
- do
- echo $counter
- ((counter++))
- if [ counter == $1 ];
- then
- break
- fi
- done
- echo "loop exited"
- echo "counter equals $counter"
Di dalam statement ada yang dikenal sebagai exit way yaitu exit 0 (tidak ada error), exit 1 (ada error), dan exit n (ada error yang spesifik).
Kernel dalam linux sangat penting karena jika terjadi masalah maka akan menghambat proses bahkan bisa menghentikan proses. Kernel itu mirip seperti driver di windows. Patching adalah salah satu metode yang digunakan untuk menyeragamkan instalasi dari kernel yang ada di linux. Sayangnya linux memiliki beberapa distro yang membuat cara untuk manajemen perangkat lunak berbeda. Sedikitnya ada 2 pendekatan, yaitu red hat method dan debian method. Untuk mendownload update-an misalnya ada dua metode yaitu wget dan curl. Sebaiknya menggunakan wget jika hendak mendownload sebab dengan wget jika terjadi proses download yang berhenti maka bisa dilanjutkan sedangkan dengan curl akan membuat proses download dimulai dari awal.
Selain manajemen perangkat lunak di linux juga perlu dilakukan manajemen log yaitu aktivitas yang terjadi di sistem operasi. Ada 8 level keamanan log di linux, yaitu:
- 0 - emergency (sistem menjadi tidak stabil)
- 1 - alert (aksi dibutuhkan)
- 2 - critical (sistem mungkin tidak dibutuhkan)
- 3 - error (kondisi error yang tidak kritis)
- 4 - warn (peringatan)
- 5 - notice (normal events)
- 6 - info (informasi umum)
- 7 - debug (informasi debug)
Biasanya seorang manajer log akan melihat apa aktivitas pertama atau aktivitas terakhir. Nah, untuk memudahkan untuk melihatnya bisa menggunakan syntax head dan tail. Karena biasanya banyak sekali log yang ada teknik pencarian dengan pip ( | ) dan grep cukup sering digunakan. Ada 9 file log yang penting, yaitu:
- /var/log/syslog - store system information
- /var/log/secure - authentication information red hat
- /var/log/kern - linux kernel information
- /var/log/boot.log - startup message
- /var/log/maillog - mail message
- /var/log/daemon.log - running background service
- /var/log/auth.log - authentication information debian
- /var/log/cron.log - schedule task
- /var/log/httpd - apache information for red hat
Untuk melihat login terakhir gunakan syntax lastlog.
ref:
awsrestart.instructure.com