Re: Shell trace
Hi, "Attila Rajmund Nohl" írta 2017-05-08 15:26-kor: > PÁSZTOR György írta (2017. május 4. 22:58): > [...] > > Egy hint, mintának, kiindulási pontnak, ötletekhez: > > https://github.com/balabit/syslog-ng/blob/master/contrib/syslog-debun > > Itt keresd a debun_init() fv-t, és próbáld meg az ott felhasznált ötletet > > lemodellezni. Már ha az is megfelel neked, hogy el kell indíts egy tail -f > > -et a háttérben, amit a script futása legvégén meg le kell lőjj, ergo a > > leg-legvége a kimeneteknek nem fog bekerülni a scriptbe, ami a kill-ed után > > történik. Ha együtt tudsz élni ennyivel. > > Lelövés: debun_do_tarball(). > > Itt én a végén még a .tgz nevét kiírtam, + ami a .tgz elkészülte után > > történt, az értelemszerűen már nem került be a tgz-be. > > Ez majdnem jó. Illetve jó, csak azt is szeretném, hogy az stderr is el > legyen mentve meg ki is írja a képernyőre. Ha azt is átirányítom egy > trace file-ba és arra is megy egy tail -f, akkor látszik a kimenet, > csak éppen összekeveredik az stdout-tal (az egyik parancs kimenetébe > beleíródik a következő hibaüzenete). Ha alaposan megnézed a scriptet, akkor ez a stderr-t is menti, és kiírja. Igen, annyiban igazad van, hogy a stdout és stderr összefésülve fog a fájlban is megjelenni. Viszont úgy elég egy tail is. Őszintén szólva én pont így szerettem volna, mert így van esélyem meglátni, hogy mi mi után következett, annak meg nem éreztem jelentőségét, hogy valami a stderr-en jelent-e meg, vagy a stdin-en. Üdv, Gyu _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux
Re: Shell trace
PÁSZTOR György írta (2017. május 4. 22:58): [...] > Egy hint, mintának, kiindulási pontnak, ötletekhez: > https://github.com/balabit/syslog-ng/blob/master/contrib/syslog-debun > Itt keresd a debun_init() fv-t, és próbáld meg az ott felhasznált ötletet > lemodellezni. Már ha az is megfelel neked, hogy el kell indíts egy tail -f > -et a háttérben, amit a script futása legvégén meg le kell lőjj, ergo a > leg-legvége a kimeneteknek nem fog bekerülni a scriptbe, ami a kill-ed után > történik. Ha együtt tudsz élni ennyivel. > Lelövés: debun_do_tarball(). > Itt én a végén még a .tgz nevét kiírtam, + ami a .tgz elkészülte után > történt, az értelemszerűen már nem került be a tgz-be. Ez majdnem jó. Illetve jó, csak azt is szeretném, hogy az stderr is el legyen mentve meg ki is írja a képernyőre. Ha azt is átirányítom egy trace file-ba és arra is megy egy tail -f, akkor látszik a kimenet, csak éppen összekeveredik az stdout-tal (az egyik parancs kimenetébe beleíródik a következő hibaüzenete). _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux
Re: Shell trace
Hegedüs Ervin írta (2017. május 4. 20:50): [...] > nagyon elméleti ötlet van csak: valahogy a "script" parancsot > elindítani a shell indításakor? Esetleg beállítani shellnek? Script nem biztos, hogy van installálva, nem építhetek rá. _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux
Re: Shell trace
Attila Rajmund Nohl writes: > Egy shell (elég ha csak bash-ra megy, de ha ksh-ra is működik, még > jobb) scriptben szeretném logolni, hogy milyen parancsok hajtódnak > végre milyen kimenettel úgy, hogy közben minden kimenetet a user is > lásson. Nagyjából a 'set -x' kimenetét szeretném elmenteni. Amit > próbáltam: > > exec &> >(tee $LOGFILE) > exec 2>$TRACEFILE > > Elakad, ha a script meghívja önmagát még akkor is, ha a második > futásnál a LOGFILE értéke más (gondolom a két tee akad össze). Továbbá > a hibaüzenetet (ami stderr-re megy) nem látja a user. És nem megy ksh > alatt sem (valamiért ezt a tee-s subshell-t nem szereti). Ha csak az > stderr-t irányítom át, akkor működik ksh-val is és az is megy, hogy a > script meghívja önmagát, de a kimenet ugye nincs meg. Ötlet? Mit jelent az, hogy "elakad"? Nekem ez működik (csak megtévesztő, hogy a prompt visszaadása után is ír még egy kicsit): #!/bin/bash logfile="${1:-debug}.log" exec 3>&2 2> >(tee "$logfile" >&3) set -ex echo $USER to stdout echo $HOME to stderr >&2 [ "$1" = break ] && exit echo calling myself ./debug break echo exiting Külön is logol a break.log fájlba, meg egybe is a debug.logba. Persze az stdout és az stderr szinkronja elveszik, mert az utóbbi áthalad a független tee processzen is. -- Feri _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux
Re: Shell trace
Hi, "Attila Rajmund Nohl" írta 2017-05-04 17:57-kor: > Egy shell (elég ha csak bash-ra megy, de ha ksh-ra is működik, még > jobb) scriptben szeretném logolni, hogy milyen parancsok hajtódnak > végre milyen kimenettel úgy, hogy közben minden kimenetet a user is > lásson. Nagyjából a 'set -x' kimenetét szeretném elmenteni. Amit > próbáltam: > > exec &> >(tee $LOGFILE) > exec 2>$TRACEFILE > > Elakad, ha a script meghívja önmagát még akkor is, ha a második > futásnál a LOGFILE értéke más (gondolom a két tee akad össze). Továbbá > a hibaüzenetet (ami stderr-re megy) nem látja a user. És nem megy ksh Egy hint, mintának, kiindulási pontnak, ötletekhez: https://github.com/balabit/syslog-ng/blob/master/contrib/syslog-debun Itt keresd a debun_init() fv-t, és próbáld meg az ott felhasznált ötletet lemodellezni. Már ha az is megfelel neked, hogy el kell indíts egy tail -f -et a háttérben, amit a script futása legvégén meg le kell lőjj, ergo a leg-legvége a kimeneteknek nem fog bekerülni a scriptbe, ami a kill-ed után történik. Ha együtt tudsz élni ennyivel. Lelövés: debun_do_tarball(). Itt én a végén még a .tgz nevét kiírtam, + ami a .tgz elkészülte után történt, az értelemszerűen már nem került be a tgz-be. Üdv, Gyu _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux
Re: Shell trace
Hello, On Thu, May 04, 2017 at 05:57:09PM +0200, Attila Rajmund Nohl wrote: > Hello! > > Egy shell (elég ha csak bash-ra megy, de ha ksh-ra is működik, még > jobb) scriptben szeretném logolni, hogy milyen parancsok hajtódnak > végre milyen kimenettel úgy, hogy közben minden kimenetet a user is > lásson. Nagyjából a 'set -x' kimenetét szeretném elmenteni. Amit > próbáltam: > > exec &> >(tee $LOGFILE) > exec 2>$TRACEFILE > > Elakad, ha a script meghívja önmagát még akkor is, ha a második > futásnál a LOGFILE értéke más (gondolom a két tee akad össze). Továbbá > a hibaüzenetet (ami stderr-re megy) nem látja a user. És nem megy ksh > alatt sem (valamiért ezt a tee-s subshell-t nem szereti). Ha csak az > stderr-t irányítom át, akkor működik ksh-val is és az is megy, hogy a > script meghívja önmagát, de a kimenet ugye nincs meg. Ötlet? nagyon elméleti ötlet van csak: valahogy a "script" parancsot elindítani a shell indításakor? Esetleg beállítani shellnek? a. -- I � UTF-8 _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux
Shell trace
Hello! Egy shell (elég ha csak bash-ra megy, de ha ksh-ra is működik, még jobb) scriptben szeretném logolni, hogy milyen parancsok hajtódnak végre milyen kimenettel úgy, hogy közben minden kimenetet a user is lásson. Nagyjából a 'set -x' kimenetét szeretném elmenteni. Amit próbáltam: exec &> >(tee $LOGFILE) exec 2>$TRACEFILE Elakad, ha a script meghívja önmagát még akkor is, ha a második futásnál a LOGFILE értéke más (gondolom a két tee akad össze). Továbbá a hibaüzenetet (ami stderr-re megy) nem látja a user. És nem megy ksh alatt sem (valamiért ezt a tee-s subshell-t nem szereti). Ha csak az stderr-t irányítom át, akkor működik ksh-val is és az is megy, hogy a script meghívja önmagát, de a kimenet ugye nincs meg. Ötlet? _ linux lista - linux@mlf.linux.rulez.org http://mlf.linux.rulez.org/mailman/listinfo/linux