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