Oye & Ẹkọ Akọbẹrẹ ikarahun ikarahun ati laasigbotitusita faili faili Linux - Apakan 10


Foundation Linux ṣe ifilọlẹ iwe-ẹri LFCS ( Linux Foundation Certified Sysadmin ), ipilẹṣẹ tuntun tuntun ti idi rẹ ni lati gba awọn eniyan laye nibi gbogbo (ati ibikibi) lati gba ifọwọsi ni ipilẹ si agbedemeji atilẹyin iṣẹ fun awọn ọna ṣiṣe Linux, eyiti o pẹlu atilẹyin awọn ọna ṣiṣe ati awọn iṣẹ ṣiṣe, pẹlu ibojuwo gbogbogbo ati onínọmbà, pẹlu ṣiṣe ipinnu ọlọgbọn nigbati o ba wa ni igbega awọn ọran si awọn ẹgbẹ atilẹyin oke.

Ṣayẹwo fidio atẹle ti o ṣe itọsọna fun ọ ifihan si Eto Iwe-ẹri Linux Foundation.

Eyi ni nkan ti o kẹhin (Apá 10) ti 10-Tutorial lọwọlọwọ jara. Ninu nkan yii a yoo fojusi lori iwe afọwọkọ ikarahun ipilẹ ati laasigbotitusita awọn eto faili Linux. A nilo awọn akọle mejeeji fun idanwo iwe-ẹri LFCS.

Loye Awọn ebute ati awọn Ikarahun

Jẹ ki a ṣalaye awọn imọran diẹ akọkọ.

    Ikarahun kan jẹ eto ti o gba awọn aṣẹ ati fifun wọn si ẹrọ ṣiṣe lati wa ni pipa.
  1. ebute kan jẹ eto ti o fun laaye wa bi awọn olumulo ipari lati ṣepọ pẹlu ikarahun naa. Apẹẹrẹ kan ti ebute ni ebute GNOME, bi a ṣe han ninu aworan isalẹ.

Nigbati a kọkọ bẹrẹ ikarahun kan, o ṣe agbekalẹ aṣẹ aṣẹ kan (ti a tun mọ ni laini aṣẹ), eyiti o sọ fun wa pe ikarahun ti ṣetan lati bẹrẹ gbigba awọn aṣẹ lati ẹrọ titẹwọle boṣewa rẹ, eyiti o jẹ bọtini itẹwe nigbagbogbo.

O le fẹ tọka si nkan miiran ninu jara yii (Lo Aṣẹ lati Ṣẹda, Ṣatunkọ, ati Ifọwọyi awọn faili - Apá 1) lati ṣe atunyẹwo diẹ ninu awọn ofin to wulo.

Lainos pese ọpọlọpọ awọn aṣayan fun awọn ibon nlanla, atẹle ni o wọpọ julọ:

Bash duro fun Bourne Again SHell ati pe o jẹ ikarahun aiyipada ti GNU Project. O ṣafikun awọn ẹya ti o wulo lati ikarahun Korn (ksh) ati ikarahun C (csh), nfunni awọn ilọsiwaju pupọ ni akoko kanna. Eyi ni ikarahun aiyipada ti a lo nipasẹ awọn pinpin ti o bo ninu iwe-ẹri LFCS, ati pe o jẹ ikarahun ti a yoo lo ninu ẹkọ yii.

Awọn Bourne SHell ni ikarahun ti atijọ ati nitorinaa ti jẹ ikarahun aiyipada ti ọpọlọpọ awọn ẹrọ ṣiṣe iru UNIX fun ọpọlọpọ ọdun.

Awọn Korn SHell jẹ ikarahun Unix eyiti o dagbasoke nipasẹ David Korn ni Bell Labs ni ibẹrẹ awọn ọdun 1980. O jẹ ibaramu sẹhin pẹlu ikarahun Bourne ati pẹlu ọpọlọpọ awọn ẹya ti ikarahun C.

