NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s podporou uplatnění od 0 Kč. Více informací.
Avatar
Miro Koutný
Člen
Avatar
Miro Koutný:9.12.2016 1:13

Zdravím všechny,
chtěl bych se zeptat zda nemáte někdo zkušenost se spuštěním skriptu každých 45 sekund. Osobně tohle řeším poprvé, takže zkušenosti s tím nějak nemám. Pročetl jsem internet mrkl i na Youtube, ale nějak jsem nenašel odpověd. Našel jsem crone, ale ten to v sekundových intervalech neumí.
Pokud by jste někdo věděl jak implementovat tenhle časovač do mého skriptu tak, aby se zadalo číslo (nbr) a cesta (dst) a poté, aby se to vypisovalo každých 45 sekund tak bych byl moc vděčný.

#!/usr/local/bin/bash
#input parameters 1:number 2:destination (path)
UNAME=$(uname)
if [ $UNAME != Linux ];
then echo "Pracujete jinde nez v Linuxu"
fi

echo "Skript vypise obsah adresare"
echo "****************************************"
echo "Zadejte jak chcete vypsat obsah adresare"
sleep 1
echo "1.Strucne"
sleep 1
echo "2.Normalne"
sleep 1
echo "3.Uplne"

nbr=$1
while (( nbr < 1  ||  nbr > 3 ));
do
  read -p "Zadejte jak chcete vypsat adresar: " nbr
  if (( nbr < 1 || nbr > 3 ));
  then
    echo "Prosim vyberte cislo 1 az 3!"
  fi
done

dst=$2
while [ ! -d "$dst" ] || [ -z "$dst" ];
do
  read -p "Zadejte cestu k adresari: " dst
  if [ ! -d "$dst" ]; then
    echo "Nezadal jste spravnou cestu. Znovu!"
  fi
done

case "$nbr" in
  1)
    ls "$dst"
    ;;
  2)
    ls -l "$dst"
    ;;
  3)
    ls -la "$dst"
    ;;
esac
Editováno 9.12.2016 1:14
 
Odpovědět
9.12.2016 1:13
Avatar
mixxy
Člen
Avatar
mixxy:9.12.2016 1:56

Mrkni na tuhle konstrukci:

#!/bin/bash
# foo.sh
echo date +"%H:%M:%S" >> output.txt;
sleep 45;

Nahoru Odpovědět
9.12.2016 1:56
Neni dulezite mnoho vedet a znat. Dulezite je vedet, co je treba.
Avatar
Miro Koutný
Člen
Avatar
Odpovídá na mixxy
Miro Koutný:9.12.2016 1:58

Neprovedlo by se pouze vypsaní nějakého .txt dokumentu ?
Mě se jedná o to aby se provedlo celé tělo skriptu.
Ale zkusím to a uvidím :)

 
Nahoru Odpovědět
9.12.2016 1:58
Avatar
mixxy
Člen
Avatar
mixxy:9.12.2016 2:00

Poslal jsem ti konstrukci, implementaci necham na tobe ;-) Navic, tech 45s je pomlka, ale pokud ti neco vezme program, budes muset zapocitat delku trvani toho skriptu, ale je to spis takova berlicka, nez finalni reseni.

Nahoru Odpovědět
9.12.2016 2:00
Neni dulezite mnoho vedet a znat. Dulezite je vedet, co je treba.
Avatar
mixxy
Člen
Avatar
mixxy:9.12.2016 2:01

A jen tak mimochodem, co puzivas za linux?

Nahoru Odpovědět
9.12.2016 2:01
Neni dulezite mnoho vedet a znat. Dulezite je vedet, co je treba.
Avatar
Miro Koutný
Člen
Avatar
Odpovídá na mixxy
Miro Koutný:9.12.2016 2:04

Ubuntu

 
Nahoru Odpovědět
9.12.2016 2:04
Avatar
Mattew
Člen
Avatar
Mattew:9.12.2016 8:53

Systemd Timers
Myslím, že tohle je v současnosti nejlepší postup, pokud nejsi ortodoxní Gentoo linuxák.
A vůbce si myslím, že plně porozumět systemd je priorita, protože je až na pár vyjímek na všech nových distribucích

 
Nahoru Odpovědět
9.12.2016 8:53
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na Miro Koutný
Atrament:9.12.2016 13:06

