0Pricing
Linux Server Deployment & SSH Mastery · Pelajaran

Penanganan Kesalahan dan Pencatatan dalam Skrip

Terapkan penanganan kesalahan yang kuat, alihkan keluaran skrip, dan buat catatan yang bermakna untuk memantau eksekusi skrip serta memecahkan masalah.

Penanganan Kesalahan dan Pencatatan dalam Skrip adalah pelajaran Linux Server Deployment & SSH Mastery gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Linux Server Deployment & SSH Mastery, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Linux Server Deployment & SSH Mastery mencakup 4 pelajaran total.

Jadikan Skrip Anda Andal

Bayangkan skrip Anda berjalan di server dan melakukan pekerjaan penting. Apa yang terjadi jika sesuatu berjalan tidak semestinya?

  • Apakah skrip gagal secara diam-diam?
  • Apakah skrip meninggalkan kekacauan?
  • Dapatkah Anda mengetahui kapan dan mengapa skrip gagal?

Skrip yang tangguh menangani galat dengan baik dan menyediakan log yang jelas. Pelajaran ini mengajarkan caranya!

Memahami Kode Keluar

Setiap perintah dan skrip di Linux mengembalikan kode keluar (atau status keluar) saat selesai. Angka ini memberi tahu Anda apakah perintah atau skrip tersebut berhasil atau gagal.

  • 0: Berarti berhasil! Semuanya berjalan lancar.
  • 1-255: Berarti gagal. Angka tertentu mungkin menunjukkan jenis galatnya.

Mari kita lihat cara kerjanya:

#!/bin/bash
# This script demonstrates exit codes

echo "Attempting a successful command..."
ls /tmp
echo "Exit code for 'ls /tmp': $?"

echo

echo "Attempting a failing command..."
ls /nonexistent_directory
echo "Exit code for 'ls /nonexistent_directory': $?"

Memeriksa Status Perintah

Setelah perintah apa pun berjalan, Anda dapat memeriksa kode keluarnya menggunakan variabel khusus $?. Ini sangat berguna untuk membuat keputusan dalam skrip Anda.

Anda dapat menggunakan pernyataan if untuk merespons keberhasilan atau kegagalan:

#!/bin/bash
# Check if a file exists before trying to read it

FILENAME="test_file.txt"
touch $FILENAME # Create it for success case

if [ -f "$FILENAME" ]; then
  echo "File '$FILENAME' exists. Processing..."
  # ... do something with the file ...
  rm $FILENAME # Clean up
else
  echo "Error: File '$FILENAME' not found!"
  exit 1
fi

echo "Script finished."

`set -e`: Keluar saat Terjadi Galat

Untuk skrip sederhana, memeriksa $? secara manual di setiap tempat dapat melelahkan. Perintah set -e mengubah perilaku skrip Anda:

  • Jika ada perintah yang keluar dengan status bukan nol (gagal), skrip segera dihentikan.
  • Hal ini mencegah skrip melanjutkan proses dengan data yang mungkin rusak atau keadaan yang tidak valid.

Cobalah menjalankan skrip ini. Apa yang terjadi jika perintah cp gagal?

#!/bin/bash
set -e

echo "Starting important operations..."
mkdir my_temp_dir
cp /nonexistent_source my_temp_dir/target # This will fail

echo "This line will not be reached if cp fails."
rmdir my_temp_dir
echo "Script finished successfully."

`trap` untuk Pembersihan

Terkadang, meskipun skrip gagal, Anda perlu melakukan tugas pembersihan, seperti menghapus berkas sementara. Perintah trap memungkinkan Anda menangkap sinyal (seperti keluar atau galat) lalu menjalankan sebuah perintah.

  • EXIT: Berjalan saat skrip keluar, baik berhasil maupun gagal.
  • ERR: Berjalan saat sebuah perintah keluar dengan status bukan nol (jika set -e aktif).

Di sini, kita memastikan direktori sementara selalu dihapus:

#!/bin/bash

TEMP_DIR="/tmp/my_script_temp_$(date +%s)"

function cleanup {
  echo "Cleaning up temporary directory: $TEMP_DIR"
  rm -rf "$TEMP_DIR"
}

trap cleanup EXIT

mkdir "$TEMP_DIR"
echo "Working in $TEMP_DIR..."
# Simulate some work, maybe it fails
# cp /nonexistent_file "$TEMP_DIR/" # Uncomment to test failure

echo "Script completed."

Mengalihkan Output

Saat skrip Anda berjalan, skrip sering mencetak pesan. Pesan ini terdiri dari dua jenis utama:

  • Output Standar (stdout): Pesan biasa (deskriptor berkas 1).
  • Galat Standar (stderr): Pesan galat (deskriptor berkas 2).

Anda dapat mengalihkan aliran ini ke berkas, bukan ke layar:

  • command > file: Mengalihkan stdout ke file.
  • command 2> file: Mengalihkan stderr ke file.

Mari kita simpan pesan keberhasilan dan galat secara terpisah.

#!/bin/bash
# Redirect stdout to success.log and stderr to error.log

echo "This is a success message." > success.log
ls /nonexistent_path 2> error.log

echo "Check success.log and error.log files."
# To view them after running:
# cat success.log
# cat error.log

Semua Output ke Satu Berkas

