Pemahaman & Pembelajaran Skrip Shell Asas dan Penyelesaian Masistem Filesystem Linux - Bahagian 10

Pemahaman & Pembelajaran Skrip Shell Asas dan Penyelesaian Masistem Filesystem Linux - Bahagian 10

Yayasan Linux melancarkan LFCS pensijilan (SYSADMIN YOUNDAY LINUX FOUNTUK), satu inisiatif baru yang tujuannya adalah untuk membolehkan individu di mana-mana (dan di mana sahaja) untuk mendapatkan yang diperakui dalam asas untuk sokongan operasi pertengahan untuk sistem Linux, yang termasuk menyokong sistem dan perkhidmatan berjalan, bersama-sama dengan pemantauan dan analisis keseluruhan, ditambah membuat keputusan pintar Ketika datang untuk menimbulkan masalah kepada pasukan sokongan atas.

SYSADMIN YOUNDAY LINUX Yayasan - Bahagian 10

Lihat video berikut yang membimbing anda pengenalan kepada Program Persijilan Yayasan Linux.

Ini adalah artikel terakhir (bahagian 10) dari siri panjang 10-tutorial sekarang. Dalam artikel ini, kita akan memberi tumpuan kepada Sistem Fail Linux Scripting dan Penyelesaian Masalah Asas. Kedua -dua topik diperlukan untuk peperiksaan pensijilan LFCS.

Memahami terminal dan cengkerang

Mari kita jelaskan beberapa konsep terlebih dahulu.

  1. Shell adalah program yang mengambil arahan dan memberi mereka kepada sistem operasi yang akan dilaksanakan.
  2. Terminal adalah program yang membolehkan kami sebagai pengguna akhir untuk berinteraksi dengan cangkang. Salah satu contoh terminal adalah terminal gnome, seperti yang ditunjukkan dalam imej di bawah.
Terminal gnome

Ketika kita mula -mula memulakan shell, ia membentangkan arahan arahan (juga dikenali sebagai baris arahan), yang memberitahu kita bahawa shell sudah bersedia untuk mula menerima arahan dari peranti input standardnya, yang biasanya papan kekunci.

Anda mungkin mahu merujuk kepada artikel lain dalam siri ini (Gunakan arahan untuk membuat, mengedit, dan memanipulasi fail - Bahagian 1) untuk mengkaji beberapa arahan yang berguna.

Linux menyediakan pelbagai pilihan untuk kerang, yang berikut adalah yang paling biasa:

shell bash

Bash bermaksud Bourne lagi Shell dan shell lalai projek GNU. Ia menggabungkan ciri -ciri berguna dari Korn Shell (KSH) dan C Shell (CSH), yang menawarkan beberapa penambahbaikan pada masa yang sama. Ini adalah shell lalai yang digunakan oleh pengagihan yang diliputi dalam pensijilan LFCS, dan ia adalah shell yang akan kami gunakan dalam tutorial ini.

sh shell

The Bourne Shell adalah cangkang tertua dan oleh itu telah menjadi shell lalai banyak sistem operasi seperti Unix selama bertahun-tahun.

shell ksh

The Korn Shell adalah shell unix yang dibangunkan oleh David Korn di Bell Labs pada awal 1980 -an. Ia bersesuaian dengan shell bourne dan merangkumi banyak ciri cangkang c.

Skrip shell tidak lebih dan tidak kurang daripada fail teks berubah menjadi program yang boleh dilaksanakan yang menggabungkan arahan yang dilaksanakan oleh shell satu demi satu.

Skrip shell asas

Seperti yang dinyatakan sebelum ini, skrip shell dilahirkan sebagai fail teks biasa. Oleh itu, boleh dibuat dan diedit menggunakan editor teks pilihan kami. Anda mungkin ingin mempertimbangkan menggunakan VI/M (Rujuk Penggunaan VI Editor - Bahagian 2 siri ini), yang menampilkan sintaks untuk kemudahan anda.

Taipkan arahan berikut untuk membuat fail bernama MyScript.sh dan tekan Enter.

# vim myscript.sh 

Baris pertama skrip shell mestilah seperti berikut (juga dikenali sebagai Shebang).

#!/bin/bash 

"memberitahu"Sistem pengendalian nama jurubahasa yang harus digunakan untuk menjalankan teks yang berikut.

