Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: jak udelat v bashi "sledovani prubehu" ??  (Přečteno 1894 krát)

nettezzaumana

  • Host
jak udelat v bashi "sledovani prubehu" ??
« kdy: 17 Dubna 2009, 09:09:15 »
Tohle funguje, ale nelibi se ni to overovani pomoci `ps -o pid | ..`
Kód: [Vybrat]
sleep 5 &
pid=$!;

while test ! -z $(ps -o pid | grep "^$pid$"); do
        for x in / - \\ \|; do
                echo -ne "searching $x \r";
                sleep 0.2;
        done
done

Tohle nefunguje a nevim proc, pac proces za rourou by mel skoncit s procesem pred ni ..
Kód: [Vybrat]
spinner() {

spin=( '|' '/' '-' '\' );
i=0;

while sleep 0.2; do
        echo -ne "searching ${spin[i=(i+1)%4]} \r";
done;
};

sleep 5 | spinner;

## .. spustite jako

bash << 'EOF'
cut & pejst
EOF
« Poslední změna: 17 Dubna 2009, 10:50:36 od nettezzaumana »

DuckD

  • Stálý člen
  • **
  • Příspěvků: 878
  • Open Srdcař
    • www.duckd.cz
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #1 kdy: 17 Dubna 2009, 10:43:49 »
Mohlo by to být takto?
spinner.sh
Kód: [Vybrat]
#!/bin/bash
PROC=$@
spinner(){
  while [ -d /proc/$1 ];do
echo -n '.' ; sleep 0.05
  done
  return 0
}

$PROC >/dev/null 2>&1 &
spinner $(pidof -s $1)
sh spinner.sh sleep 3
8) Lidé žijí v souborech. ===>> LINUXTERO <<=== Pravidelná dávka tvého linuxtera!

nettezzaumana

  • Host
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #2 kdy: 17 Dubna 2009, 15:20:45 »
nezkousel jsem ale nepochybne ano .. nicmene je to o5 jakasi brute-force-polling metoda, pricemz delas to same co ja s tim rozdilem, ze ty overujes jestli je pid zivouci pomoci `test -d /proc/$pid` a ja pomoci `grep "^$pid$" <(ps -o pid)` ;)

nettezzaumana

  • Host
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #3 kdy: 17 Dubna 2009, 15:56:25 »
Mam to !!
Kód: [Vybrat]
(while sleep 0.2; do spin=( '|' '/' '-' '\' ); echo -ne "searching ${spin[i=(i+1)%4]} \r"; done) & sleep 5; kill $!;
.. tak zcela opacne .. hodime na pozadi tisk ze se neco deje a killneme ho az skonci co se deje

premet

  • Host
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #4 kdy: 17 Dubna 2009, 15:57:28 »
Teď jsem chtěl napsat, já jsem pomocí googlu našel jiný způsob
Kód: [Vybrat]
#!/bin/bash

sleep 5 &
pid=$!;

while [ $? -eq 0 ]; do
        for x in / - \\ \|; do
                echo -ne "searching $x \r";
                sleep 0.2;
        done
        kill -0 $pid 2> /dev/null
done
« Poslední změna: 17 Dubna 2009, 16:26:35 od Premet »

premet

  • Host
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #5 kdy: 17 Dubna 2009, 16:12:27 »
Funguje to a teď jsem konečně pochopil proč tam ej to / - \\ \|  ;D

nettezzaumana

  • Host
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #6 kdy: 17 Dubna 2009, 16:17:09 »
...
while [ $? -eq 0 ]; do
...
.. ehm. to jako proc v tomto pripade?

premet

  • Host
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #7 kdy: 17 Dubna 2009, 16:25:53 »
Protože to testuje dokud ten proces sám od sebe neskončil ne ? Návratová hodnota z `kill -0 $pid`  :)

EDIT: Akorát jsem si ted uvědomil, že ani nevím proč sem tam měl run_pid=$(kill -0 $pid 2> /dev/null), což bylo úplně zbytečný, jelikož jsem tu proměnou k ničemu nepotřeboval. Asi sem s tím předtím zamýšlel něco jinýho.
« Poslední změna: 17 Dubna 2009, 16:54:43 od Premet »

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: jak udelat v bashi "sledovani prubehu" ??
« Odpověď #8 kdy: 04 Května 2009, 13:26:42 »
Mimochodem, tohle vlákno stojí za to...
Připomíná mi časy, kdy jsem někdy v polovině 90. let v linuxu, kde se xserver musel ještě extra spouštět (quarterly fall nebo tak nějak) dělal databázovej browser v ncurses. Bohužel, všichni tenkrát chtěli jenom wokna :-)
« Poslední změna: 04 Května 2009, 13:34:20 od mka »

 

Provoz zaštiťuje spolek OpenAlt.