Nghọta & Ịmụ Ihe Basic Shell Scripting yana Nchọpụta nsogbu sistemụ faịlụ Linux - Nkebi 10


Linux Foundation weputara asambodo LFCS (Linux Foundation Certified Sysadmin), atumatu ohuru nke ebumnuche ya bu ikwe ka ndi mmadu n’ebe nile (na ebe obula) nweta asambodo na isi ka etiti etiti. nkwado arụmọrụ maka sistemụ Linux, nke gụnyere ịkwado sistemu na ọrụ na-agba ọsọ, yana nleba anya na nyocha n'ozuzu ya, gbakwunyere mkpebi amamihe dị na ya ma a bịa n'iwelite ndị otu nkwado dị elu.

Lelee vidiyo na-esonụ na-eduzi gị mmalite nke Mmemme Asambodo Linux Foundation.

Nke a bụ edemede ikpeazụ (Nkebi nke 10) nke usoro nkuzi ogologo dị ugbu a. N'isiokwu a anyị ga-elekwasị anya na isi shei scripting na nchọpụta nsogbu Linux faịlụ sistemụ. A chọrọ isiokwu abụọ a maka ule asambodo LFCS.

Ịghọta Terminals na Shells

Ka anyị buru ụzọ kọwapụta echiche ole na ole.

  1. Shei bụ mmemme na-ewe iwu wee nye ha sistemu arụ ọrụ ka e gbuo.
  2. A ọnụ bụ mmemme na-enye ohere ka anyị dị ka ndị ọrụ njedebe na-emekọrịta ihe na shei. Otu ihe atụ nke ọnụ ọnụ bụ GNOME ọnụ, dị ka egosiri na foto dị n'okpuru.

Mgbe mbụ anyị malitere shei, ọ na-enye iwu ozugbo (nke a makwaara dị ka akara iwu), nke na-agwa anyị na shei ahụ dị njikere ịmalite ịnakwere iwu site na ngwaọrụ ntinye ọkọlọtọ ya, nke na-abụkarị keyboard.

Ị nwere ike ịtu aka na akụkọ ọzọ n'usoro isiokwu a (Jiri Iwu Mepụta, dezie, na ịhazi faịlụ - Akụkụ 1) iji nyochaa ụfọdụ iwu bara uru.

Linux na-enye ọtụtụ nhọrọ maka shells, ndị a bụ nke a na-ahụkarị:

Bash na-anọchi anya Bourne Again SHell na ọ bụ shei ndabara nke GNU Project. Ọ na-etinye atụmatụ bara uru sitere na shei Korn (ksh) na C shell (csh), na-enye ọtụtụ nkwalite n'otu oge. Nke a bụ shei ndabara nke nkesa kpuchiri na asambodo LFCS na-eji, ọ bụkwa shei ka anyị ga-eji na nkuzi a.

The Bourne SHell bụ shei kacha ochie na ya mere ọ bụrụla shei ndabara nke ọtụtụ sistemụ arụmọrụ UNIX ruo ọtụtụ afọ.

The Korn SHell bụ shei Unix nke David Korn mepụtara na Bell Labs na mmalite 1980s. Ọ bụ azụ-dakọtara na shei Bourne ma gụnye ọtụtụ atụmatụ nke shei C.

Edemede shei abụghị ihe ọzọ ma ọ bụ ihe na-erughị faịlụ ederede ghọrọ mmemme nwere ike ime nke na-ejikọta iwu nke shei na-egbu n'otu n'otu.

Isi Shell Scripting

Dịka e kwuru na mbụ, a na-amụ edemede shei dị ka faịlụ ederede doro anya. Ya mere, enwere ike ịmepụta na dezie ya site na iji nchịkọta ederede masịrị anyị. Ị nwere ike ịchọrọ iji vi/m (na-ezo aka na Usage of vi Editor - Nkebi nke 2 nke usoro isiokwu a), nke na-egosipụta syntax na-egosipụta maka ịdị mma gị.

Pịnye iwu a ka imepụta faịlụ aha ya bụ myscript.sh wee pịa Tinye.

# vim myscript.sh

Ahịrị izizi nke edemede shei ga-abụrịrị otu a (a makwaara dị ka shebang).

#!/bin/bash

Ọ \na-agwa sistemu ọrụ aha onye ntụgharị okwu kwesịrị iji mee ihe ederede na-esote.