Kini tiba masanya untuk menambah arahan kami. Kami dapat menjelaskan tujuan setiap arahan, atau keseluruhan skrip, dengan menambahkan komen juga. Perhatikan bahawa shell mengabaikan garis -garis yang bermula dengan tanda satu paun # (komen penjelasan).

#!/bin/bash echo Ini adalah bahagian 10 dari siri 10-artikel mengenai echo pensijilan LFCS hari ini adalah $ (tarikh +%y-%m-%d) 

Setelah skrip telah ditulis dan disimpan, kita perlu membuatnya boleh dilaksanakan.

# chmod 755 myscript.sh 

Sebelum menjalankan skrip kita, kita perlu mengatakan beberapa perkataan mengenai $ Jalan pembolehubah persekitaran. Jika kita berlari,

Echo $ Path 

Dari baris arahan, kita akan melihat kandungannya $ Jalan: senarai direktori yang dipisahkan oleh kolon yang dicari ketika kami memasuki nama program yang boleh dilaksanakan. Ia dipanggil pemboleh ubah persekitaran kerana ia adalah sebahagian daripada persekitaran shell - satu set maklumat yang tersedia untuk shell dan proses anaknya ketika shell pertama kali dimulakan.

Apabila kita menaip arahan dan tekan Enter, carian shell dalam semua direktori yang disenaraikan di $ Jalan pemboleh ubah dan melaksanakan contoh pertama yang dijumpai. Mari lihat contoh,

Pembolehubah persekitaran

Sekiranya terdapat dua fail yang boleh dilaksanakan dengan nama yang sama, satu di /usr/tempatan/bin dan yang lain di /usr/bin, yang di direktori pertama akan dilaksanakan terlebih dahulu, sedangkan yang lain akan diabaikan.

Sekiranya kita belum menyimpan skrip kita di dalam salah satu direktori yang disenaraikan di $ Jalan berubah, kita perlu menambah ./ ke nama fail untuk melaksanakannya. Jika tidak, kita boleh menjalankannya seperti yang kita lakukan dengan arahan biasa.

# pwd # ./MyScript.sh # cp myscript.Sh ... /bin # CD ... /bin # PWD # MyScript.sh 
Laksanakan skrip

Keadaan

Bila -bila masa anda perlu menentukan kursus tindakan yang berbeza yang akan diambil dalam skrip shell, hasil daripada kejayaan atau kegagalan perintah, anda akan menggunakan jika membina untuk menentukan keadaan sedemikian. Sintaks asasnya ialah:

jika keadaan; kemudian perintah; lain-lain-komando fi 

Di mana Keadaan boleh menjadi salah satu daripada yang berikut (hanya keadaan yang paling kerap disebut di sini) dan menilai benar apabila:

  1. [-a fail] → Fail wujud.
  2. [-d fail] → fail wujud dan direktori.
  3. [-f fail] → fail wujud dan fail biasa.
  4. [-u fail] → Fail ada dan bit suid (set pengguna id) ditetapkan.
  5. [-g fail] → fail ada dan bit sgid ditetapkan.
  6. [-k fail] → fail ada dan bit melekitnya ditetapkan.
  7. [-r fail] → fail wujud dan boleh dibaca.
  8. [-S Fail]→ fail wujud dan tidak kosong.
  9. [-W Fail]→ fail wujud dan boleh ditulis.
  10. [-x fail] benar jika fail wujud dan boleh dilaksanakan.
  11. [string1 = string2] → rentetan adalah sama.
  12. [String1 != string2] → rentetan tidak sama.

[INT1 OP INT2] harus menjadi sebahagian daripada senarai sebelumnya, sementara item yang mengikuti (contohnya, -eq -> adalah benar jika Int1 adalah sama dengan Int2.) harus menjadi "kanak -kanak" senarai [ Int1 op Int2 ] di mana OP adalah salah satu pengendali perbandingan berikut.

  1. -eq -> benar jika int1 sama dengan int2.
  2. -ne -> benar jika int1 tidak sama dengan int2.
  3. -lt -> benar jika int1 kurang daripada int2.
  4. -le -> benar jika int1 kurang daripada atau sama dengan int2.
  5. -gt -> benar jika int1 lebih besar daripada int2.
  6. -ge -> benar jika int1 lebih besar daripada atau sama dengan int2.

