Portál AbcLinuxu, 10. května 2025 02:31

Dotaz: presun procesu z pozadia na popredie

6.3.2010 00:25 Michal
presun procesu z pozadia na popredie
Přečteno: 362×
Odpovědět | Admin

Dobry den,

rad by som sa dozvedel ci je v bashi mozne spustit jeden prikaz na pozadi, pockat kym sa vykona a nasledne jeho vysledok zobrazit pomocou prikazu less.

Zatial sa mi podarilo dopracovat len k niecomu takemu (sleep sluzi len pre simulaciu):

{({ ( tree / > tree.txt && sleep 2) & } && wait && less tree.txt) &} && wait && fg &

Problem je, ze neviem ako zabezpecit presun z backgroundu na foreground.

Co by sa malo vykonat:

1) presmerovat vystup z `tree` do tree.txt na backgrounde
2) pockat kym `tree` vykona
3) zobrazit na foregrounde tree.txt pomocou less

Dakujem.

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.3.2010 00:41 0-58glfsdhesr
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi idealne pouzit vyslani a odchyceni nejakeho signalu.

Mozna bude stacit jen pomoci trap definovat obsluznou funkci, ktera vykona zadany prikaz (less) po skonceni prikazu (SIGCHLD?). Pokud by vadilo, ze to bude delat po prijati kazdeho ukonceni, pak pomoci kill -SIGUSR1 posilat vlastni signal.

Moc presne nechapu ucel. Planujes udelat to tak, ze si budes pracovat v terminalu a najednou se otevre less? Prijde me lepsi treba si vysledek poslat emailem nebo se na neho mrknut primo v tom souboru, kdyz budu mit cas a ne, kdyz to chce system?
6.3.2010 09:20 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Problem je ze ono to ma byt spravene pomocou jedneho prikazu. Ucel je ako opisujes, spustim prikaz, mozem zadavat ine prikazy a ak sa to skonci zrazu mi nabehne less na terminal.

Dostal si sme takuto ulohu v skole, a osobne si myslim, ze to je nemozne. Ja by som si otvoril screen spustil to v jednom okne nastavil tam bell a v dalsom by som si veselo pracoval :).
Fuky avatar 6.3.2010 11:30 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie

... Dostal si sme takuto ulohu v skole ...

Tak nám sem hoď celé zadání, třeba zjistíme, že sis ho jen špatně vyložil a nám přechroustal své podání.

7.3.2010 10:10 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Pisomne zadanie bohuzial nemam. Bolo nam to vysvetlene len slovne, teda pipustam moznost, ze som to zle pochopil. Kazdopadne som si viac-menej isty, ze nieco take sa spravit neda resp. bolo by to neprakticke. Predstavime si napr., ze si pocas tohoto prikazu otvorime mc a zrazu sa nam zacne vypisovat vystup z tree.
7.3.2010 21:08 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Mozno chcel nieco taketo:

{ tree > output.txt & } && wait &

a ked zozbrazi sparav o dokonceni procesu zobrazit cezz less vystup.
6.3.2010 10:19 NN
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Odpovědět | | Sbalit | Link | Blokovat | Admin
tree / > tree.txt &
sleep 5
fg %1
less tree.txt
NN
6.3.2010 10:23 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Dakujem, ale potrebujem to v jednom prikaze.
7.3.2010 19:37 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Odpovědět | | Sbalit | Link | Blokovat | Admin
{(echo 1 `date` ; echo boo > a.txt ; sleep 3 ) &}  ; wait && echo 2 `date` && cat a.txt
[1] 2239
1 Sun Mar 7 19:36:21 CET 2010
[1]+  Done                    ( echo 1 `date`; echo boo >a.txt; sleep 3 )
2 Sun Mar 7 19:36:24 CET 2010
boo
In Ada the typical infinite loop would normally be terminated by detonation.
7.3.2010 19:55 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Dakujem, bohuzial musi byt vyuzity prikaz less.
7.3.2010 20:55 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
tak tam dáte less - tím se to snad nezkazí?
In Ada the typical infinite loop would normally be terminated by detonation.
7.3.2010 21:16 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
V prikaze, v ktorom posielate nie. Avsak podla mojho zadania (ktore bolo IMHO zle vysvetlene) by to malo byt asi takto:

{(echo 1 `date` ; echo boo > a.txt ; sleep 3 ) &} ; wait && echo 2 `date` && less a.txt &

Co fungovat nebude. Ale predpokladam, ze riesenie bude asi taketo:

{tree > tree.txt &} && wait &

a po skonceni si to zobrazit cez less. K inym rieseniam som sa nedopatrala a ak by existovali boli by zbytocne a neprakticke.

Kazdopadne dakujem :)
7.3.2010 21:34 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Já to nechápu.

V zadání píšete, že less má běžet na popředí, tady ho cpete na pozadí.

A jaký má smysl waitovat na pozadí? Pak budete waitovat na ten wait?
In Ada the typical infinite loop would normally be terminated by detonation.
7.3.2010 21:50 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
Asi to vyucujuci zle vysvetlil alebo sme sa zle pochopili.

Poziadavka je: presmerujte vystup z tree do tree.txt a vylistujte obsah cez less pocas behu musi byt konzola dostupne pre ine prikazy.

Po zvazeny predpokladam ze riesenie je:

{tree > tree.txt &} && wait &

...

[1] Done ...

...

less tree.txt
8.3.2010 06:53 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
A jaký je rozdíl mezi
něco &
a
{něco &} && wait & 
? Oboje poběží na pozadí...

Na ten příklad asi nejlépe sedí dvojice:
tree >tree.txt &
... zde je dostupná konzole ...
... až to bude tak to bude ...
less tree.txt
In Ada the typical infinite loop would normally be terminated by detonation.
8.3.2010 17:44 Michal
Rozbalit Rozbalit vše Re: presun procesu z pozadia na popredie
To mate pravdu. Tak teda neviem co odo mna vlastne chcel :(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.