RHCSA-serien: Yum-pakkeadministrasjon, automatisering av oppgaver med Cron og overvåkingssystemlogger - del 10


I denne artikkelen vil vi gjennomgå hvordan du installerer, oppdaterer og fjerner pakker i Red Hat Enterprise Linux 7. Vi vil også dekke hvordan du automatiserer oppgaver ved hjelp av cron, og vil fullføre denne veiledningen som forklarer hvordan du finner og tolker systemloggfiler med fokus for å lære deg hvorfor alle disse er viktige ferdigheter for enhver systemadministrator.

Administrere pakker via Yum

For å installere en pakke sammen med alle dens avhengigheter som ikke allerede er installert, bruker du:

# yum -y install package_name(s)

Der pakkenavn(er) representerer minst ett reelt pakkenavn.

For å installere httpd og mlocate (i den rekkefølgen), skriv for eksempel.

# yum -y install httpd mlocate

Merk: At bokstaven y i eksemplet ovenfor omgår bekreftelsesmeldingene som yum presenterer før den faktiske nedlastingen og installasjonen av de forespurte programmene utføres. Du kan utelate det hvis du vil.

Som standard vil yum installere pakken med arkitekturen som samsvarer med OS-arkitekturen, med mindre den overstyres ved å legge til pakkearkitekturen til navnet.

For eksempel, på et 64-bitssystem, vil yum install-pakken installere x86_64-versjonen av pakken, mens yum install package.x86 (hvis tilgjengelig) vil installere 32-biters.

Det vil være tider når du vil installere en pakke, men ikke vet det nøyaktige navnet. Søk alle eller søkealternativene kan søke i de aktiverte lagrene for et bestemt nøkkelord i henholdsvis pakkenavnet og/eller i beskrivelsen.

For eksempel,

# yum search log

vil søke i de installerte depotene etter pakker med ordloggen i navnene og sammendragene, mens

# yum search all log

vil se etter det samme nøkkelordet i pakkebeskrivelsen og url-feltene også.

Når søket returnerer en pakkeoppføring, vil du kanskje vise mer informasjon om noen av dem før du installerer. Det er da info-alternativet kommer godt med:

# yum info logwatch

Du kan regelmessig se etter oppdateringer med følgende kommando:

# yum check-update

Kommandoen ovenfor vil returnere alle de installerte pakkene som en oppdatering er tilgjengelig for. I eksemplet vist i bildet nedenfor er det bare rhel-7-server-rpms som har en oppdatering tilgjengelig:

Du kan deretter oppdatere den pakken alene med,

# yum update rhel-7-server-rpms

Hvis det er flere pakker som kan oppdateres, vil yum update oppdatere alle på en gang.

Hva skjer nå når du vet navnet på en kjørbar fil, for eksempel ps2pdf, men ikke vet hvilken pakke som gir den? Du kan finne ut med yum whatprovides \*/[kjørbar]”:

# yum whatprovides “*/ps2pdf”

Nå, når det gjelder å fjerne en pakke, kan du gjøre det med yum remove-pakke. Enkelt, ikke sant? Dette viser at yum er en komplett og kraftig pakkebehandler.

# yum remove httpd

Les også: 20 Yum-kommandoer for å administrere RHEL 7-pakkehåndtering

Good Old Plain RPM

RPM (aka RPM Package Manager, eller opprinnelig RedHat Package Manager) kan også brukes til å installere eller oppdatere pakker når de kommer i form av frittstående .rpm-pakker.

Den brukes ofte med -Uvh-flaggene for å indikere at den skal installere pakken hvis den ikke allerede er til stede, eller forsøke å oppdatere den hvis den er installert (-U), og produserer en detaljert utgang (-v) og en fremdriftslinje med hash-merker (-h) mens operasjonen utføres. For eksempel,

# rpm -Uvh package.rpm

En annen typisk bruk av rpm er å lage en liste over installerte pakker medrpm -qa (forkortelse for query all):

# rpm -qa

Les også: 20 RPM-kommandoer for å installere pakker i RHEL 7

Planlegging av oppgaver ved hjelp av Cron

