RHCSA-serien: Yum-pakkehåndtering, automatisering af opgaver med Cron og overvågningssystemlogfiler - del 10


I denne artikel gennemgår vi, hvordan du installerer, opdaterer og fjerner pakker i Red Hat Enterprise Linux 7. Vi vil også dække, hvordan man automatiserer opgaver ved hjælp af cron, og vil afslutte denne vejledning, der forklarer, hvordan man finder og fortolker systemlogfiler med fokus at lære dig, hvorfor alle disse er vigtige færdigheder for enhver systemadministrator.

Håndtering af pakker via Yum

For at installere en pakke sammen med alle dens afhængigheder, der ikke allerede er installeret, skal du bruge:

# yum -y install package_name(s)

Hvor pakkenavn (er) repræsenterer mindst et rigtigt pakkenavn.

For eksempel, for at installere httpd og mlocate (i den rækkefølge).

# yum -y install httpd mlocate

Bemærk: At bogstavet y i eksemplet ovenfor omgår bekræftelsesanvisningerne, som yum præsenterer, før den faktiske download og installation af de ønskede programmer udføres. Du kan udelade det, hvis du vil.

Som standard installerer yum pakken med den arkitektur, der matcher OS-arkitekturen, medmindre den tilsidesættes ved at føje pakkearkitekturen til dens navn.

For eksempel på et 64-bit system installerer yum-installationspakken x86_64-versionen af pakken, mens yum-installationspakke. X86 (hvis tilgængelig) installerer 32-bit-pakken.

Der vil være tidspunkter, hvor du vil installere en pakke, men ikke ved dens nøjagtige navn. Søg alle eller søgemulighederne kan søge i de aktuelt aktiverede arkiver efter et bestemt nøgleord i henholdsvis pakkenavnet og/eller i dets beskrivelse.

For eksempel,

# yum search log

vil søge i de installerede arkiver efter pakker med ordloggen i deres navne og resuméer, mens

# yum search all log

vil også se efter det samme nøgleord i pakkebeskrivelsen og urlfelterne.

Når søgningen returnerer en pakkeoversigt, kan det være en god idé at få vist yderligere oplysninger om nogle af dem, før de installeres. Det er da infomuligheden vil være praktisk:

# yum info logwatch

Du kan regelmæssigt kontrollere for opdateringer med følgende kommando:

# yum check-update

Ovenstående kommando returnerer alle de installerede pakker, som en opdatering er tilgængelig for. I eksemplet vist på billedet nedenfor er kun rhel-7-server-rpms en opdatering tilgængelig:

Du kan derefter opdatere den pakke alene med,

# yum update rhel-7-server-rpms

Hvis der er flere pakker, der kan opdateres, opdateres yum-opdatering dem alle på én gang.

Hvad sker der nu, når du kender navnet på en eksekverbar fil, f.eks. Ps2pdf, men ikke ved, hvilken pakke der indeholder den? Du kan finde ud af med yum hvad der giver "*/[eksekverbar]" :

# yum whatprovides “*/ps2pdf”

Nu, når det kommer til at fjerne en pakke, kan du gøre det med yum remove package. Let, hva '? Dette viser at yum er en komplet og stærk pakkehåndtering.

# yum remove httpd

Læs også: 20 Yum-kommandoer til at styre RHEL 7-pakkehåndtering

God gammel almindelig RPM

RPM (også kaldet RPM Package Manager eller oprindeligt RedHat Package Manager) kan også bruges til at installere eller opdatere pakker, når de kommer i form af enkeltstående .rpm -pakker.

Det bruges ofte med -Uvh -flagene for at angive, at det skal installere pakken, hvis den ikke allerede er til stede, eller forsøge at opdatere den, hvis den er installeret (-U) , hvilket producerer et detaljeret output (-v) og en statuslinje med hashmærker (-h) , mens operationen udføres. For eksempel,

# rpm -Uvh package.rpm

En anden typisk anvendelse af rpm er at fremstille en liste over aktuelt installerede pakker med kode> rpm -qa (forkortelse for alle forespørgsler):

# rpm -qa

Læs også: 20 RPM-kommandoer til installation af pakker i RHEL 7

Planlægning af opgaver ved hjælp af Cron

Linux og andre Unix-lignende operativsystemer inkluderer et værktøj kaldet cron, der giver dig mulighed for at planlægge opgaver (dvs. kommandoer eller shell-scripts) til at køre med jævne mellemrum. Cron kontrollerer hvert minut kataloget/var/spool/cron for filer, der er opkaldt efter konti i/etc/passwd.

