RHCSA-sarja: Yum-pakettien hallinta, tehtävien automatisointi Cronin avulla ja valvontajärjestelmän lokit - Osa 10
Tässä artikkelissa tarkastellaan pakettien asentamista, päivittämistä ja poistamista Red Hat Enterprise Linux 7:ssä. Käsittelemme myös tehtävien automatisointia cron-työkalun avulla ja lopetamme tämän oppaan, jossa selitetään järjestelmän lokitiedostojen paikantaminen ja tulkitseminen. Tarkoituksena on opettaa sinulle, miksi nämä kaikki ovat tärkeitä taitoja jokaiselle järjestelmänvalvojalle.
Pakettien hallinta Yumin kautta
Jos haluat asentaa paketin ja kaikki sen riippuvuudet, joita ei ole vielä asennettu, käytä:
yum -y install package_name(s)
Missä paketin_nimi(t) edustavat vähintään yhtä todellista paketin nimeä.
Jos haluat esimerkiksi asentaa httpd ja mlocate (tässä järjestyksessä), kirjoita.
yum -y install httpd mlocate
Huomaa: kirjain y yllä olevassa esimerkissä ohittaa vahvistuskehotteet, jotka yum esittää ennen pyydettyjen ohjelmien lataamista ja asentamista. Voit jättää sen pois, jos haluat.
Oletuksena yum asentaa paketin arkkitehtuurilla, joka vastaa käyttöjärjestelmän arkkitehtuuria, ellei sitä ohiteta lisäämällä paketin arkkitehtuuri sen nimeen.
Esimerkiksi 64-bittisessä järjestelmässä yum-asennuspaketti asentaa paketin x86_64-version, kun taas yum-asennuspaketti.x86 (jos saatavilla) asentaa 32-bittisen.
Joskus haluat asentaa paketin, mutta et tiedä sen tarkkaa nimeä. Hae kaikista- tai haku-vaihtoehdoilla voidaan etsiä tällä hetkellä käytössä olevista tietovarastoista tiettyä avainsanaa paketin nimessä ja/tai sen kuvauksessa.
Esimerkiksi,
yum search log
etsii asennetuista arkistoista paketteja, joiden nimissä ja yhteenvedoissa on sana log, kun taas
yum search all log
etsii samaa avainsanaa myös paketin kuvaus- ja url-kentistä.
Kun haku palauttaa pakettiluettelon, saatat haluta näyttää lisätietoja joistakin niistä ennen asennusta. Silloin tieto-vaihtoehto on hyödyllinen:
yum info logwatch
Voit tarkistaa päivitykset säännöllisesti seuraavalla komennolla:
yum check-update
Yllä oleva komento palauttaa kaikki asennetut paketit, joille on saatavilla päivitys. Alla olevassa kuvassa näkyvässä esimerkissä vain rhel-7-server-rpms on päivitys saatavilla:
Voit sitten päivittää paketin yksin
yum update rhel-7-server-rpms
Jos päivitettäviä paketteja on useita, yum update päivittää ne kaikki kerralla.
Mitä nyt tapahtuu, kun tiedät suoritettavan tiedoston nimen, kuten ps2pdf, mutta et tiedä, mikä paketti sen tarjoaa? Voit selvittää komennolla yum whatprovides “*/[executable]”
:
yum whatprovides “*/ps2pdf”
Nyt kun tulee paketin poistaminen, voit tehdä sen yum remove package -toiminnolla. Helppoa, vai mitä? Tämä osoittaa, että yum on täydellinen ja tehokas paketinhallinta.
yum remove httpd
Lue myös: 20 Yum-komentoa RHEL 7 -paketin hallintaan
Vanha hyvä, tavallinen RPM
RPM:llä (alias RPM Package Manager tai alun perin RedHat Package Manager) voidaan myös asentaa tai päivittää paketteja, kun ne tulevat erillisinä. .rpm
-paketteja.
Sitä käytetään usein -Uvh
-lippujen kanssa osoittamaan, että sen pitäisi asentaa paketti, jos sitä ei vielä ole, tai yrittää päivittää se, jos se on asennettu (-U)
, mikä tuottaa monisanainen tulos (-v)
ja edistymispalkki, jossa on hash-merkit (-h)
toiminnon suorittamisen aikana. Esimerkiksi,
rpm -Uvh package.rpm
Toinen tyypillinen rpm käyttötapa on luoda luettelo tällä hetkellä asennetuista paketeista koodilla >rpm -qa (lyhenne sanoista query all):
rpm -qa
Lue myös: 20 RPM-komennot pakettien asentamiseksi RHEL 7:ssä
Tehtävien ajoittaminen Cronin avulla
Linux ja muut Unixin kaltaiset käyttöjärjestelmät sisältävät työkalun nimeltä cron, jonka avulla voit ajoittaa tehtäviä (eli komentoja tai komentosarjoja) suoritettavaksi säännöllisin väliajoin. Cron tarkistaa minuutin välein /var/spool/cron-hakemistosta tiedostot, jotka on nimetty tiedostossa /etc/passwd olevien tilien mukaan.
Kun komentoja suoritetaan, kaikki tulosteet lähetetään crontab:n omistajalle (tai käyttäjälle, joka on määritetty /etc/crontab-ympäristömuuttujassa MAILTO. vahva>, jos sellainen on olemassa).
Crontab-tiedostot (jotka luodaan kirjoittamalla crontab -e ja painamalla Enter) ovat seuraavassa muodossa:
Jos siis haluamme päivittää paikallisen tiedostotietokannan (jota locate käyttää tiedostojen etsimiseen nimen tai mallin mukaan) joka kuukauden toinen päivä klo 2.15, meidän on lisättävä crontab-merkintä:
15 02 2 * * /bin/updatedb
Yllä oleva crontab-merkintä kuuluu seuraavasti: "Suorita /bin/updatedb kuukauden toisena päivänä, vuoden jokaisena kuukautena, viikonpäivästä riippumatta, klo 2.15". Kuten olen varma, että jo arvasit, tähtimerkkiä käytetään jokerimerkkinä.
Kun olet lisännyt cron-työn, voit nähdä, että tiedosto nimeltä root on lisätty kohtaan /var/spool/cron, kuten mainitsimme aiemmin. Tiedostossa luetellaan kaikki tehtävät, jotka crond-daemonin tulee suorittaa:
ls -l /var/spool/cron
Yllä olevassa kuvassa nykyisen käyttäjän crontab voidaan näyttää joko käyttämällä cat /var/spool/cron/root tai
crontab -l
Jos sinun on suoritettava tehtävä yksityiskohtaisemmin (esimerkiksi kahdesti päivässä tai kolme kertaa kuukaudessa), cron voi myös auttaa sinua tekemään sen.
Jos esimerkiksi haluat suorittaa /my/script-tiedoston kunkin kuukauden 1. ja 15. päivänä ja lähettää tulosteen osoitteeseen /dev/null, voit lisää kaksi crontab-kohtaa seuraavasti:
01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1
Mutta jotta tehtävää olisi helpompi ylläpitää, voit yhdistää molemmat merkinnät yhdeksi:
01 00 1,15 * * /my/script > /dev/null 2>&1
Edellisen esimerkin mukaisesti voimme ajaa /my/other/script klo 01.30 kuukauden ensimmäisenä päivänä joka kolmas kuukausi:
30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1
Mutta kun sinun on toistettava tietty tehtävä ”x” minuutin, tunnin, päivän tai kuukauden välein, voit jakaa oikean paikan halutulla taajuudella. Seuraavalla crontab-merkinnällä on täsmälleen sama merkitys kuin edellisellä:
30 01 1 */3 * /my/other/script > /dev/null 2>&1
Tai ehkä sinun on suoritettava tietty työ tietyllä taajuudella tai esimerkiksi järjestelmän käynnistyksen jälkeen. Voit käyttää yhtä seuraavista merkkijonoista viiden kentän sijasta ilmoittaaksesi tarkan ajan, jolloin haluat työn suorittavan:
@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 * * * *.
Lue myös: 11 komentoa Cronin työpaikkojen ajoittamiseen RHEL 7:ssä
Lokien paikantaminen ja tarkistaminen
Järjestelmälokit sijaitsevat (ja pyöritetään) /var/log-hakemistossa. Linux Filesystem Hierarchy Standardin mukaan tämä hakemisto sisältää sekalaisia lokitiedostoja, jotka kirjoitetaan siihen tai sopivaan alihakemistoon (kuten audit, httpd tai samba alla olevassa kuvassa) vastaavien demonien toimesta järjestelmän toiminnan aikana:
ls /var/log
Muita mielenkiintoisia lokeja ovat dmesg (sisältää kaikki viestit ytimen rengaspuskurista), suojattu (kirjaa yhteysyritykset, jotka vaativat käyttäjän todennusta), viestit (järjestelmänlaajuiset viestit) ja wtmp (tietueet kaikista käyttäjien sisään- ja uloskirjautumisista).
Lokit ovat erittäin tärkeitä, koska niiden avulla voit nähdä koko ajan, mitä järjestelmässäsi tapahtuu ja mitä on tapahtunut menneisyydessä. Ne edustavat korvaamatonta työkalua Linux-palvelimen vianmääritykseen ja valvontaan, ja siksi niitä käytetään usein tail -f -komennon
kanssa näyttämään tapahtumia reaaliajassa, kun ne tapahtuvat ja kirjataan lokiin.
Jos esimerkiksi haluat näyttää ytimeen liittyviä tapahtumia, kirjoita seuraava komento:
tail -f /var/log/dmesg
Sama, jos haluat nähdä pääsyn verkkopalvelimellesi:
tail -f /var/log/httpd/access.log
Yhteenveto
Jos osaat hallita paketteja tehokkaasti, ajoittaa tehtäviä ja mistä etsiä tietoa järjestelmäsi nykyisestä ja aiemmasta toiminnasta, voit olla varma, ettet kohtaa yllätyksiä kovin usein. Toivon, että tämä artikkeli on auttanut sinua oppimaan näitä perustaitoja koskevia tai päivittämään tietojasi.
Älä epäröi ottaa yhteyttä alla olevalla yhteydenottolomakkeella, jos sinulla on kysyttävää tai kommentteja.