Zoeken op website

RHCSA-serie: Yum-pakketbeheer, taken automatiseren met Cron en systeemlogboeken monitoren - Deel 10


In dit artikel zullen we bekijken hoe je pakketten installeert, updatet en verwijdert in Red Hat Enterprise Linux 7. We zullen ook bespreken hoe u taken kunt automatiseren met behulp van cron, en we zullen deze handleiding afsluiten met uitleg over hoe u systeemlogbestanden kunt lokaliseren en interpreteren, met de focus om u te leren waarom dit allemaal essentiële vaardigheden zijn voor elke systeembeheerder.

Pakketten beheren via Yum

Om een pakket te installeren samen met al zijn afhankelijkheden die nog niet zijn geïnstalleerd, gebruikt u:


yum -y install package_name(s)

Waarbij pakketnaam(en) ten minste één echte pakketnaam vertegenwoordigen.

Om bijvoorbeeld httpd en mlocate te installeren (in die volgorde), typt u.


yum -y install httpd mlocate

Opmerking: dat de letter y in het bovenstaande voorbeeld de bevestigingsvragen omzeilt die yum presenteert voordat de daadwerkelijke download en installatie van de gevraagde programma's wordt uitgevoerd. Je kunt het weglaten als je wilt.

Standaard zal yum het pakket installeren met de architectuur die overeenkomt met de OS-architectuur, tenzij dit wordt overschreven door de pakketarchitectuur aan de naam toe te voegen.

Op een 64 bit systeem zal yum install package bijvoorbeeld de x86_64 versie van het pakket installeren, terwijl yum install package.x86 (indien beschikbaar) zal de 32-bit versie installeren.

Er zullen momenten zijn waarop u een pakket wilt installeren, maar de exacte naam ervan niet kent. Met de opties alles zoeken of zoeken kunnen de momenteel ingeschakelde opslagplaatsen worden doorzocht op een bepaald trefwoord in respectievelijk de pakketnaam en/of de beschrijving ervan.

Bijvoorbeeld,


yum search log

zal in de geïnstalleerde opslagplaatsen zoeken naar pakketten met het woord log in hun naam en samenvattingen, terwijl


yum search all log

zal ook naar hetzelfde trefwoord zoeken in de pakketbeschrijving en de url-velden.

Zodra de zoekopdracht een pakketlijst oplevert, wilt u misschien meer informatie over sommige ervan weergeven voordat u met de installatie begint. Dan komt de optie info van pas:


yum info logwatch

U kunt regelmatig controleren op updates met de volgende opdracht:


yum check-update

De bovenstaande opdracht retourneert alle geïnstalleerde pakketten waarvoor een update beschikbaar is. In het voorbeeld in de onderstaande afbeelding is alleen voor rhel-7-server-rpms een update beschikbaar:

U kunt dat pakket vervolgens alleen bijwerken met,


yum update rhel-7-server-rpms

Als er meerdere pakketten zijn die kunnen worden bijgewerkt, zal yum update ze allemaal tegelijk bijwerken.

Wat gebeurt er als u de naam kent van een uitvoerbaar bestand, zoals ps2pdf, maar niet weet welk pakket dit levert? Je kunt erachter komen met yum whatprovides “*/[executable] ”:


yum whatprovides “*/ps2pdf”

Als het nu gaat om het verwijderen van een pakket, kun je dat doen met yum remove package. Makkelijk, hè? Dit laat zien dat yum een complete en krachtige pakketbeheerder is.


yum remove httpd

Lees ook: 20 Yum-opdrachten om RHEL 7-pakketbeheer te beheren

Goede oude gewone RPM

RPM (ook bekend als RPM Package Manager, of oorspronkelijk RedHat Package Manager) kan ook worden gebruikt om pakketten te installeren of bij te werken als ze in de vorm van standalone komen .rpm pakketten.

Het wordt vaak gebruikt met de vlaggen -Uvh om aan te geven dat het het pakket moet installeren als het nog niet aanwezig is, of moet proberen het bij te werken als het (-U) is geïnstalleerd, waardoor het wordt geproduceerd een uitgebreide uitvoer (-v) en een voortgangsbalk met hekjes (-h) terwijl de bewerking wordt uitgevoerd. Bijvoorbeeld,


rpm -Uvh package.rpm

Een ander typisch gebruik van rpm is het produceren van een lijst met momenteel geïnstalleerde pakketten metrpm -qa (afkorting van query all):


rpm -qa

Lees ook: 20 RPM-opdrachten om pakketten te installeren in RHEL 7

Taken plannen met Cron

Linux en andere Unix-achtige besturingssystemen bevatten een tool genaamd cron waarmee je taken (dat wil zeggen opdrachten of shellscripts) kunt plannen om op periodieke basis te worden uitgevoerd. Cron controleert elke minuut de map /var/spool/cron op bestanden die zijn vernoemd naar accounts in /etc/passwd.

