Penguasaan Baris Perintah Linux & Penskripan Bash · Pelajaran

Projek Penskripan Lanjutan

Selesaikan projek menyeluruh yang menggabungkan semua konsep yang dipelajari, daripada alat baris perintah hingga teknik penskripan Bash lanjutan.

Pelajaran 3 daripada 412 langkah

Projek Penskripan Lanjutan ialah pelajaran Penguasaan Baris Perintah Linux & Penskripan Bash percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Penguasaan Baris Perintah Linux & Penskripan Bash, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Penguasaan Baris Perintah Linux & Penskripan Bash merangkumi sejumlah 4 pelajaran.

Permulaan Projek: Cabaran

Selamat datang ke projek akhir kita! Sepanjang kursus ini, anda telah mempelajari banyak perintah Linux yang berkuasa dan teknik penskripan Bash. Kini tiba masanya untuk menggabungkan semuanya.

Dalam pelajaran ini, kita akan membina skrip Bash praktikal dan lanjutan dari awal. Projek ini akan mencabar anda untuk mengintegrasikan semua yang telah dipelajari ke dalam satu penyelesaian yang berfungsi.

Menentukan Matlamat Projek Kita

Matlamat kita ialah mencipta skrip pemantauan dan pengarkiban fail. Bayangkan anda mempunyai pelayan yang menjana fail log dan anda perlu memprosesnya secara berkala tanpa campur tangan manual.

Berikut ialah perkara yang akan dilakukan oleh skrip kita:

  • Memantau direktori tertentu secara berterusan untuk mencari fail teks baharu.
  • Memproses setiap fail baharu (contohnya, mengira barisnya).
  • Memindahkan fail yang telah diproses ke direktori arkib.
  • Merekodkan semua aktiviti, termasuk cap masa dan sebarang ralat.

Asas Skrip: Shebang & Pemboleh Ubah

Setiap skrip yang baik bermula dengan asas yang jelas. Kita akan bermula dengan mentakrifkan shebang dan menyediakan pemboleh ubah utama. Pemboleh ubah ini akan menjadikan skrip kita fleksibel dan mudah dikonfigurasi.

Kita akan mentakrifkan laluan untuk direktori pemantauan, direktori arkib dan fail log.

#!/bin/bash

# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"

# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"

Memastikan Direktori Wujud

Sebelum skrip kita boleh memantau atau mengarkibkan fail, kita perlu memastikan direktori yang diperlukan wujud. Penggunaan mkdir -p amat penting di sini kerana perintah ini hanya mencipta direktori jika direktori tersebut belum wujud dan tidak akan menghasilkan ralat jika direktori itu sudah wujud.

Kita juga akan menambahkan pengendalian ralat asas supaya skrip keluar dengan baik jika penciptaan direktori gagal.

#!/bin/bash

# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"

# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"

# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }

echo "$(date): Directories checked/created." >> "$LOG_FILE"

Gelung Pemantauan

Skrip kita perlu berjalan secara berterusan untuk memantau fail baharu. Gelung while true amat sesuai untuk tujuan ini. Di dalam gelung tersebut, kita akan menggunakan sleep untuk berhenti seketika selama beberapa saat antara pemeriksaan, supaya skrip tidak menggunakan terlalu banyak sumber.

Kita juga akan merekodkan setiap pemeriksaan untuk menjejaki aktiviti.

#!/bin/bash

# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"

# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"

# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }

echo "$(date): Directories checked/created." >> "$LOG_FILE"

# --- Main Monitoring Loop ---
while true; do
  echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
  # File processing will go here
  sleep 5 # Check every 5 seconds
done

Mencari & Memproses Fail

Dalam gelung kita, kita perlu mencari fail teks baharu. Perintah find amat sesuai untuk tujuan ini, digabungkan dengan gelung for untuk memproses setiap fail yang ditemui. Kita akan menggunakan wc -l untuk mengira baris dalam setiap fail sebagai langkah pemprosesan.

Ini menunjukkan cara menggabungkan alat baris perintah dalam skrip.

#!/bin/bash

# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"

# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"

# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }

echo "$(date): Directories checked/created." >> "$LOG_FILE"