Iwe afọwọkọ ikarahun kii ṣe nkan diẹ sii ko si nkan ti o kere ju faili ọrọ kan ti o yipada si eto ipaniyan ti o dapọ awọn ofin ti o ṣe nipasẹ ikarahun ni atẹle kan.

Akọwe ikarahun Ipilẹ

Gẹgẹbi a ti sọ tẹlẹ, a bi iwe afọwọkọ ikarahun bi faili ọrọ lasan. Nitorinaa, le ṣẹda ati ṣatunkọ nipa lilo aṣatunṣe ọrọ ayanfẹ wa. O le fẹ lati ronu nipa lilo vi/m (tọka si Lilo ti Olootu vi - Apá 2 ti jara yii), eyiti o ṣe afihan ifamihan sintasi fun irọrun rẹ.

Tẹ iru aṣẹ atẹle lati ṣẹda faili ti a npè ni myscript.sh ki o tẹ Tẹ.

# vim myscript.sh

Laini akọkọ ti iwe afọwọkọ ikarahun gbọdọ jẹ bi atẹle (tun mọ bi shebang ).

#!/bin/bash

O\" sọ

Bayi o to akoko lati ṣafikun awọn ofin wa. A le ṣalaye idi ti aṣẹ kọọkan, tabi gbogbo iwe afọwọkọ, nipa fifi awọn asọye kun daradara. Ṣe akiyesi pe ikarahun kọ awọn ila wọnyẹn ti o bẹrẹ pẹlu ami iwon kan # (awọn alaye alaye).

#!/bin/bash
echo This is Part 10 of the 10-article series about the LFCS certification
echo Today is $(date +%Y-%m-%d)

Lọgan ti a ti kọ ati ti fipamọ iwe afọwọkọ naa, a nilo lati jẹ ki o ṣiṣẹ.

# chmod 755 myscript.sh

Ṣaaju ṣiṣe akosile wa, a nilo lati sọ awọn ọrọ diẹ nipa iyipada ayika $PATH . Ti a ba ṣiṣe,

echo $PATH

lati laini aṣẹ, a yoo wo awọn akoonu ti $PATH: atokọ ti o ya sọtọ oluṣafihan ti awọn ilana ti o wa nigba ti a tẹ orukọ ti eto ṣiṣe sii. A pe ni oniyipada ayika nitori pe o jẹ apakan ti agbegbe ikarahun - akojọpọ alaye ti o wa fun ikarahun naa ati awọn ilana ọmọ rẹ nigbati ikarahun bẹrẹ ni akọkọ.

Nigba ti a ba tẹ aṣẹ kan ti a tẹ Tẹ, awọn ikarahun wa ni gbogbo awọn ilana ti a ṣe akojọ ni iyipada $PATH ati ṣiṣe apeere akọkọ ti a rii. Jẹ ki a wo apẹẹrẹ,

Ti awọn faili ṣiṣe meji ba wa pẹlu orukọ kanna, ọkan ninu /usr/agbegbe/bin ati omiiran ni /usr/bin , eyi ti o wa ninu itọsọna akọkọ ni yoo pa akọkọ, lakoko ti a yoo foju wo ekeji.

Ti a ko ba ti fipamọ iwe afọwọkọ wa ninu ọkan ninu awọn ilana-ilana ti a ṣe akojọ ni iyipada $PATH , a nilo lati fi ./ kun orukọ faili naa lati le ṣe. Bibẹẹkọ, a le ṣiṣẹ bi o ti ṣe pẹlu aṣẹ deede.

# pwd
# ./myscript.sh
# cp myscript.sh ../bin
# cd ../bin
# pwd
# myscript.sh

Nigbakugba ti o ba nilo lati ṣalaye awọn iṣẹ oriṣiriṣi ti o yẹ lati mu ni akọọlẹ ikarahun kan, nitori abajade aṣeyọri tabi ikuna ti aṣẹ kan, iwọ yoo lo itumọ ti o ba jẹ lati ṣalaye iru awọn ipo bẹẹ. Ilana ipilẹ rẹ ni:

if CONDITION; then 
	COMMANDS;
else
	OTHER-COMMANDS 
fi

Nibiti IPINLE le jẹ ọkan ninu atẹle (nikan ni awọn ipo loorekoore julọ ni a tọka si nibi) ati ṣe ayẹwo si otitọ nigbati:

  1. [-a faili] → faili wa.
  2. [-d faili] → faili wa o si jẹ itọsọna.
  3. [-f faili] → faili wa o si jẹ faili deede.
  4. [-u faili] → faili wa ati pe o ti ṣeto SUID (ṣeto olumulo ID) rẹ.
  5. [-g faili] → faili wa ati pe o ti ṣeto bit SGID rẹ.
  6. [-k faili] → faili wa o si ti ṣeto bit ti alalepo rẹ.
  7. [-r faili] → faili wa o si ṣee ka.
  8. [-s file] → faili wa o si ṣofo.
  9. [-w faili] → faili wa o si ṣee kọ.
  10. [-x file] jẹ otitọ ti faili ba wa ati ti o le ṣiṣẹ.
  11. [string1 = string2] → awọn okun dogba.
  12. [string1! = string2] → awọn okun ko dọgba.

[int1 op int2] yẹ ki o jẹ apakan ti atokọ iṣaaju, lakoko ti awọn ohun ti o tẹle (fun apẹẹrẹ, -eq -> jẹ otitọ ti int1 dọgba si int2 .) O yẹ ki o jẹ atokọ “ ọmọ ” ti [ int1 op int2 ] nibiti op jẹ ọkan ninu awọn oniṣẹ afiwera atẹle.

  1. -eq -> jẹ otitọ ti int1 ba dọgba si int2.
  2. -ne -> otitọ ti int1 ko ba jẹ int2.
  3. -lt -> otitọ ti int1 ba kere si int2.
  4. -le -> otitọ ti int1 ba kere ju tabi dọgba pẹlu int2.
  5. -gt -> otitọ ti int1 ba tobi ju int2 lọ.
  6. -ge -> otitọ ti int1 ba tobi ju tabi dọgba pẹlu int2.

Lupu yii ngbanilaaye lati ṣe ọkan tabi diẹ awọn ofin fun iye kọọkan ninu atokọ ti awọn iye. Ilana ipilẹ rẹ ni:

for item in SEQUENCE; do 
		COMMANDS; 
done

Nibiti nkan jẹ oniyipada oniye kan ti o duro fun iye kọọkan ni SEQUENCE lakoko igbasilẹ kọọkan.

Lupu yii ngbanilaaye lati ṣe lẹsẹsẹ ti awọn ofin atunwi niwọn igba ti aṣẹ iṣakoso ba ṣiṣẹ pẹlu ipo ijade ti o dọgba pẹlu odo (ṣaṣeyọri). Ilana ipilẹ rẹ ni:

while EVALUATION_COMMAND; do 
		EXECUTE_COMMANDS; 
done

Nibiti EVALUATION_COMMAND le jẹ awọn aṣẹ (s) eyikeyi ti o le jade pẹlu aṣeyọri ( 0 ) tabi ikuna (yatọ si ipo 0) , ati EXECUTE_COMMANDS le jẹ eto eyikeyi, iwe afọwọkọ tabi ikole ikarahun, pẹlu awọn losiwajulosehin ti iteeye miiran.

A yoo ṣe afihan lilo ti ti o ba kọ ati ọna fun lupu pẹlu apẹẹrẹ atẹle.

Jẹ ki a ṣẹda faili kan pẹlu atokọ ti awọn iṣẹ ti a fẹ ṣe atẹle ni wiwo kan.

# cat myservices.txt

sshd
mariadb
httpd
crond
firewalld

Iwe afọwọkọ ikarahun wa yẹ ki o dabi.

#!/bin/bash