Bij het uitvoeren van opdrachten wordt alle uitvoer naar de eigenaar van de crontab gemaild (of naar de gebruiker die is opgegeven in de omgevingsvariabele MAILTO in /etc/crontab sterk>, als het bestaat).

Crontab-bestanden (die worden gemaakt door crontab -e te typen en op Enter te drukken) hebben de volgende indeling:

Als we dus de lokale bestandsdatabase (die wordt gebruikt bij het zoeken naar bestanden op naam of patroon) elke tweede dag van de maand om 2:15 uur willen bijwerken, moeten we het volgende toevoegen crontab-invoer:


15 02 2 * * /bin/updatedb

Het bovenstaande crontab-item luidt: "Voer /bin/updatedb uit op de tweede dag van de maand, elke maand van het jaar, ongeacht de dag van de week, om 02:15 uur ". Zoals je vast al geraden hebt, wordt het stersymbool gebruikt als jokerteken.

Na het toevoegen van een cronjob kun je zien dat er een bestand met de naam root is toegevoegd binnen /var/spool/cron, zoals we eerder vermeldden. Dat bestand vermeldt alle taken die de crond daemon zou moeten uitvoeren:


ls -l /var/spool/cron

In de bovenstaande afbeelding kan de crontab van de huidige gebruiker worden weergegeven met behulp van cat /var/spool/cron/root of,


crontab -l

Als u een taak op een meer verfijnde basis wilt uitvoeren (bijvoorbeeld twee keer per dag of drie keer per maand), kan cron u daarbij ook helpen.

Als u bijvoorbeeld /my/script op de 1e en 15e van elke maand wilt uitvoeren en uitvoer naar /dev/null wilt sturen, kunt u voeg als volgt twee crontab-items toe:


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

Maar om de taak gemakkelijker te kunnen onderhouden, kunt u beide vermeldingen in één combineren:


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

In navolging van het vorige voorbeeld kunnen we /my/other/script elke drie maanden om 01.30 uur op de eerste dag van de maand uitvoeren:


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

Maar wanneer u een bepaalde taak elke “x” minuten, uren, dagen of maanden moet herhalen, kunt u de juiste positie delen door de gewenste frequentie. Het volgende crontab-item heeft exact dezelfde betekenis als het vorige:


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

Of misschien moet u bijvoorbeeld een bepaalde taak op een vaste frequentie uitvoeren of nadat het systeem is opgestart. U kunt een van de volgende tekenreeksen gebruiken in plaats van de vijf velden om het exacte tijdstip aan te geven waarop u uw taak wilt uitvoeren:


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

Lees ook: 11 opdrachten voor het plannen van cron-taken in RHEL 7

Logboeken lokaliseren en controleren

Systeemlogboeken bevinden zich (en worden geroteerd) in de map /var/log. Volgens de Linux Filesystem Hierarchy Standard bevat deze map diverse logbestanden, die ernaar worden geschreven of naar een geschikte submap (zoals audit, httpd of samba in de onderstaande afbeelding) door de overeenkomstige daemons tijdens de werking van het systeem:


ls /var/log

Andere interessante logbestanden zijn dmesg (bevat alle berichten van de kernelringbuffer), secure (logt verbindingspogingen waarvoor gebruikersauthenticatie vereist is), berichten (systeembrede berichten) en wtmp (records van alle gebruikersaanmeldingen en -uitlogingen).

Logboeken zijn erg belangrijk omdat ze u in staat stellen een glimp op te vangen van wat er op elk moment in uw systeem gebeurt en wat er in het verleden is gebeurd. Ze vertegenwoordigen een onschatbaar hulpmiddel voor het oplossen van problemen en het monitoren van een Linux-server, en worden daarom vaak gebruikt met het tail -f commando om gebeurtenissen in realtime weer te geven terwijl ze plaatsvinden en worden vastgelegd in een logboek.

Als u bijvoorbeeld kernelgerelateerde gebeurtenissen wilt weergeven, typt u de volgende opdracht:


tail -f /var/log/dmesg

Hetzelfde als u de toegang tot uw webserver wilt bekijken:


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

Samenvatting

Als u weet hoe u pakketten efficiënt kunt beheren, taken kunt plannen en waar u informatie kunt zoeken over de huidige en vroegere werking van uw systeem, kunt u er zeker van zijn dat u niet vaak voor verrassingen zult komen te staan. Ik hoop dat dit artikel je heeft geholpen om je kennis over deze basisvaardigheden te leren of op te frissen.

Aarzel niet om ons een bericht te sturen via het onderstaande contactformulier als u vragen of opmerkingen heeft.