# --- Main Monitoring Loop ---
while true; do
  echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
  # Find new .txt files and process them
  for file in $(find "$MONITOR_DIR" -maxdepth 1 -type f -name "*.txt"); do
    if [ -f "$file" ]; then # Double-check if it's a regular file
      LINE_COUNT=$(wc -l < "$file")
      echo "$(date): Found '$file'. Lines: $LINE_COUNT." >> "$LOG_FILE"
      # Archiving will go here
    fi
  done
  sleep 5 # Check every 5 seconds
done

Mengarkibkan Fail yang Diproses

Selepas memproses sesuatu fail, kita perlu memindahkannya ke direktori arkib. Perintah mv digunakan untuk tujuan ini. Kita juga akan menambah pernyataan if untuk menyemak status keluar mv, bagi memastikan pemindahan berjaya dan merekodkan sebarang kegagalan.

Ini menjadikan skrip kita lebih teguh.

#!/bin/bash

# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"

# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"

# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }

echo "$(date): Directories checked/created." >> "$LOG_FILE"

# --- Main Monitoring Loop ---
while true; do
  echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
  for file in $(find "$MONITOR_DIR" -maxdepth 1 -type f -name "*.txt"); do
    if [ -f "$file" ]; then
      LINE_COUNT=$(wc -l < "$file")
      echo "$(date): Found '$file'. Lines: $LINE_COUNT." >> "$LOG_FILE"
      
      mv "$file" "$ARCHIVE_DIR/"
      if [ $? -eq 0 ]; then
        echo "$(date): Moved '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
      else
        echo "$(date): ERROR: Failed to move '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
      fi
    fi
  done
  sleep 5
done

Menambah Keluar dengan Baik Menggunakan Trap

Skrip yang berjalan lama memerlukan cara untuk dihentikan dengan baik. Perintah trap membolehkan kita menangkap isyarat seperti SIGINT (dicetuskan oleh Ctrl+C), kemudian melaksanakan fungsi pembersihan sebelum keluar. Ini memastikan skrip kita merekodkan proses penutupannya.

Ini ialah langkah penting untuk skrip yang sedia digunakan dalam persekitaran pengeluaran.

#!/bin/bash

# --- Configuration Variables ---
MONITOR_DIR="/tmp/coddykit_monitor"
ARCHIVE_DIR="/tmp/coddykit_archive"
LOG_FILE="/tmp/coddykit_script.log"

# --- Functions ---
cleanup() {
  echo "$(date): Script received stop signal. Exiting gracefully." >> "$LOG_FILE"
  exit 0 # Exit with success status
}

# --- Trap Signals ---
# Trap SIGINT (Ctrl+C) and call the cleanup function
trap cleanup SIGINT

# Log script start
echo "$(date): Script initialized." >> "$LOG_FILE"

# Ensure monitoring and archive directories exist
mkdir -p "$MONITOR_DIR" || { echo "$(date): ERROR: Cannot create $MONITOR_DIR. Exiting." >> "$LOG_FILE"; exit 1; }
mkdir -p "$ARCHIVE_DIR" || { echo "$(date): ERROR: Cannot create $ARCHIVE_DIR. Exiting." >> "$LOG_FILE"; exit 1; }

echo "$(date): Directories checked/created." >> "$LOG_FILE"

# --- Main Monitoring Loop ---
while true; do
  echo "$(date): Checking for new files in $MONITOR_DIR..." >> "$LOG_FILE"
  for file in $(find "$MONITOR_DIR" -maxdepth 1 -type f -name "*.txt"); do
    if [ -f "$file" ]; then
      LINE_COUNT=$(wc -l < "$file")
      echo "$(date): Found '$file'. Lines: $LINE_COUNT." >> "$LOG_FILE"
      
      mv "$file" "$ARCHIVE_DIR/"
      if [ $? -eq 0 ]; then
        echo "$(date): Moved '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
      else
        echo "$(date): ERROR: Failed to move '$file' to '$ARCHIVE_DIR'." >> "$LOG_FILE"
      fi
    fi
  done
  sleep 5
done

Menguji Skrip Lanjutan Anda

