Kirjoittaja Aihe: Skripti joka käynnistetään tiettynä aikana  (Luettu 14126 kertaa)

0 jäsentä ja 1 Vieras katselee tätä aihetta.

Poissa RaijaR

  • Jäsen
  • Viestejä: 1476
  • Sukupuoli: Nainen
Skripti joka käynnistetään tiettynä aikana
« : 24.04.2021 - klo:13:09 »
Olen yrittänyt hahmotella skriptiä (olkoon nimeltään vaikka "temppu"), joka käynnistäisi kaksi pientä "juttua" tiettynä aikana.
Tarkemmin sanottuna esim. juttu1.sh klo 10:00 joka päivä ja juttu2.sh klo 18:00 joka päivä. Itse "jutut" osannen tehdä ja asettaa "tempun" käynnistymään, kun tietokonekin käynnistyy.

Mutta "juttujen" käynnistäminen "tempun" avulla ei ota tuulta purjeisiin. Apua olen etsinyt cron komennosta, mutta en oikein saa siitä selvää.

Luulen, että tämä ei kuluta arvon palstalaisilta monta minuuttia aikaa, mutta minä olen jo yhden illan asian kanssa tuhertanut ja tulos on 0  :P
Pöytäkone ASUS ExpertCenter PN52, Tumbleweed, jossa nippu distroja QEMU/KVM:ssä.
Ja Väinö-minibulli :D
Huom! Kirjoitusvihreet tulee jostain aravuudesta...

Paikalla SuperOscar

  • Käännösryhmä
  • *
  • Viestejä: 945
  • Sukupuoli: Mies
  • Tänään täällä, huomenna poissa
    • Legisign.org
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #1 : 24.04.2021 - klo:14:58 »
Ks. man at, etenkin osiota Examples.
pöytäkone 1, NUC: openSUSE Leap 15.6; kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

Poissa peran

  • Käännösryhmä
  • *
  • Viestejä: 453
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #2 : 24.04.2021 - klo:15:24 »
Ehkä tässä haetaan tarkemmin cron:ia ?

Koodia: [Valitse]
man crontab

Ehkä haluat jollakin käyttäjällä.
Koodia: [Valitse]
crontab -e

Jos haluat roottina...
Koodia: [Valitse]
sudo nano /etc/crontab

Edit -
Koodia: [Valitse]
crontab -e

sisällöksi...
Koodia: [Valitse]
0   18  *   *   *    bash -c "/home/user/myscript.sh"

Tässä siis suoritetaan klo 18:00 joka päivä myscript.sh. normaalina käyttäjänä. Huomioitavaa, että jos kone ei ole kyseisenä ajankohtana päällä, niin käskyä ei suoriteta ollenkaan.