Ugbu a bụ oge itinye iwu anyị. Anyị nwere ike dokwuo anya ebumnuche nke iwu ọ bụla, ma ọ bụ ederede dum, site na ịgbakwunye nkọwa. Rịba ama na shei ahụ na-eleghara ahịrị ndị ahụ na-amalite site na akara paụnd # (okwu nkọwa).

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

Ozugbo edechara ma chekwaa ya, anyị kwesịrị ime ka ọ rụọ ọrụ.

# chmod 755 myscript.sh

Tupu ịmee edemede anyị, anyị kwesịrị ikwu okwu ole na ole gbasara mgbanwe gburugburu PATH. Ọ bụrụ na anyị agbaa ọsọ,

echo $PATH

site n'ahịrị iwu, anyị ga-ahụ ọdịnaya nke PATH: ndepụta akwụkwọ ndekọ aha na-ekewapụta nke a na-achọ mgbe anyị tinyere aha mmemme nwere ike ime. A na-akpọ ya mgbanwe gburugburu ebe obibi n'ihi na ọ bụ akụkụ nke gburugburu ebe obibi - nchịkọta ozi nke na-adị maka shea na usoro nwa ya mgbe mbụ shei malitere.

Mgbe anyị pịnyere iwu wee pịa Tinye, shei ahụ na-enyocha akwụkwọ ndekọ aha niile edepụtara na mgbanwe PATH wee mee nke mbụ achọtara. Ka anyị hụ ihe atụ,

Ọ bụrụ na enwere faịlụ abụọ nwere otu aha, otu na /usr/local/bin na nke ọzọ na /usr/bin, a ga-egbu nke dị na ndekọ ndekọ mbụ. mbụ, ebe a ga-eleghara nke ọzọ anya.

Ọ bụrụ na anyị echekwabeghị edemede anyị n'ime otu akwụkwọ ndekọ aha depụtara na mgbanwe PATH, anyị kwesịrị itinye ./ n'aha faịlụ iji mebie ya. Ma ọ bụghị ya, anyị nwere ike ịgba ya dị ka anyị ga-eji iwu mgbe niile.

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

Mgbe ọ bụla ịchọrọ ịkọwapụta usoro omume dị iche iche a ga-eme na edemede shei, n'ihi ịga nke ọma ma ọ bụ ọdịda nke iwu, ị ga-eji ma ọ bụrụ rụọ iji kọwaa ọnọdụ ndị dị otú ahụ. Isi okwu ya bụ:

if CONDITION; then 
	COMMANDS;
else
	OTHER-COMMANDS 
fi

Ebe ỌNỌDỤ nwere ike ịbụ otu n'ime ihe ndị a (naanị ọnọdụ a na-emekarị ka a na-ehota ebe a) ma na-atụle eziokwu mgbe:

  1. [ - faịlụ ] → faịlụ dị.
  2. [ -d faịlụ ] → faịlụ dị ma bụrụ ndekọ.
  3. [ -f faịlụ ] →faịlụ dị ma bụrụ faịlụ a na-ejikarị.
  4. [ -u faịlụ ] →faịlụ dị yana SUID (set user ID) ka edobere ntakịrị.
  5. [ -g faịlụ ] →faịlụ dị ma edobere ntakịrị SGID ya.
  6. [ -k faịlụ ] →faịlụ dị ma edobere ntakịrị nnyapade ya.
  7. [ -r faịlụ ] →faịlụ dị ma enwere ike ịgụ ya.
  8. [ -s faịlụ ]→ faịlụ dị ma ọ bụghị ihe efu.
  9. [ -w faịlụ ]→faịlụ dị ma enwere ike ide ya.
  10. [ -x faịlụ ] bụ eziokwu ma ọ bụrụ faịlụ dị ma nwee ike ime ya.
  11. [ string1 = string2 ] → eriri ndị ahụ hà nhata.
  12. [ string1 != string2 ] →Ụrụkịrị anaghị aha nhata.

