skript

Ivo Panacek ivop na jlabs.cz
Středa Březen 10 15:39:05 CET 2004


Vladimir Naprstek wrote:
> hraji si s jednim skriptem a nejde mi do hlavy vysledek.
> 
> zde je jeden radek skriptu:
> 
> (echo "dumping..." >> $logfile; sleep 5; echo "dumped..." >> $logfile)| 
>  (echo "restore completed." >> $logfile)
> 
> a mam za to, ze se ma vykonat nejprve prvni zavorka a vystup z ni predat 
> do druhe zavorky (takto radek nedava smysl, ale po odladeni budou 
> prikazy v zavorkach nahrazeny: "vdump ... - | vrestore ... " ale protoze 
> trvaji cca 2hodiny, nehodi se to pro testovani).
> 
> takze ocekavam logfile:
> dumping...
> dumped...
> restore completed...
> 
> jenze obsah logfile je:
> dumping...
> restore completed...
> dumped...
> 
> Mam v logice botu nebo je to normalni?
> 
> 

Domnivam se, ze chyba je u vas a ze se to chova spravne:

- spusti se dva procesy, pro kazdou zavorku jeden a propoji se "pajpou",
   ale SPUSTI SE "SOUCASNE", nikoliv postupne (tedy master udela pajpu,
   pak 2 x fork, v kazdem synovi presmeruje stdin/stdout a v kazdem exec !

- v prvnim procesu se spusti postupne ty akce a retezi se jejich vystupy
- soucasne v tom druhem procesu se spusti ta jedina akce (echo)

Takze poradi tech "dumping" a "restore completed" je relativne (asi) nahodne,
jen ten prvni je asi trochu driv na rade, zatimco pote ta prvni zavorka
5 vterin ceka a az pak pripise to "dumped.

Vase ocekavani by se asi splnilo, kdyby proces v te prave zavorce
cetl stdin, protoze pak by musel pockat, az mu do nej neco prijde,
nebo az ho to zavre. Takze treba takto:

(echo "dumping..." >> $logfile; sleep 5; echo "dumped..." >> $logfile)|  ( cat ; echo "restore completed." >> $logfile)

Ale jinak to je docela hezky problemek :)

-- 
S pozdravem
Ivo Panáček


Další informace o konferenci Linux