openSUSEa suomeksi

openSUSE => Palvelinohjelmat ja ohjelmointi => Aiheen aloitti: RaijaR - 24.04.2021 - klo:13:09

Otsikko: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: RaijaR - 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
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: SuperOscar - 24.04.2021 - klo:14:58
Ks. man at, etenkin osiota Examples.
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: peran - 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.
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: RaijaR - 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
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: RaijaR - 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?
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: raimo - 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
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: peran - 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
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: RaijaR - 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.
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: peran - 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.
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: harmie - 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/
Otsikko: Vs: Skripti joka käynnistetään tiettynä aikana
Kirjoitti: RaijaR - 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