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.