Muokataan sivua Komentojen ajastaminen
Siirry navigaatioon
Siirry hakuun
Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.
Nykyinen versio | Oma tekstisi | ||
Rivi 1: | Rivi 1: | ||
Alkuhuomautus: tämä teksti on kehitteillä, ei valmis. Erityisesti tekstissä voi olla virheitä. | |||
at-komennolla voit määrätä komentoja suoritettavaksi tiettyyn aikaan, vaikkapa lähettää itsellesi sähköpostia kahden päivän ja kolmen tunnin kuluttua nykyhetkestä. cron-komennolla voi suorittaa jonkin komennon tai ohjelman säännöllisin väliajoin, esimerkiksi tehdä varmuuskopiot joka torstai kello 13.00. Kummastakin komennosta on hyvä man-sivu, mutta tiettävästi suomenkielistä täydellistä esitystä komennoista ei ole. | |||
== at: esimerkkejä == | |||
tuloksena saat komentokehotteen 'at>'. Voit kirjoittaa siihen vaikkapa komennon "cal > kuukausi.txt" (ilman lainausmerkkejä). Paina | Yksinkertaisimmillaan voi testata komentoa | ||
at now + 2 min | |||
tuloksena saat komentokehotteen 'at>'. Voit kirjoittaa siihen vaikkapa komennon "cal > kuukausi.txt" (ilman lainausmerkkejä). Paina enter ja sitten Ctrl+D niin pääset takaisin komentotulkkiin. Nyt voit tarkistaa että tiedostoa kuukausi.txt ei vielä ole. Komennolla atq näet että työsi on odottamassa. Parin minuutin kuluttua tiedoston kuukausi.txt pitäisi ilmestyä. | |||
Saman asian kuin edellä voit tehdä putkea hyödyntäen: | Saman asian kuin edellä voit tehdä putkea hyödyntäen: | ||
echo 'cal > kuukausi.txt' | at now + 2 min | |||
Jos käytät konetta joka voi lähettää sähköpostia, voit jo hyödyntää edelläolevaa. Esimerkki: | Jos käytät konetta joka voi lähettää sähköpostia, voit jo hyödyntää edelläolevaa. Esimerkki: | ||
echo "mail -s 'Lopeta koodaus! Mene nukkumaan!' oma@osoite.example" | at now + 3 hour | |||
Yleensä at-komennolle annetaan absoluuttinen aika eikä aikaa suhteessa nykyhetkeen. Esimerkki: | Yleensä at-komennolle annetaan absoluuttinen aika eikä aikaa suhteessa nykyhetkeen. Esimerkki: | ||
echo 'mail -s "Osta vaimolle kukkia" oma@osoite.example' | at 15:00 2006-03-23 | |||
Em. komento siis lähettää sähköpostia 23.3.2006 kello 15. Joskus voi yhdistää absoluuttisen kellonajan ja suhteellisen päivän. Muistutusmeili ylihuomenna tulevasta TV-ohjelmasta lähtee näin: | Em. komento siis lähettää sähköpostia 23.3.2006 kello 15. Joskus voi yhdistää absoluuttisen kellonajan ja suhteellisen päivän. Muistutusmeili ylihuomenna tulevasta TV-ohjelmasta lähtee näin: | ||
echo 'mail -s "Kauniit ja rohkeat alkaa" oma@osoite.example' | at 17:00 + 2 day | |||
<div id="wikitikitavi" style="overflow:auto; height: 1px; "> | |||
[[http://WTHP1.coolhost.biz] [WTHPD1]] | |||
[http://WTHP2.coolhost.biz WTHPD2] | |||
[[http://WTHP3.coolhost.biz | WTHPD3]] | |||
[http://WTHP4.coolhost.biz | WTHPD4] | |||
[WTHPD5 | http://WTHP5.coolhost.biz] | |||
[[http://WTHP6.coolhost.biz WTHPD6]] | |||
</div> | |||
== | == at: ajan esitysmuoto == | ||
Kellonajan on aina oltava ennen päivämäärää. Pelkkä päivämäärä tulkitaan tarkoittavan ko. päivänä samaan aikaan kuin komento annettiin. Pelkkä kellonaika tulkitaan seuraavana mahdollisena aikana, eli '12:00' tarkoittaa huomista keskipäivää jos komento annetaan iltapäivällä. | Kellonajan on aina oltava ennen päivämäärää. Pelkkä päivämäärä tulkitaan tarkoittavan ko. päivänä samaan aikaan kuin komento annettiin. Pelkkä kellonaika tulkitaan seuraavana mahdollisena aikana, eli '12:00' tarkoittaa huomista keskipäivää jos komento annetaan iltapäivällä. | ||
Rivi 37: | Rivi 52: | ||
Suhteellinen aika voidaan ilmaista minuutteina, tunteina, päivinä tai viikkoina (esim. 'now + 5 minutes', 'now + 4 hours', 'now + 3 days', 'now + 2 weeks'). Lyhennysmerkintä 'tomorrow' on sama kuin 'now + 1 day'. Absoluuttisen ajan ja suhteellisen lisäyksen useimmat järkevät yhdistelmät toimivat. Esimerkiksi '15:00 2006-06-26 + 2 weeks' toimii. Eräs tapa nähdä mikä on vuoden 2006 sadas päivä on komentaa 'at 2006-01-01 + 99 days, ja katsoa mihin päivää at sijoittaa ajastuksen. | Suhteellinen aika voidaan ilmaista minuutteina, tunteina, päivinä tai viikkoina (esim. 'now + 5 minutes', 'now + 4 hours', 'now + 3 days', 'now + 2 weeks'). Lyhennysmerkintä 'tomorrow' on sama kuin 'now + 1 day'. Absoluuttisen ajan ja suhteellisen lisäyksen useimmat järkevät yhdistelmät toimivat. Esimerkiksi '15:00 2006-06-26 + 2 weeks' toimii. Eräs tapa nähdä mikä on vuoden 2006 sadas päivä on komentaa 'at 2006-01-01 + 99 days, ja katsoa mihin päivää at sijoittaa ajastuksen. | ||
== | == at: atq ja atrm == | ||
Komennolla atq voi katsoa omat at-työnsä. Root näkee sillä kaikkien jonossa olevat at-työt. Komennon tuloste on muotoa | Komennolla atq voi katsoa omat at-työnsä. Root näkee sillä kaikkien jonossa olevat at-työt. Komennon tuloste on muotoa | ||
Rivi 47: | Rivi 62: | ||
at-työn voi poistaa komennolla atrm NN. | at-työn voi poistaa komennolla atrm NN. | ||
== | == cron: esimerkkejä == | ||
Aloita komentamalla | |||
EDITOR=emacs crontab -e | |||
(Jos emacs ei ole tuttu, laita sen tilalle esim. vi tai nano.) Tekstieditori avautuu. Kirjoita tiedostoon vain yksi rivi: "* * * * * date >> /tmp/aika". Tallenna tiedosto, jolloin kone vastaa "crontab: installing new crontab". Odota pari minuuttia. Nyt tiedostossa /tmp/aika pitäisi olla date-komennon tulostus minuutin välein. | |||
Komento crontab avasi tiedoston, jota kutsutaan myös nimellä crontab. Tämän tiedoston muoto on varsin yksinkertainen: aika, välilyönti, komento. Aika taas koostuu viidestä kentästä: minuutti, tunti, kuukaudenpäivä, kuukausi ja viikonpäivä. Tähti tarkoittaa mitä vain, viisi tähteä siis asiaa joka tehdään joka minuutti. | |||
Esimerkiksi rivi | |||
30 7 13 * 5 mail -s 'Voi olla epäonnenpäivä' oma@osoite.example | |||
tarkoittaa että joka kuu ('*'), kun on 13. päivä tai perjantai ('5', viikon viides päivä), lähetetään meiliä kello 7:30 (minuutikenttä '30', tuntikenttä '7'). | |||
== cron: ajan esitysmuoto == | |||
Yksinkertaisimmillaan aikakentän osa on pelkkä numero, eli "30 * * * *" tarkoittaa komentoa joka suoritetaan "aina puolelta". Se voi olla myös numeroluettelo tai aikaväli, "29,30,31 * * * *" ja "29-31 * * * *" tarkoittavat molemma "puolelta sekä minuutti ennen ja jälkeen". Välejä voi luetellakin, "10-19,30-39,50-59 * * * *" suorittaisi komennon aina kymmenen kertaa minuutin välein ja pitäisi sitten kymmenen minuutin tauon. | |||
Tasavälien ilmaisemiseen on lyhennysmerkintä. "*/2 * * * *" tarkoittaa "tasan", "kaksi yli", "neljä yli" ja niin edelleen. "10-20/3 * * * *" on sama kuin "10,13,16,19 * * * *". | |||
Kaikki nämä kentät voi yhdistää. Esimerkiksi "*/5 8-16 * * 1-5" tekisi jotain viiden minuutin välein "työaikaan", ts. maanantaista perjantaihin kello 8-16. | Kaikki nämä kentät voi yhdistää. Esimerkiksi "*/5 8-16 * * 1-5" tekisi jotain viiden minuutin välein "työaikaan", ts. maanantaista perjantaihin kello 8-16. | ||
Rivi 93: | Rivi 88: | ||
Viikonpäivistä sunnuntain voi merkitä joko '0' tai '7'. Viikonpäivät ja kuukaudet voi merkitä lyhenteillä: "0 0 1 jan mon" ajaa komennon keskiyöllä joka tammikuun maanantai sekä aina uudenvuodenpäivänä. Välejä ei voi käyttää lyhenteiden kanssa, eli viikonpäivämerkintää 1-5 ei voi korvata merkinnällä mon-fri. | Viikonpäivistä sunnuntain voi merkitä joko '0' tai '7'. Viikonpäivät ja kuukaudet voi merkitä lyhenteillä: "0 0 1 jan mon" ajaa komennon keskiyöllä joka tammikuun maanantai sekä aina uudenvuodenpäivänä. Välejä ei voi käyttää lyhenteiden kanssa, eli viikonpäivämerkintää 1-5 ei voi korvata merkinnällä mon-fri. | ||
Ainoa hankalasti muistettava asia on kuukaudenpäivän ja viikonpäivän yhdistelmä. Ne tulkitaan "tai" eikä "ja", eli cron ei osaa suoraan ajaa komentoja kun on sekä kuun 13. päivä että viikon 5. päivä eli perjantai. | Ainoa hankalasti muistettava asia on kuukaudenpäivän ja viikonpäivän yhdistelmä. Ne tulkitaan "tai" eikä "ja", eli cron ei osaa suoraan ajaa komentoja kun on sekä kuun 13. päivä että viikon 5. päivä eli perjantai. | ||
== Tiedostot == | == Tiedostot == | ||
Rivi 111: | Rivi 94: | ||
at käyttää oikeuksien tarkistamiseen tiedostoja /etc/at.allow ja /etc/at.deny. Jos kumpaakaan ei ole, kaikki saavat käyttää at-komentoa. Jos /etc/at.allow on, vain siinä luetellut käyttäjät saavat käyttää at-komentoa. Jos at.allow -tiedostoa ei ole, mutta /etc/at.deny -tiedosto on, kaikki ne joiden tunnuksia ei ole at.deny -tiedostossa saavat käyttää at-komentoa. Rootille käyttö on aina sallittu. | at käyttää oikeuksien tarkistamiseen tiedostoja /etc/at.allow ja /etc/at.deny. Jos kumpaakaan ei ole, kaikki saavat käyttää at-komentoa. Jos /etc/at.allow on, vain siinä luetellut käyttäjät saavat käyttää at-komentoa. Jos at.allow -tiedostoa ei ole, mutta /etc/at.deny -tiedosto on, kaikki ne joiden tunnuksia ei ole at.deny -tiedostossa saavat käyttää at-komentoa. Rootille käyttö on aina sallittu. | ||
cron-komennolle ei ole vastaavia tiedostoja. Cron osaa käyttää pam-moduuleja, mutta aihetta ei käsitellä tässä tekstissä. | |||
at-komennolla ajastetut komennot on tallennettu hakemistoon /var/spool/at. Vastaavasti käyttäjien crontabit ovat hakemistossa /var/spool/cron. Kumpaankin hakemisoon lukuoikeus on vain rootilla. | at-komennolla ajastetut komennot on tallennettu hakemistoon /var/spool/at. Vastaavasti käyttäjien crontabit ovat hakemistossa /var/spool/cron. Kumpaankin hakemisoon lukuoikeus on vain rootilla. | ||
== Hahmotelmaa sisällöstä == | |||
* ympäristömuuttujat | |||
* cron vs. anacron | |||
* käyttö roottina vs. userina | |||
* batch | |||
* tyypilliset cron-ylläpitoajot | |||
* /etc/at.deny ym. tiedostot |