Ami a lényeg, script 'a.sh'-ban egy parancs:
gnome-terminal --command="b.sh ${url}".
Ha a terminált bezárom a Wget fut tobább és kapok egy 'wget-log'-ot.
Amit szeretnék, 'b.sh'-ba:
trap "kill -9 $(ps aux | grep -v awk | awk '/'${1//\//\\\/}'/ {ORS=" "; print $2}')" SIGHUP ## de nem működik
ezek sem voltak jók:
trap "pkill -f ${1##*/}" SIGHUP , majd funkcióba írtam a parancs sorozatot, exportáltam a funkciót, aztán trap wget_killer SIGHUP
Ha külön terminált nyitottan set "http://..." utána a fenti parancsok simán működtek.
Most az 'a.sh'-ban:
gnome-terminal --command="b.sh $1" ; kill -9 $(ps aux | grep -v awk | awk '/'${1//\//\\\/}'/ {ORS=" "; print $2}')
Ez működik, de csak ha egy fut. Ha kettő folyamat van és a terminálokat, csak az egyik wget-et szakítja meg, a másik folytatja és wget-log-ot ad. Ez utóbbi 'gnome-terminal -x bash -c "..."' esetben nem működött.
Ha terminálban futtatom 'bash -x a.sh' -t (leszalad visszajön a prompt, a másik terminállal wget megy), a kimenet vége:
+ gnome-terminal '--command=b.sh http://ubuntu.hu/sites/default/files/newboot.png'
++ grep -v awk
++ awk '{print $2}'
++ grep http://ubuntu.hu/sites/default/files/newboot.png
++ ps aux
+ kill -9
kill: használat: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
A 'kill' lefut rögtön az idításnál??? Utána (pl.:2min) amikor bezárom a terminált, kilövi a wget-et! Nem értem...
Próbáltam ezt is, hogy miden indítánál más legyen a változó neve, a.sh-ban:
dl_num=`cat .dl_num`
let dl_num+=1 && echo $dl_num > .dl_num
eval url$dl_num=$1
export url$dl_num
gnome-terminal -x bash -c "set $(echo \$url$n) ; b.sh $1 ; kill -9 $(ps aux | grep -v awk | awk '/'${1//\//\\\/}'/ {ORS=" "; print $2}')"
Ez egy kósza ötletem volt, de gondolom felesleges és lehet, hogy a megvalósítás sem túl remek...
A kérdéseim:
- a trap paracs hibás vagy nincs jó helyen b.sh-ban? vajon működne kettő folyamat esetén is?
- mikor a.sh-t indítom az pedig b.sh-t, utána újból..., akkor miért csak az egyiknél szuperál minden?
Elnézést, ha hosszan és/vagy marhaságot írtam, de részletezni akartam a próbálkozásaimat, némelyik talán butaság...