Untuk gelung

Gelung ini membolehkan untuk melaksanakan satu atau lebih arahan untuk setiap nilai dalam senarai nilai. Sintaks asasnya ialah:

untuk item dalam urutan; melakukan arahan; selesai 

Di mana item adalah pemboleh ubah generik yang mewakili setiap nilai dalam Urutan semasa setiap lelaran.

Semasa gelung

Gelung ini membolehkan untuk melaksanakan satu siri perintah berulang selagi arahan kawalan dijalankan dengan status keluar sama dengan sifar (berjaya). Sintaks asasnya ialah:

semasa penilaian_command; lakukan Execute_Commands; selesai 

Di mana Evaluasi_Command boleh menjadi arahan yang boleh keluar dengan kejayaan (0) atau kegagalan (selain daripada 0) Status, dan Execute_Commands boleh menjadi program, skrip atau shell membina, termasuk gelung bersarang lain.

Menggabungkan semuanya

Kami akan menunjukkan penggunaan jika membina dan gelung dengan contoh berikut.

Menentukan jika perkhidmatan berjalan dalam distro berasaskan sistem

Mari buat fail dengan senarai perkhidmatan yang ingin kami pantau sekilas.

# Cat myservices.txt sshd Mariadb httpd crond firewalld 
Skrip untuk memantau perkhidmatan Linux

Skrip shell kami sepatutnya kelihatan seperti.

#!/bin/bash # Skrip ini melangkah ke atas senarai perkhidmatan dan # digunakan untuk menentukan sama ada mereka berjalan atau tidak. untuk perkhidmatan dalam $ (Cat Myservices.txt); Adakah Status Sistem Sistem $ | grep --quiet "berlari" jika [$? -eq 0]; Kemudian echo $ Service "adalah [aktif]" lain echo $ service "adalah [tidak aktif atau tidak dipasang]" fi selesai 
Skrip Pemantauan Perkhidmatan Linux
Mari kita jelaskan bagaimana skrip berfungsi.

1). Untuk gelung membaca Myservices.txt Fail satu elemen senarai pada satu masa. Unsur tunggal itu dilambangkan oleh pemboleh ubah generik bernama perkhidmatan. Senarai itu dihuni dengan output,

# Cat myservices.txt 

2). Perintah di atas disertakan dalam kurungan dan didahului oleh tanda dolar untuk menunjukkan bahawa ia harus dinilai untuk mengisi senarai yang akan kita lalui.

3). Untuk setiap elemen senarai (yang bermaksud setiap contoh pemboleh ubah perkhidmatan), arahan berikut akan dilaksanakan.

# Sistem Status $ Perkhidmatan | Grep -Quiet "Berlari" 

Kali ini kita perlu mendahului pemboleh ubah generik kita (yang mewakili setiap elemen dalam Senarai) dengan tanda dolar untuk menunjukkan ia adalah pemboleh ubah dan oleh itu nilainya dalam setiap lelaran harus digunakan. Output kemudian disalurkan ke grep.

The -senyap Bendera digunakan untuk mencegah grep dari memaparkan ke skrin garis di mana perkataan berjalan muncul. Apabila itu berlaku, perintah di atas mengembalikan status keluar dari 0 (diwakili oleh $? dalam jika membina), dengan itu mengesahkan bahawa perkhidmatan sedang berjalan.

Status keluar berbeza daripada 0 (bermaksud perkataan berjalan tidak dijumpai dalam output Status Sistem Sistem $ Perkhidmatan) menunjukkan bahawa perkhidmatan tidak berjalan.

Skrip Pemantauan Perkhidmatan

Kita boleh melangkah lebih jauh dan memeriksa kewujudan Myservices.txt sebelum cuba memasuki gelung untuk.

#!/bin/bash # Skrip ini melangkah ke atas senarai perkhidmatan dan # digunakan untuk menentukan sama ada mereka berjalan atau tidak. jika [-f myservices.txt]; Kemudian untuk perkhidmatan dalam $ (Cat Myservices.txt); Adakah Status Sistem Sistem $ | grep --quiet "berlari" jika [$? -eq 0]; Kemudian echo $ Service "adalah [aktif]" lain echo $ service "adalah [tidak aktif atau tidak dipasang]" fi selesai lain echo "myservices.txt hilang "fi 
Ping siri rangkaian atau tuan rumah internet untuk statistik balasan