Nejprve musíš udělat ten skript plně neinteraktivní, nemá smyl opakovaně pouštět skript, u kterého by musel někdo sedět a pořád něco zadávat. Takže způsob vypsání a cestu dodat pomocí argumentů a ve skriptu samotném už se pak na nic neptat jenom vypisovat. Pak můžeš použít příkaz watch:

watch -n45 skript

a oprav si to /usr/local/bin/bash na /bin/bash

 
Nahoru Odpovědět
9.12.2016 13:06
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Miro Koutný
mkub:10.12.2016 13:01

skus cron ;)
cron je idealny na periodicke spustanie skriptov a aplikacii a nemusis to riesit ziadnym cyklom
staci ten scrypt vlozit do crontab tak, aby sa spustal v tom case, kedy chces a mas vystarane...

 
Nahoru Odpovědět
10.12.2016 13:01
Avatar
Atrament
Člen IT Redactor Gang
Avatar
Odpovídá na mkub
Atrament:10.12.2016 16:00

Cron pokud vím neumí pracovat se sekundami, takže na spouštění skriptů každých 45 sekund moc ideální není.

 
Nahoru Odpovědět
10.12.2016 16:00
Avatar
00
Člen
Avatar
00:10.12.2016 19:25
#!/usr/local/bin/bash
#input parameters 1:number 2:destination (path)

while true
do

UNAME=$(uname)
if [ $UNAME != Linux ];
then echo "Pracujete jinde nez v Linuxu"
fi

echo "Skript vypise obsah adresare"
echo "****************************************"
echo "Zadejte jak chcete vypsat obsah adresare"
sleep 1
echo "1.Strucne"
sleep 1
echo "2.Normalne"
sleep 1
echo "3.Uplne"

nbr=$1
while (( nbr < 1  ||  nbr > 3 ));
do
  read -p "Zadejte jak chcete vypsat adresar: " nbr
  if (( nbr < 1 || nbr > 3 ));
  then
    echo "Prosim vyberte cislo 1 az 3!"
  fi
done

dst=$2
while [ ! -d "$dst" ] || [ -z "$dst" ];
do
  read -p "Zadejte cestu k adresari: " dst
  if [ ! -d "$dst" ]; then
    echo "Nezadal jste spravnou cestu. Znovu!"
  fi
done

case "$nbr" in
  1)
    ls "$dst"
    ;;
  2)
    ls -l "$dst"
    ;;
  3)
    ls -la "$dst"
    ;;
esac

sleep 45
done

Případně, není-li třeba se stále ptát:

#!/usr/local/bin/bash
#input parameters 1:number 2:destination (path)
UNAME=$(uname)
if [ $UNAME != Linux ];
then echo "Pracujete jinde nez v Linuxu"
fi

echo "Skript vypise obsah adresare"
echo "****************************************"
echo "Zadejte jak chcete vypsat obsah adresare"
sleep 1
echo "1.Strucne"
sleep 1
echo "2.Normalne"
sleep 1
echo "3.Uplne"

nbr=$1
while (( nbr < 1  ||  nbr > 3 ));
do
  read -p "Zadejte jak chcete vypsat adresar: " nbr
  if (( nbr < 1 || nbr > 3 ));
  then
    echo "Prosim vyberte cislo 1 az 3!"
  fi
done

dst=$2
while [ ! -d "$dst" ] || [ -z "$dst" ];
do
  read -p "Zadejte cestu k adresari: " dst
  if [ ! -d "$dst" ]; then
    echo "Nezadal jste spravnou cestu. Znovu!"
  fi
done

while true
do
case "$nbr" in
  1)
    ls "$dst"
    ;;
  2)
    ls -l "$dst"
    ;;
  3)
    ls -la "$dst"
    ;;
esac
sleep 45
done
Editováno 10.12.2016 19:27
 
Nahoru Odpovědět
10.12.2016 19:25
Avatar
Miro Koutný
Člen
Avatar
Odpovídá na 00
Miro Koutný:11.12.2016 9:51

Tohle řešení mě už napadlo taky, ale musím to napsat nějak přes crontab no kdyby to šlo takhle jednoduše tak se neptám přesto Dík : )

 
Nahoru Odpovědět
11.12.2016 9:51
Avatar
00
Člen
Avatar
Odpovídá na Miro Koutný
00:12.12.2016 16:52

Systemd na to má .service soubory.

 
Nahoru Odpovědět
12.12.2016 16:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.