Sering kali, menyimpan output standar dan galat standar dalam satu berkas log akan memudahkan peninjauan. Ada beberapa cara untuk melakukannya:

  • command > file 2>&1: Mengalihkan stdout ke file, lalu mengalihkan stderr ke tujuan stdout (yaitu berkas tersebut).
  • command &> file: Sintaks yang lebih singkat dan modern untuk hal yang sama.

Ini sangat baik untuk membuat log menyeluruh tentang eksekusi skrip Anda.

#!/bin/bash
# Redirect both stdout and stderr to a single log file

LOG_FILE="combined_script.log"

echo "Starting script..." &> "$LOG_FILE"
echo "This message goes to stdout." &>> "$LOG_FILE"
ls /nonexistent_dir 2>&1 | tee -a "$LOG_FILE"
echo "Script finished." &>> "$LOG_FILE"

echo "Check the '$LOG_FILE' file for all output."

Tambahkan Stempel Waktu pada Log Anda

Saat melakukan pengawakutuan, mengetahui kapan suatu peristiwa terjadi sangatlah penting. Menambahkan stempel waktu ke pesan log membuatnya jauh lebih berguna.

Anda dapat menambahkan tanggal dan waktu saat ini di awal setiap entri log menggunakan perintah date. Hal ini membantu melacak peristiwa berdasarkan urutan kronologis.

#!/bin/bash

LOG_FILE="timestamped_script.log"

function log_message {
  echo "$(date +%Y-%m-%d_%H:%M:%S) - $1" &>> "$LOG_FILE"
}

log_message "Script started."
sleep 1
log_message "Performing task A..."
# Simulate an error
ls /no_such_place || log_message "Error: Command failed."
sleep 1
log_message "Script finished."

echo "Check '$LOG_FILE' for timestamped entries."

Kirim ke Log Sistem dengan `logger`

Untuk peristiwa penting, Anda mungkin ingin mengirim pesan langsung ke fasilitas pencatatan sistem (syslog). Perintah logger melakukan hal tersebut.

  • Log sistem sering dikelola oleh alat seperti journalctl (pada sistem systemd).
  • Hal ini memusatkan pesan penting dari skrip Anda bersama peristiwa sistem lainnya.
  • Fitur ini berguna untuk galat kritis atau jejak audit.

Pesan yang dikirim dengan logger dapat ditemukan menggunakan journalctl -f atau tail -f /var/log/syslog (tergantung sistem Anda).

#!/bin/bash
# Send a message to system logs

SCRIPT_NAME="MyBackupScript"

logger -t "$SCRIPT_NAME" "Starting daily backup operation."

# Simulate a task
sleep 2
if [ $(($RANDOM % 2)) -eq 0 ]; then
  logger -t "$SCRIPT_NAME" -p user.info "Backup successful."
else
  logger -t "$SCRIPT_NAME" -p user.err "Backup failed: Disk full."
fi

echo "Messages sent to system logs. Check with 'journalctl -t $SCRIPT_NAME'."

Pemeriksaan Penanganan Galat

Anda telah menulis skrip Bash untuk memproses beberapa berkas. Anda ingin skrip segera keluar jika ada perintah di dalamnya yang gagal, dan Anda juga ingin memastikan direktori sementara dibersihkan, apa pun cara skrip tersebut keluar.

Perintah Bash mana yang terutama akan Anda gunakan untuk mencapai hal ini?

Ringkasan & Langkah Berikutnya

Anda telah mempelajari cara membuat skrip Bash yang lebih tangguh dan lebih mudah di-debug!

  • Kode Keluar: Memahami keberhasilan atau kegagalan perintah.
  • set -e: Keluar secara otomatis saat terjadi galat.
  • trap: Melakukan tindakan pembersihan saat skrip keluar.
  • Pengalihan Output: Mengatur tujuan stdout dan stderr.
  • Stempel Waktu: Menambahkan konteks ke log Anda.
  • logger: Terintegrasi dengan pencatatan seluruh sistem.

Dengan menerapkan teknik ini, tugas otomatis Anda akan menjadi lebih andal dan mudah dikelola. Teruslah berlatih untuk membangun otomatisasi yang benar-benar tangguh!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penanganan Kesalahan dan Pencatatan dalam Skrip” gratis?

Ya — teks lengkap “Penanganan Kesalahan dan Pencatatan dalam Skrip” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Linux Server Deployment & SSH Mastery, upgrade ke CoddyKit PRO. Kursus Linux Server Deployment & SSH Mastery mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Penanganan Kesalahan dan Pencatatan dalam Skrip”?

Terapkan penanganan kesalahan yang kuat, alihkan keluaran skrip, dan buat catatan yang bermakna untuk memantau eksekusi skrip serta memecahkan masalah. Kamu berlatih Linux Server Deployment & SSH Mastery dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Linux Server Deployment & SSH Mastery?

Tidak diperlukan pengalaman sebelumnya. Linux Server Deployment & SSH Mastery di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Penanganan Kesalahan dan Pencatatan dalam Skrip” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Linux Server Deployment & SSH Mastery ini?

Ya. Setiap pelajaran Linux Server Deployment & SSH Mastery menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pengantar Pembuatan Skrip Bash
  2. Mengotomatiskan Tugas Server
  3. Penanganan Kesalahan dan Pencatatan dalam Skrip
  4. Fungsi, Argumen, dan Skrip yang Dapat Digunakan Ulang
← Kembali ke Linux Server Deployment & SSH Mastery