Linux og andre Unix-lignende operativsystemer inkluderer et verktøy kalt cron som lar deg planlegge oppgaver (dvs. kommandoer eller shell-skript) som skal kjøres med jevne mellomrom. Cron sjekker hvert minutt /var/spool/cron-katalogen for filer som er oppkalt etter kontoer i /etc/passwd.

Når du utfører kommandoer, sendes alle utdata til eieren av crontab (eller til brukeren spesifisert i MAILTO-miljøvariabelen i /etc/crontab, hvis den eksisterer).

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

Derfor, hvis vi ønsker å oppdatere den lokale fildatabasen (som brukes av locate for å finne filer etter navn eller mønster) annenhver dag i måneden kl. 02:15, må vi legge til følgende crontab-oppføring:

15 02 2 * * /bin/updatedb

Crontab-oppføringen ovenfor lyder: «Kjør /bin/updatedb den andre dagen i måneden, hver måned i året, uavhengig av ukedagen, klokken 02:15.» Som du sikkert allerede har gjettet , stjernesymbolet brukes som jokertegn.

Etter å ha lagt til en cron-jobb, kan du se at en fil med navnet root ble lagt til i /var/spool/cron, som vi nevnte tidligere. Den filen viser alle oppgavene som crond-demonen skal kjøre:

# ls -l /var/spool/cron

I bildet ovenfor kan gjeldende brukers crontab vises enten ved å bruke cat /var/spool/cron/root eller,

# crontab -l

Hvis du trenger å kjøre en oppgave på en mer finkornet basis (for eksempel to ganger om dagen eller tre ganger hver måned), kan cron også hjelpe deg med det.

For eksempel, for å kjøre /my/script den 1. og 15. i hver måned og sende utdata til /dev/null, kan du legge til to crontab-oppføringer som følger:

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

Men for at oppgaven skal være enklere å vedlikeholde, kan du kombinere begge oppføringene til én:

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

Etter forrige eksempel kan vi kjøre /my/other/script klokken 01:30 på den første dagen 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 må gjenta en bestemt oppgave hvert \x minutt, time, dag eller måned, kan du dele riktig posisjon med ønsket frekvens. Følgende crontab-oppføring har nøyaktig samme betydning som den forrige:

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

Eller kanskje du trenger å kjøre en bestemt jobb på en fast frekvens eller etter at systemet starter opp, for eksempel. Du kan bruke en av følgende strenger i stedet for de fem feltene for å angi det nøyaktige tidspunktet når du vil at jobben skal kjøre:

@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 * * * *.

Les også: 11 kommandoer for å planlegge Cron-jobber i RHEL 7

Finne og sjekke logger

Systemlogger er plassert (og rotert) inne i /var/log-katalogen. I henhold til Linux Filesystem Hierarchy Standard inneholder denne katalogen diverse loggfiler, som er skrevet til den eller en passende underkatalog (som revisjon, httpd eller samba i bildet nedenfor) av de tilsvarende demonene under systemdrift:

# ls /var/log

Andre interessante logger er dmesg (inneholder alle meldinger fra kjerneringbuffer), sikker (logger tilkoblingsforsøk som krever brukerautentisering), meldinger (systemomfattende meldinger) og wtmp (registreringer av alle brukerpålogginger og utlogginger).

Logger er svært viktige ved at de lar deg få et glimt av hva som til enhver tid skjer i systemet ditt, og hva som har skjedd tidligere. De representerer et uvurderlig verktøy for å feilsøke og overvåke en Linux-server, og brukes derfor ofte med tail -f-kommandoen for å vise hendelser, i sanntid, når de skjer og registreres i en logg.

Hvis du for eksempel vil vise kjernerelaterte hendelser, skriv inn følgende kommando:

# tail -f /var/log/dmesg

Samme hvis du vil se tilgang til webserveren din:

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

Sammendrag

Hvis du vet hvordan du effektivt administrerer pakker, planlegger oppgaver og hvor du skal lete etter informasjon om gjeldende og tidligere drift av systemet ditt, kan du være trygg på at du ikke kommer til å møte overraskelser veldig ofte. Jeg håper denne artikkelen har hjulpet deg med å lære eller oppdatere kunnskapen din om disse grunnleggende ferdighetene.

Ikke nøl med å kontakte oss via kontaktskjemaet nedenfor hvis du har spørsmål eller kommentarer.