Edit2 - Toki kommenttirivit (alkaa #:lla) kannattaa jättää näkyviin, ettei tartte arvuutella, kuinka se nyt meneekään...

Edit3 - Lisäksi, jos muokkaat /etc/crontab-tiedostoa, niin viimeisenä rivinä pitää olla #, koska viimeistä riviä ei lueta.

Edit4 -
Jos laitetaan käynnistymään molemmat...
sisällöksi...
Koodia: [Valitse]
crontab -e
Koodia: [Valitse]
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0   18  *   *   *    bash -c "/home/user/juttu2.sh"
0   10  *   *   *    bash -c "/home/user/juttu1.sh"

Edit5 - Taidatkin tarvita molempia tapoja...

Ei taida taipua minultakaan... :(

Ainakaan hätäisesti.
« Viimeksi muokattu: 24.04.2021 - klo:16:04 kirjoittanut peran »

Poissa RaijaR

  • Jäsen
  • Viestejä: 1476
  • Sukupuoli: Nainen
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #3 : 24.04.2021 - klo:17:59 »
Suurkiitos!

Tästä on hyvä minun aloittaa.
Monesti ohjeet on minulle aivan liian if-then-elsedo... Eli en saa selvää mitä mikäkin missäkin ja milloinka tekee vai tekeekö ollenkaan mitään missään...  ::)

Se alimman tason oppiminen sopii minulle eli yritys/erehdys  ;D
Pöytäkone ASUS ExpertCenter PN52, Tumbleweed, jossa nippu distroja QEMU/KVM:ssä.
Ja Väinö-minibulli :D
Huom! Kirjoitusvihreet tulee jostain aravuudesta...

Poissa RaijaR

  • Jäsen
  • Viestejä: 1476
  • Sukupuoli: Nainen
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #4 : 24.04.2021 - klo:19:53 »
Muutaman ongelman ja editointivirheiden jälkeen taitaa toimiakin  :D

Huseerasin kaikenlaisten netistä löytyvien komentojen kanssa sen verran, että pitää erikseen vielä kysyä, että käynnistyykö ajastetut komennot crontab -e editoinnin jälkeen automaattisesti vai onnistuinko käynnistämään komennot vanhingossa (?).

Muutenkin kiinnostaa, että miten käy, kun sähköt menee?

Katsoin mm. tuolta ja oletin, että openSUSE kuuluu Redhat/Fedora/CentOS -porukkaa. https://lifelinux.com/how-to-startstoprestart-cron-service-in-linux/
Nämä komennot eivät antaneet virhekuittausta, mutta ei muutakaan kuittausta:
# /etc/init.d/crond start
# /etc/init.d/crond stop
# /etc/init.d/crond restart

Semmoinen olisi iso apu, että saisin näkymään RTC kellon konsolissa... Onnistuuko sellainen jotenkin?
Pöytäkone ASUS ExpertCenter PN52, Tumbleweed, jossa nippu distroja QEMU/KVM:ssä.
Ja Väinö-minibulli :D
Huom! Kirjoitusvihreet tulee jostain aravuudesta...

Poissa raimo

  • Jäsen
  • Viestejä: 218
  • Sukupuoli: Mies
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #5 : 24.04.2021 - klo:21:12 »
Miksi tuo bash -c. Sen voi jättää pois kun antaa skriptille +x ajo-oikeuden. bash komento vaatisi polun olkoon nyt vaikka /usr/bin/bash
Mutta sen voi tosiaan jättää nevadaan kun komentaa:
Koodia: [Valitse]
chmod +x /home/user/juttu1.sh
Koodia: [Valitse]
chmod +x /home/user/juttu2.sh
Jolloin crontab -e olisi
Koodia: [Valitse]
# m h  dom mon dow   command
0   18  *   *   *    /home/user/juttu2.sh
0   10  *   *   *    /home/user/juttu1.sh

Poissa peran

  • Käännösryhmä
  • *
  • Viestejä: 453
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #6 : 25.04.2021 - klo:11:02 »
Huseerasin kaikenlaisten netistä löytyvien komentojen kanssa sen verran, että pitää erikseen vielä kysyä, että käynnistyykö ajastetut komennot crontab -e editoinnin jälkeen automaattisesti vai onnistuinko käynnistämään komennot vanhingossa (?).

Käsittääkseni (noin 99% todennäköisyydellä) ajastetut komennot käynnistyy automaattisesti.

Muutenkin kiinnostaa, että miten käy, kun sähköt menee?

Jos sähköt menee, niin crontab ei muista käynnistäessä käynnistää ajastettua edesmennyttä käskyä, mutta crontab asetukset kyllä säilyvät cronissa. Eli toisin sanoen... Tietokoneen tulee olla päällä, kun kyseisen scriptin ajankohta kilahtaa, mutta varsinaiset asetukset eivät häviä crontabista. Jos epäilytää, voit testata itsekin ... eli ...

Editoi crontab haluamaksesi, ja boottaa kone uudestaan, ja editoi uudestaan crontab:ia, niin huomaat, että aiemmat asetuksesi ovat säilyneet siinä.

Katsoin mm. tuolta ja oletin, että openSUSE kuuluu Redhat/Fedora/CentOS -porukkaa. https://lifelinux.com/how-to-startstoprestart-cron-service-in-linux/
Nämä komennot eivät antaneet virhekuittausta, mutta ei muutakaan kuittausta:
# /etc/init.d/crond start
# /etc/init.d/crond stop
# /etc/init.d/crond restart

Yleensä jakeluissa cron palvelu on oletusarvoisesti käynnissä, joten sitä ei tarvitse erikseen käynnistää.

Semmoinen olisi iso apu, että saisin näkymään RTC kellon konsolissa... Onnistuuko sellainen jotenkin?

En ymmärrä ...
Toki ajan näkee päätteessä käskyllä:
Koodia: [Valitse]
date

Poissa RaijaR

  • Jäsen
  • Viestejä: 1476
  • Sukupuoli: Nainen
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #7 : 25.04.2021 - klo:17:58 »
Tarkoitin RTC (real-time clock) kellolla sitä, että jollain komennolla saisi kellon juoksemaan reaaliajassa jossain näytön nurkassa, esim. konsolissa.
Pöytäkone ASUS ExpertCenter PN52, Tumbleweed, jossa nippu distroja QEMU/KVM:ssä.
Ja Väinö-minibulli :D
Huom! Kirjoitusvihreet tulee jostain aravuudesta...

Poissa peran

  • Käännösryhmä
  • *
  • Viestejä: 453
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #8 : 25.04.2021 - klo:18:14 »
Tarkoitin RTC (real-time clock) kellolla sitä, että jollain komennolla saisi kellon juoksemaan reaaliajassa jossain näytön nurkassa, esim. konsolissa.

Onko käytettävissä X ?

Jos on, niin mikä ?

Matessa ja monessa muussa saa ajan näkyviin widgeteillä. Eli lisäämällä paneelin ja sen asetuksissa lisäämään sopivan widgetin hiiren kakkosella. Jos ei ole käytettävissä X-ää, niin kannattaneen asentaa tty-clock, jolloin voi nähdä ajan merkkigrafiikalla. S-ää painamalla kyseisessä ikkunassa näkee sekunnit.

- edit
Käskyllä:
Koodia: [Valitse]
tty-clock -s

Näkee sekunnit.

Poissa harmie

  • Valvoja
  • *
  • Viestejä: 2795
  • Sukupuoli: Mies
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #9 : 26.04.2021 - klo:08:46 »
Itse käytän tuota byobu. Vaatii hieman opettelua, mutta sen jälkeen aivan lyömätön. Siinä on kello oikeassa alakulmassa.
https://www.byobu.org/

Poissa RaijaR

  • Jäsen
  • Viestejä: 1476
  • Sukupuoli: Nainen
Vs: Skripti joka käynnistetään tiettynä aikana
« Vastaus #10 : 26.04.2021 - klo:12:00 »
Kokeillaan kaikkia keinoja ja valitaan sopivin  :D

Itse projekti etenee lupaavasti (vain kaiuttimet puuttuu).

edit: lisätty puuttuvat kirjaimet
Pöytäkone ASUS ExpertCenter PN52, Tumbleweed, jossa nippu distroja QEMU/KVM:ssä.
Ja Väinö-minibulli :D
Huom! Kirjoitusvihreet tulee jostain aravuudesta...