Anda mungkin ingin mengekalkan senarai tuan rumah dalam fail teks dan menggunakan skrip untuk menentukan setiap sekarang dan kemudian sama ada ia boleh diperoleh atau tidak (jangan ragu untuk menggantikan kandungan myhosts dan cuba sendiri).

Perintah terbina dalam shell dibaca memberitahu gelung sementara untuk membaca garis myhosts mengikut baris dan memberikan kandungan setiap baris ke host yang berubah-ubah, yang kemudiannya dihantar ke ping perintah.

#!/bin/bash # Skrip ini digunakan untuk menunjukkan penggunaan gelung sementara semasa membaca tuan rumah; lakukan ping -c 2 $ host selesai < myhosts 
Skrip ke pelayan ping

Baca juga:

  1. Belajar skrip shell: panduan dari pemula ke pentadbir sistem
  2. 5 skrip shell untuk belajar pengaturcaraan shell

Penyelesaian masalah sistem fail

Walaupun Linux adalah sistem pengendalian yang sangat stabil, jika ia terhempas atas sebab tertentu (contohnya, disebabkan oleh gangguan kuasa), satu (atau lebih) sistem fail anda tidak akan tidak dapat dipasang dengan betul dan dengan itu akan diperiksa secara automatik untuk kesilapan apabila Linux dimulakan semula.

Di samping itu, setiap kali sistem boot semasa boot biasa, ia sentiasa memeriksa integriti sistem fail sebelum memasangnya. Dalam kedua -dua kes ini dilakukan dengan menggunakan alat yang dinamakan FSCK ("Pemeriksaan sistem fail").

FSCK bukan sahaja akan memeriksa integriti sistem fail, tetapi juga cuba membaiki sistem fail rasuah jika diarahkan untuk melakukannya. Bergantung kepada keterukan kerosakan, FSCK boleh berjaya atau tidak; Apabila ia berlaku, bahagian fail pulih diletakkan di hilang+dijumpai direktori, terletak di akar setiap sistem fail.

Akhir sekali, kita harus ambil perhatian bahawa ketidakkonsistenan mungkin juga berlaku jika kita cuba mengeluarkan pemacu USB apabila sistem pengendalian masih menulis kepadanya, dan mungkin mengakibatkan kerosakan perkakasan.

Sintaks asas FSCK adalah seperti berikut:

# FSCK [Options] Filesystem 
Memeriksa sistem fail untuk kesilapan dan cuba membaiki secara automatik

Untuk memeriksa sistem fail dengan FSCK, kita mesti terlebih dahulu menyampaikannya.

# Mount | GREP SDG1 # UMOUNT /MNT # FSCK -Y /DEV /SDG1 
Semak kesilapan sistem fail

Selain -y bendera, kita boleh menggunakan -a Pilihan untuk membaiki sistem fail secara automatik tanpa mengemukakan sebarang pertanyaan, dan memaksa cek walaupun sistem fail kelihatan bersih.

# fsck -af /dev /sdg1 

Sekiranya kita hanya berminat untuk mengetahui apa yang salah (tanpa cuba menyelesaikan apa -apa pada masa ini), kita boleh menjalankan FSCK dengan -n pilihan, yang akan mengeluarkan isu sistem fail ke output standard.

# fsck -n /dev /sdg1 

Bergantung pada mesej ralat dalam output FSCK, kita akan tahu sama ada kita boleh cuba menyelesaikan masalah itu atau meningkatkannya kepada pasukan kejuruteraan untuk melakukan pemeriksaan lanjut mengenai perkakasan.

Ringkasan

Kami telah tiba di akhir ini 10-artikel siri di mana telah cuba menampung kecekapan domain asas yang diperlukan untuk lulus LFCS peperiksaan.

Atas alasan yang jelas, tidak mungkin untuk menampung setiap aspek topik ini dalam mana -mana tutorial tunggal, dan itulah sebabnya kami berharap artikel -artikel ini telah meletakkan anda di landasan yang betul untuk mencuba perkara baru dan terus belajar.

Sekiranya anda mempunyai sebarang pertanyaan atau komen, mereka sentiasa dialu -alukan - jadi jangan ragu untuk menggugurkan kami melalui borang di bawah!

Menjadi Pentadbir Sistem Bersertifikat Linux