Linux Commands Cheat Sheet

Berikut merupakan Cheat Sheet untuk perintah linux yang paling umum digunakan berdasarkan kategori dan dapat digunakan sebagai referensi baik untuk pengguna dasar atau berpengalaman.

cheat linux

Useful Commands

Menghapus Package di Ubuntu

apt-get --purge -y remove mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

Membuat User

Membuat user baru dengan home directory:

useradd -m -d /home/user user

Membuat user baru dengan menentukan shell (contoh: shell non-login):

useradd -m -d /home/user -s /sbin/nologin user

Membuat user sistem dengan opsi tambahan:

adduser --system --shell /bin/bash --group --disabled-password --home /home/user user

Menghapus User

Menghapus user beserta home directory dan file terkait:

userdel -rfRPZ user

Melihat Proses dengan Penggunaan CPU Tertinggi

Gunakan perintah berikut untuk melihat proses yang menggunakan CPU paling tinggi:

ps H -eo pid,pcpu | sort -nk2 | tail

Contoh output:

$ ps H -eo pid,pcpu | sort -nk2 | tail
31396  0.6
31396  0.6
31396  0.6
31396  0.6
31396  0.6
31396  0.6
31396  0.6
31396  0.6
30904  1.0
30914  1.0

Dari output tersebut, terlihat bahwa PID 30914 dan 30904 menggunakan CPU paling tinggi.

Catatan: Karena menggunakan opsi H (Threads view), satu proses bisa muncul beberapa kali tergantung jumlah thread yang aktif.

Melihat Pemakaian RAM dari Setiap PID

Gunakan perintah berikut untuk melihat penggunaan RAM oleh masing-masing proses, serta menghitung total penggunaan RAM:

ps -eo pid,rss= | sort -nk2 | awk '{printf "PID: %s, RAM Usage: %.2f MB\n", $1, $2/1024; sum+=$2} END {print "\nTotal RAM Usage: " sum/1024 " MB"}'

Mengetahui Service dari PID

Gunakan perintah berikut untuk mencari informasi service atau proses berdasarkan PID:

ps aux | grep 30914

Atau bisa juga dengan melihat isi direktori /proc untuk PID tersebut:

ls -l /proc/30914

Memeriksa Status Koneksi pada Port Tertentu

Untuk melihat koneksi yang menggunakan port tertentu, misalnya port 80, gunakan:

netstat -nap | grep :80

Atau alternatif lainnya:

lsof -i :80

Melihat Jumlah Thread

Untuk mengetahui jumlah total thread yang berjalan di sistem:

ps -eLf | wc -l

Menemukan File Log Berukuran Besar

Mencari file log yang ukurannya lebih dari 1000MB:

find / -name '*log*' -size +1000M -exec du -h {} \;

Metode alternatif:

  1. Menggunakan du dan sort untuk menemukan file atau direktori yang mengandung kata “log”:
    du -a / | sort -rn | grep log | more
    
  2. Menggunakan find dan ls untuk menampilkan file log berurutan berdasarkan ukuran:
    find / -type f -name "*log*" | xargs ls -lSh | more
    

Monitoring Disk I/O

Untuk memantau aktivitas disk secara real-time:

iotop -o

Opsi -o hanya menampilkan proses yang aktif melakukan I/O.

Menemukan File Berdasarkan User Tertentu

Untuk menemukan file yang dimiliki oleh user dengan UID 1000:

find / -uid 1000 -ls

Catatan: Gunakan / (root) sebagai lokasi pencarian agar menjangkau seluruh filesystem, bukan hanya di direktori saat ini (.).

Menemukan File Berdasarkan Tanggal Tertentu

Gunakan perintah berikut untuk mencari file berdasarkan waktu:

find /path/to/directory -type f -newerXY 'yyyy-mm-dd' -ls

Penjelasan huruf X dan Y:

  • a — Waktu terakhir file diakses (access time)
  • B — Waktu file dibuat (birth time) (tidak selalu tersedia di semua filesystem)
  • c — Waktu perubahan metadata inode (change time)
  • m — Waktu terakhir file dimodifikasi (modification time)
  • t — Waktu referensi dibandingkan langsung dengan waktu tertentu

Contoh Penggunaan

  1. Mencari file yang diakses pada tanggal tertentu:

    find / -type f -newerat '2024-07-07' ! -newerat '2024-07-08' -ls
    
    • -newerat '2024-07-07' — File yang diakses setelah 7 Juli 2024.
    • ! -newerat '2024-07-08' — Tapi tidak setelah 8 Juli 2024, sehingga hanya yang tepat di tanggal 7.
  2. Mencari file yang dimodifikasi pada hari tertentu menggunakan format lain:

    find /path/to/directory -type f -newermt "Oct 13" ! -newermt "Oct 14"
    
    • -newermt "Oct 13" — File yang dimodifikasi setelah 13 Oktober.
    • ! -newermt "Oct 14" — Tetapi tidak setelah 14 Oktober.

Generate Password

1. Generate strong password 24 karakter (Alfanumerik):

cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 24

2. Generate strong password 24 karakter (Alfanumerik + Simbol):

cat /dev/urandom | tr -dc 'A-Za-z0-9!@#$%^&*()' | head -c 24

3. Generate banyak password sekaligus (bulk passwords):