Ved udførelse af kommandoer sendes ethvert output til ejeren af crontab (eller til den bruger, der er specificeret i MAILTO-miljøvariablen i/etc/crontab, hvis den findes).

Crontab-filer (som oprettes ved at skrive crontab -e og trykke på Enter) har følgende format:

Således, hvis vi vil opdatere den lokale fildatabase (som bruges af lokalisere til at finde filer efter navn eller mønster) hver anden dag i måneden kl. 2:15, skal vi tilføje følgende crontab-post:

15 02 2 * * /bin/updatedb

Ovenstående crontab-post lyder: "Kør/bin/opdateretb på den anden dag i måneden, hver måned i året, uanset ugedag, kl. 2:15". Som jeg er sikker på, at du allerede har gættet, bruges stjernesymbolet som et jokertegn.

Efter tilføjelse af et cron-job kan du se, at en fil med navnet root blev tilføjet inde i/var/spool/cron, som vi nævnte tidligere. Denne fil viser alle de opgaver, som crondemonen skal køre:

# ls -l /var/spool/cron

I ovenstående billede kan den aktuelle brugers crontab vises enten ved hjælp af cat/var/spool/cron/root eller,

# crontab -l

Hvis du har brug for at køre en opgave på et mere finkornet grundlag (for eksempel to gange om dagen eller tre gange hver måned), kan cron også hjælpe dig med at gøre det.

For eksempel, for at køre/my/script den 1. og 15. i hver måned og sende ethvert output til/dev/null, kan du tilføje to crontab-poster som følger:

01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

Men for at opgaven skal være lettere at vedligeholde, kan du kombinere begge poster i en:

01 00 1,15 * *  /my/script > /dev/null 2>&1

Efter det foregående eksempel kan vi køre/my/other/script kl. 1:30 den første dag i måneden hver tredje måned:

30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

Men når du skal gentage en bestemt opgave hvert ”x” minut, time, dag eller måned, kan du dele den rigtige position med den ønskede frekvens. Følgende crontab-post har nøjagtig samme betydning som den forrige:

30 01 1 */3 * /my/other/script > /dev/null 2>&1

Eller måske skal du køre et bestemt job på en fast frekvens eller efter at systemet er startet op, for eksempel. Du kan bruge en af følgende strenge i stedet for de fem felter til at angive det nøjagtige tidspunkt, hvor dit job skal køres:

@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

Læs også: 11 kommandoer til planlægning af Cron-job i RHEL 7

Lokalisering og kontrol af logfiler

Systemlogfiler findes (og roteres) inde i/var/log-biblioteket. I henhold til Linux Filesystem Hierarchy Standard indeholder denne mappe diverse logfiler, der skrives til den eller en passende underkatalog (såsom audit, httpd eller samba i billedet nedenfor) af de tilsvarende dæmoner under systemdrift:

# ls /var/log

Andre interessante logfiler er dmesg (indeholder alle meddelelser fra kernelringbuffer), sikker (logforbindelsesforsøg, der kræver brugergodkendelse), meddelelser (systemomfattende meddelelser) og wtmp (registreringer af alle brugerlogins og -logouts).

Logfiler er meget vigtige, fordi de giver dig mulighed for at få et glimt af, hvad der altid sker i dit system, og hvad der er sket tidligere. De repræsenterer et uvurderligt værktøj til fejlfinding og overvågning af en Linux-server og bruges således ofte med tail -f-kommandoen til at vise begivenheder i realtid, når de sker og registreres i en log.

Hvis du f.eks. Vil vise kernerelaterede begivenheder, skal du skrive følgende kommando:

# tail -f /var/log/dmesg

Samme, hvis du vil se adgang til din webserver:

# tail -f /var/log/httpd/access.log

Resumé

Hvis du ved, hvordan du effektivt administrerer pakker, planlægger opgaver, og hvor du skal lede efter oplysninger om den aktuelle og tidligere drift af dit system, kan du være sikker på, at du ikke kommer til at komme i overraskelser meget ofte. Jeg håber, at denne artikel har hjulpet dig med at lære eller opdatere din viden om disse grundlæggende færdigheder.

Tøv ikke med at sende os en linje ved hjælp af nedenstående kontaktformular, hvis du har spørgsmål eller kommentarer.