# This script iterates over a list of services and
# is used to determine whether they are running or not.

for service in $(cat myservices.txt); do
    	systemctl status $service | grep --quiet "running"
    	if [ $? -eq 0 ]; then
            	echo $service "is [ACTIVE]"
    	else
            	echo $service "is [INACTIVE or NOT INSTALLED]"
    	fi
done

1). Awọn fun lupu ka myservices.txt faili ọkan ano ti LIST ni akoko kan. Apakan yẹn ni a tọka nipasẹ oniyipada oniwa ti a npè ni iṣẹ. LIST naa jẹ olugbe pẹlu iṣujade ti,

# cat myservices.txt

2). A pa aṣẹ ti o wa loke wa ni awọn akọmọ o si ṣaju nipasẹ ami dola kan lati tọka pe o yẹ ki o ṣe iṣiro lati ṣe agbejade LIST ti a yoo ṣe lori.

3). Fun abala kọọkan ti LISTI (tumọ si gbogbo apeere ti oniyipada iṣẹ), aṣẹ atẹle ni yoo ṣe.

# systemctl status $service | grep --quiet "running"

Ni akoko yii a nilo lati ṣaju iyipada jeneriki wa (eyiti o ṣe aṣoju eroja kọọkan ni LISTI ) pẹlu ami dola kan lati tọka pe o jẹ oniyipada ati nitorinaa o yẹ ki o lo iye rẹ ninu aṣetunṣe kọọkan. Lẹhinna o wu jade lati mu.

Flag –akakun naa ni a lo lati ṣe idiwọ grep lati ma han si iboju awọn ila nibiti ọrọ ti n ṣiṣẹ han. Nigbati iyẹn ba ṣẹlẹ, aṣẹ ti o wa loke da ipo ipadabọ ti 0 pada (ti o jẹ aṣoju nipasẹ $? ninu ti o ba kọ), nitorinaa ṣe idaniloju pe iṣẹ n ṣiṣẹ.

Ipo ijade ti o yatọ si 0 (ti o tumọ si ọrọ ti n ṣiṣẹ ko rii ninu abajade ti systemctl ipo $iṣẹ ) tọka pe iṣẹ naa kii ṣe nṣiṣẹ.

A le lọ siwaju ni igbesẹ kan ki a ṣayẹwo fun aye ti myservices.txt ṣaaju paapaa igbiyanju lati tẹ sii fun lupu.

#!/bin/bash

# This script iterates over a list of services and
# is used to determine whether they are running or not.

if [ -f myservices.txt ]; then
    	for service in $(cat myservices.txt); do
            	systemctl status $service | grep --quiet "running"
            	if [ $? -eq 0 ]; then
                    	echo $service "is [ACTIVE]"
            	else
                    	echo $service "is [INACTIVE or NOT INSTALLED]"
            	fi
    	done
else
    	echo "myservices.txt is missing"
fi

O le fẹ lati ṣetọju atokọ ti awọn ọmọ-ogun ninu faili ọrọ kan ki o lo iwe afọwọkọ kan lati pinnu ni gbogbo igba ati lẹhinna boya wọn jẹ pingable tabi rara (ni ọfẹ lati rọpo awọn akoonu ti myhosts ki o gbiyanju fun ara rẹ ).

Ikawe ti a ṣe sinu ikarahun kika sọ fun lupu lakoko lati ka laini awọn ẹmi mi nipasẹ laini ati fi akoonu ti ila kọọkan si olupin oniyipada, eyiti o kọja lẹhinna si pipaṣẹ ping .

#!/bin/bash

# This script is used to demonstrate the use of a while loop

while read host; do
    	ping -c 2 $host
done < myhosts

Ka Bakannaa :

  1. Kọ ẹkọ Ikarahun Ikarahun: Itọsọna kan lati Awọn tuntun si Alabojuto Eto
  2. Awọn iwe afọwọkọ Shell 5 lati Mọ siseto Ikarahun ikarahun