[ int1 op int2 ] kwesịrị ịbụ akụkụ nke ndepụta bu ụzọ, ebe ihe ndị na-eso (dịka ọmụmaatụ, -eq –> bụ eziokwu ma ọ bụrụ na int1 > hà nhata na int2.) kwesịrị ịbụ ndepụta “ụmụ” nke [ int1 op int2] ebe op bụ otu n'ime ndị ọrụ ntụnyere ndị a.

  1. -eq –> bụ eziokwu ma ọ bụrụ na int1 hà nhata na int2.
  2. -ne –> eziokwu ma ọ bụrụ na int1 erughị int2.
  3. -lt –> eziokwu ma ọ bụrụ na int1 erughị int2.
  4. -le –> eziokwu ma ọ bụrụ na int1 erughị ma ọ bụ ha nhata na int2.
  5. -gt –> eziokwu ma ọ bụrụ na int1 karịrị int2.
  6. -ge –> eziokwu ma ọ bụrụ na int1 karịrị ma ọ bụ ha nhata na int2.

Loop a na-enye ohere ịme otu iwu ma ọ bụ karịa maka uru ọ bụla na ndepụta ụkpụrụ. Isi okwu ya bụ:

for item in SEQUENCE; do 
		COMMANDS; 
done

Ebe ihe bụ mgbanwe ọnụọgụgụ na-anọchi anya uru ọ bụla na SEQUENCE n'oge mmegharị ọ bụla.

Loop a na-enye ohere ịme usoro iwu ugboro ugboro ma ọ bụrụhaala na njikwa njikwa na-eme ya na ọnọdụ ọpụpụ hà nhata efu (na-aga nke ọma). Isi okwu ya bụ:

while EVALUATION_COMMAND; do 
		EXECUTE_COMMANDS; 
done

Ebe EVALUATION_COMMAND nwere ike ịbụ iwu (s) ọ bụla nwere ike ịpụ site na ịga nke ọma (0) ma ọ bụ ọdịda (abụghị 0) ọkwa, yana EXECUTE_COMMANDS nwere ike ịbụ mmemme ọ bụla, script ma ọ bụ shei wuru, gụnyere loops ndị ọzọ akwụrụ.

Anyị ga-egosipụta ojiji nke ọ bụrụ na arụrụ ya na maka loop na ihe atụ na-esonụ.

Ka anyị mepụta faịlụ nwere ndepụta ọrụ anyị chọrọ inyocha na nlele.

# cat myservices.txt

sshd
mariadb
httpd
crond
firewalld

Edemede shei anyị kwesịrị ịdị ka.

#!/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). Maka loop na-agụ faịlụ myservices.txt otu akụkụ nke LIST n'otu oge. A na-egosipụta otu ihe ahụ site na ọnụọgụ ọnụọgụgụ aha ya bụ ọrụ. Ihe mejupụtara ya juputara na LIST.

# cat myservices.txt

2). Iwu a dị n'elu ka etinyere na mbike ma jiri akara dollar buru ya ụzọ iji gosi na ekwesịrị ịtụle ya iji mejupụta LIST nke anyị ga-emegharị ọzọ.

3). Maka ihe ọ bụla nke LIST (nke pụtara ihe atụ ọ bụla nke mgbanwe ọrụ), a ga-eme iwu a.

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

Oge a, anyị kwesịrị ibu ụzọ ngbanwe ọnụọgụgụ anyị (nke na-anọchi anya ihe ọ bụla na LIST) na akara dollar iji gosi na ọ bụ mgbanwe na ya mere a ga-eji uru ya na nke ọ bụla. A na-atụnye nsonaazụ ya ka ọ bụrụ grep.

A na-eji ọkọlọtọ – jụụ iji gbochie grep ka ọ ghara igosi na ihuenyo ahịrị ebe okwu na-agba ọsọ pụtara. Mgbe nke ahụ mere, iwu a dị n'elu na-eweghachi ọkwa ọpụpụ nke 0 (nke $? nọchiri anya ya na if construct), wee gosi na ọrụ ahụ na-arụ ọrụ.

Ọkwa ọpụpụ dị iche na 0 (nke pụtara okwu ahụghị na mpụta systemctl status $service) na-egosi na ọrụ ahụ abụghị. na-agba ọsọ.

Anyị nwere ike ịga n'ihu otu nzọụkwụ wee lelee ịdị adị nke myservices.txt tupu anyị anwa ịbanye maka loop.

#!/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