cat /dev/urandom | tr -dc 'A-Za-z0-9!@#$%^&*()' | fold -w 24 | head -n 23
  • fold -w 24 memotong output setiap 24 karakter.
  • head -n 23 menampilkan 23 password.

Untuk mencari dan menampilkan semua symlink:

find /path/to/search -type l -ls

Untuk mengubah owner symlink.

chown -h www-data:www-data /var/www/html/storage
  • Opsi -h memastikan perubahan hanya pada symlink, bukan pada target file.

Mengecek Tanggal Expired SSL Certificate

Untuk mengecek kapan SSL certificate akan kadaluarsa:

date -d "$(openssl x509 -in /path/to/cert.pem -text -noout | grep 'Not After' | cut -c 25-)"
  • openssl x509 -in /path/to/cert.pem -text -noout akan menampilkan informasi sertifikat.
  • grep 'Not After' mencari baris expired date.
  • cut -c 25- mengambil tanggal mulai dari karakter ke-25.
  • date -d mengubah format output ke format tanggal lokal.

Catatan: Pastikan file .pem sudah berisi sertifikat dalam format yang benar.

Mengubah Tanggal pada File

Untuk mengubah timestamp file ke waktu tertentu:

touch -d "2023-10-05 15:30:00" nama_file.txt
  • -d menentukan tanggal dan waktu yang ingin diset.
  • Bisa digunakan untuk file baru ataupun file yang sudah ada.

Mengecek IP Address

Anda dapat mengecek alamat IP pada sistem Linux menggunakan perintah berikut:

ip -br addr

Perintah ini menampilkan informasi alamat IP dalam format ringkas dan mudah dibaca.

Alternatif lainnya, Anda bisa menggunakan perintah ifconfig (pastikan paket net-tools telah terinstal):

ifconfig | awk '/^[a-zA-Z]/ {iface=$1} /inet / {print iface, $2}'

Perintah ini akan menampilkan nama interface beserta alamat IP.

Useful Scripts

Rename file

Script berikut akan mengubah semua nama file dengan awalan “Copy of”.

for file in "Copy of "*; do
    newname="${file/#Copy of /}"
    mv "$file" "$newname"
done

Simulasi

$ ls -l
'Copy of write1.txt'
'Copy of write2.txt'

$ bash script.sh; ls -l
write1.txt
write2.txt

Backup database.

Berikut adalah script Bash yang dapat Anda gunakan untuk membackup database.

#!/bin/bash

# Direktori untuk menyimpan backup
BACKUP_DIR="/path/to/backup"

# Nama database yang akan di-backup
DATABASE_NAME="nama_database"

# Mendapatkan tanggal dan waktu saat ini
TIMESTAMP=$(date +"%Y%m%d%H%M")

# Membuat backup database
mysqldump -u username -p password $DATABASE_NAME | gzip > $BACKUP_DIR/backup_$TIMESTAMP.sql.gz

# Menghapus backup lebih dari 5
cd $BACKUP_DIR
ls -1tr | grep "backup_" | head -n -5 | xargs -d '\n' rm -f

Selanjutnya, atur penjadwalan backup menggunakan crontab sesuai kebutuhan.

crontab -e
# Penjadwalan crontab untuk menjalankan script setiap 1 jam
0 * * * * /path/to/your/script.sh

Backup file

Berikut adalah script Bash yang dapat Anda gunakan untuk membackup file.

#!/bin/bash

# Direktori yang akan di-backup
SOURCE_DIR="/path/to/source"

# Direktori untuk menyimpan backup
BACKUP_DIR="/path/to/backup"

# Mendapatkan tanggal dan waktu saat ini
TIMESTAMP=$(date +"%Y%m%d%H%M")

# Membuat backup direktori
tar -czf $BACKUP_DIR/backup_$TIMESTAMP.tar.gz -C $SOURCE_DIR .

# Menghapus backup lebih dari 5
cd $BACKUP_DIR
ls -1tr | grep "backup_" | head -n -5 | xargs -d '\n' rm -f

Selanjutnya, atur penjadwalan backup menggunakan crontab sesuai kebutuhan.

crontab -e
# Penjadwalan crontab untuk menjalankan script setiap 1 jam
0 * * * * /path/to/your/script.sh

Menjalankan sudo dengan Password dalam Bash Script

Untuk menjalankan perintah sudo dengan memasukkan password secara otomatis di dalam skrip Bash, Anda dapat menggunakan perintah berikut:

echo "password_anda" | sudo -S chown -R web1: "$LOCAL_BACKUP_DIR/"

Penjelasan:

  • echo "password_anda": mencetak password ke output standar.
  • sudo -S: menerima password dari input standar (stdin).
  • chown -R web1:: mengubah kepemilikan direktori dan seluruh isinya menjadi milik user web1.
  • "$LOCAL_BACKUP_DIR/": direktori yang akan diubah kepemilikannya.

⚠️ Peringatan Keamanan: Menyimpan password dalam bentuk teks biasa di dalam skrip adalah praktik yang sangat tidak disarankan karena berisiko tinggi terhadap keamanan. Sebaiknya gunakan metode yang lebih aman seperti konfigurasi sudoers untuk mengizinkan perintah tertentu dijalankan tanpa password.