Setelah skrip kita lengkap, tibalah masanya untuk mengujinya! Biasanya, anda akan menjalankannya di latar belakang (contohnya, ./monitor.sh &), kemudian mencipta fail ujian dalam $MONITOR_DIR dan memerhatikan $LOG_FILE serta $ARCHIVE_DIR.

Berikut ialah skrip ringkas yang boleh anda jalankan untuk mencipta fail ujian bagi pemantau anda dengan mudah.

#!/bin/bash
# create_test_file.sh

MONITOR_DIR="/tmp/coddykit_monitor"
mkdir -p "$MONITOR_DIR" # Ensure dir exists for this test script

# Create a unique test file
TEST_FILE="$MONITOR_DIR/test_log_$(date +%Y%m%d_%H%M%S).txt"
echo "This is a test entry." > "$TEST_FILE"
echo "Another line for testing." >> "$TEST_FILE"
echo "Created new test file: $TEST_FILE"

Semakan Logik Skrip

Skrip lanjutan kita menggabungkan banyak konsep. Mari kita semak secara ringkas beberapa perintah dan struktur teras yang telah kita gunakan.

Fikirkan peranan setiap perintah dalam mencapai matlamat projek kita.

Selanjutnya: Penjadualan & Penyesuaian

Skrip ini direka bentuk untuk berjalan secara berterusan. Dalam situasi dunia sebenar, anda mungkin menjalankannya di latar belakang menggunakan nohup ./script.sh & atau, yang lebih lazim, menjadualkannya untuk berjalan secara berkala menggunakan Cron.

Ingatlah, Cron amat sesuai untuk mengautomatikkan tugasan seperti ini. Anda boleh menjadualkannya supaya berjalan setiap beberapa minit, menyemak direktori dan memproses fail mengikut keperluan.

Pertimbangkan untuk menyesuaikannya bagi:

  • Memproses jenis fail yang berbeza.
  • Melaksanakan tindakan yang berbeza (contohnya, memampatkan fail atau memuat naiknya ke awan).
  • Menambah pelaporan ralat yang lebih lanjutan (contohnya, amaran e-mel).

Imbas Kembali Projek & Langkah Seterusnya

Tahniah! Anda baru sahaja menyiapkan projek penskripan Bash lanjutan yang mengintegrasikan pelbagai perintah Linux dan teknik penskripan.

Anda telah mempelajari cara untuk:

  • Menyusun skrip yang teguh dan berjalan lama.
  • Menggunakan pemboleh ubah untuk konfigurasi.
  • Melaksanakan gelung bagi pemantauan berterusan.
  • Menggabungkan perintah seperti find, wc dan mv.
  • Menambah pengendalian ralat dan keluar dengan baik menggunakan trap.

Projek ini menjadi asas yang kukuh untuk membina penyelesaian automasi yang lebih kompleks. Teruskan mencuba dan membina!

Percuma untuk bermula

Pelajari Bash dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
22
Pelajaran
88

Soalan Lazim

Adakah pelajaran “Projek Penskripan Lanjutan” percuma?

Ya — teks penuh “Projek Penskripan Lanjutan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Penguasaan Baris Perintah Linux &amp; Penskripan Bash, tingkat taraf kepada CoddyKit PRO. Kursus Penguasaan Baris Perintah Linux &amp; Penskripan Bash merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Projek Penskripan Lanjutan”?

Selesaikan projek menyeluruh yang menggabungkan semua konsep yang dipelajari, daripada alat baris perintah hingga teknik penskripan Bash lanjutan. Anda berlatih Penguasaan Baris Perintah Linux &amp; Penskripan Bash menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Penguasaan Baris Perintah Linux &amp; Penskripan Bash?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Penguasaan Baris Perintah Linux &amp; Penskripan Bash di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Projek Penskripan Lanjutan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Penguasaan Baris Perintah Linux &amp; Penskripan Bash ini?

Ya. Setiap pelajaran Penguasaan Baris Perintah Linux &amp; Penskripan Bash menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menjadualkan Tugasan dengan Cron
  2. Mengautomatikkan Pentadbiran Sistem
  3. Projek Penskripan Lanjutan
  4. Putaran dan Pembersihan Log Automatik
← Kembali ke Penguasaan Baris Perintah Linux &amp; Penskripan Bash