Ị nwere ike idowe ndepụta nke ndị ọbịa na faịlụ ederede wee jiri edemede iji chọpụta oge ọ bụla ma ha ọ bụ pingable ma ọ bụ na ha adịghị (nwere onwe gị iji dochie ọdịnaya nke myhosts wee gbalịa n'onwe gị. ).

Iwu agụ shei wuru na-agwa oge loop ka ịgụọ myhosts ahịrị site na ahịrị wee kenye ọdịnaya nke ahịrị ọ bụla na onye ọbịa na-agbanwe agbanwe, nke a ga-agafe na iwu 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

Gụọkwa:

  1. Mụta Shell Scripting: Nduzi sitere na ndị ọhụrụ gaa na onye nchịkwa sistemu
  2. 5 Edemede Shell iji mụta mmemme Shell

Nchọpụta nsogbu sistemụ faịlụ

Ọ bụ ezie na Linux bụ sistemụ arụmọrụ kwụsiri ike, ọ bụrụ na ọ daa n'ihi ihe ụfọdụ (dịka ọmụmaatụ, n'ihi ọkụ ọkụ), otu (ma ọ bụ karịa) nke sistemụ faịlụ gị agaghị ebutu ya nke ọma, yabụ a ga-enyocha ya ozugbo maka njehie mgbe Linux. malitegharịa.

Na mgbakwunye, oge ọ bụla sistemụ akpụkpọ ụkwụ n'oge akpụkpọ ụkwụ nkịtị, ọ na-enyocha mgbe niile iguzosi ike n'ezi ihe nke sistemu faịlụ tupu ịkwanye ha. N'okwu abụọ a, a na-eme nke a site na iji ngwa ọrụ akpọrọ fsck (\nyochaa sistemụ faịlụ).

fsck agaghị elele naanị iguzosi ike n'ezi ihe nke sistemu faịlụ, mana ọ na-anwa ịrụkwa sistemụ faịlụ mebiri emebi ma ọ bụrụ na enyere ya iwu ime ya. Dabere n'oke mmebi ahụ, fsck nwere ike ịga nke ọma ma ọ bụ na ọ gaghị aga; mgbe ọ na-eme, a na-edobe akụkụ faịlụ ndị enwetara na ndekọ furu efu, nke dị na mgbọrọgwụ nke sistemụ faịlụ ọ bụla.

N'ikpeazụ ma ọ dịghị ihe ọzọ, anyị ga-arịba ama na ekwekọghị ekwekọ nwekwara ike ime ma ọ bụrụ na anyị na-agbalị iwepụ USB mbanye mgbe sistemụ ka na-edegara ya akwụkwọ, na ọbụna nwere ike ịkpata mmebi ngwaike.

Isi syntax nke fsck bụ nke a:

# fsck [options] filesystem

Iji lelee sistemu faịlụ na fsck, anyị ga-ebu ụzọ bupụ ya.

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

E wezụga ọkọlọtọ -y, anyị nwere ike iji -a nhọrọ iji rụkwaa sistemu faịlụ na-akpaghị aka na-ajụghị ajụjụ ọ bụla, na ịmanye nlele ọbụlagodi mgbe sistemụ faịlụ dị ọcha.

# fsck -af /dev/sdg1

Ọ bụrụ na anyị nwere mmasị ịchọta ihe na-ezighị ezi (na-agbalị imezi ihe ọ bụla maka oge a) anyị nwere ike ịgba ọsọ fsck na -nnhọrọ, nke ga-ewepụta okwu faịlụ faịlụ na mmepụta ọkọlọtọ.

# fsck -n /dev/sdg1

Dabere na ozi njehie dị na mmepụta fsck, anyị ga-ama ma anyị nwere ike ịgbalị idozi nsogbu ahụ n'onwe anyị ma ọ bụ gbasaa ya na ndị ọrụ injinia iji mee nyocha ọzọ na ngwaike.

Nchịkọta

Anyị eruola na ngwụcha nke usoro 10-akwụkwọ ebe a nwara ikpuchi ikike ngalaba achọrọ iji gafee ule LFCS.

Maka ihe doro anya, ọ gaghị ekwe omume ikpuchi akụkụ ọ bụla nke isiokwu ndị a na nkuzi ọ bụla, ọ bụ ya mere anyị ji atụ anya na isiokwu ndị a etinyela gị n'ụzọ ziri ezi iji nwalee ihe ọhụrụ n'onwe gị ma nọgide na-amụ ihe.

Ọ bụrụ na ị nwere ajụjụ ọ bụla ma ọ bụ nkwupụta, a na-anabata ha mgbe niile - yabụ egbula oge idobe anyị ahịrị site na ụdị dị n'okpuru!