Laasigbotitusita faili faili

Botilẹjẹpe Lainos jẹ ẹrọ ṣiṣe iduroṣinṣin pupọ, ti o ba kọlu fun idi kan (fun apẹẹrẹ, nitori fifọ agbara), ọkan (tabi diẹ sii) ti awọn ọna faili rẹ kii yoo ni gbigbe kuro daradara ati nitorinaa yoo ṣayẹwo laifọwọyi fun awọn aṣiṣe nigbati Linux ti tun bẹrẹ.

Ni afikun, nigbakugba ti awọn bata bata eto lakoko bata deede, o nigbagbogbo ṣayẹwo iyege ti awọn eto faili ṣaaju gbigbe wọn. Ni awọn ọran mejeeji eyi ni ṣiṣe nipasẹ lilo ohun elo ti a npè ni fsck (\ " Ṣayẹwo eto faili ").

fsck kii yoo ṣayẹwo iduroṣinṣin ti awọn eto faili nikan, ṣugbọn tun gbiyanju lati tun awọn ọna ṣiṣe ibajẹ tunṣe ti wọn ba kọ ọ lati ṣe bẹ. Da lori ibajẹ ibajẹ, fsck le ṣaṣeyọri tabi rara; nigbati o ba ṣe, awọn ipin ti a gba pada ti awọn faili ni a gbe sinu itọsọna sọnu + ti a rii , ti o wa ni gbongbo ti faili faili kọọkan.

Ni ikẹhin ṣugbọn ko kere ju, a gbọdọ ṣe akiyesi pe awọn aiṣedeede le tun ṣẹlẹ ti a ba gbiyanju lati yọ kọnputa USB nigbati ẹrọ iṣiṣẹ ṣi nkọ si rẹ, ati pe o le paapaa ja si ibajẹ hardware.

Iṣeduro ipilẹ ti fsck jẹ atẹle:

# fsck [options] filesystem

Lati le ṣayẹwo eto faili pẹlu fsck, a gbọdọ kọkọ yọ kuro.

# mount | grep sdg1
# umount /mnt
# fsck -y /dev/sdg1

Yato si asia -y , a le lo aṣayan -a lati tunṣe awọn eto faili ni adaṣe laisi beere eyikeyi ibeere, ati fi agbara mu ayẹwo paapaa nigbati eto faili ba dabi mimọ.

# fsck -af /dev/sdg1

Ti a ba nifẹ si wiwa ohun ti ko tọ (laisi igbiyanju lati ṣatunṣe ohunkohun fun akoko naa) a le ṣiṣe fsck pẹlu aṣayan -n , eyi ti yoo mu awọn ọran eto faili jade si iṣẹjade boṣewa.

# fsck -n /dev/sdg1

O da lori awọn ifiranṣẹ aṣiṣe ni iṣẹjade ti fsck, a yoo mọ boya a le gbiyanju lati yanju ọrọ naa funrararẹ tabi mu ki o pọ si awọn ẹgbẹ imọ-ẹrọ lati ṣe awọn iṣayẹwo siwaju si lori ohun elo naa.

Akopọ

A ti de ni opin 10-article jara yii nibiti o ti gbiyanju lati bo awọn agbara-aṣẹ ipilẹ ti o nilo lati kọja idanwo LFCS .

Fun awọn idi ti o han, ko ṣee ṣe lati bo gbogbo abala kọọkan ti awọn akọle wọnyi ninu eyikeyi olukọni kan, ati pe idi ni idi ti a nireti pe awọn nkan wọnyi ti fi ọ si ọna ti o tọ lati gbiyanju nkan tuntun funrararẹ ki o tẹsiwaju ẹkọ.

Ti o ba ni ibeere tabi awọn asọye eyikeyi, wọn ṣe itẹwọgba nigbagbogbo - nitorinaa ma ṣe ṣiyemeji lati fi ila silẹ fun wa nipasẹ fọọmu ti o wa ni isalẹ!