Portál AbcLinuxu, 7. května 2025 01:20
funkce(){ for((;;)) if pidof $1; then ... else return done } lzma -c sobor& funkce "lzma" ...Chova se to tak, ze skript neskonci, jako by se po ukonceni lzma nevratil z funkce k vykonani dalsiho kodu. Vite nekdo kde je problem?
--- SIGCHLD (Child exited) @ 0 (0) --- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 11413 wait4(-1, 0x7fff25cb3e1c, WNOHANG, NULL) = 0 rt_sigreturn(0xffffffffffffffff) = -1 EINTR (Interrupted system call) read(3,
for ((;;)); do PID=$(pidof "$PK_BIN") if [ -n "$PID" ]; then SIZE_C=$(stat $FILE_E --printf "%s") SPEED_B=$((SIZE_C-SIZE_P)) if [ $SPEED_B -gt 1000000 ]; then SPEED=$(awk '{printf "%.1f MB/s", $SPEED_B/1000/1000}') elif [ $SPEED_B -gt 1000 ] && [ $SPEED_B -le 999999 ]; then SPEED=$(awk '{printf "%.1f KB/s", $SPEED_B/1000}') else SPEED="$SPEED_B B/s" fi if [ $N -eq 10 ]; then test -t 1 && printf " hotovo : %d byte z %d [%s]\r" $SIZE_C $SIZE_S $SPEED N=0 fi ((N++)) SIZE_P=$SIZE_C sleep 0.1 else SIZE_C=$(stat $FILE_E --printf "%s") test -t 1 && printf " hotovo : %d byte [--] spracovano za %s\n" "$SIZE_S" "$(date +%M:%S -d @$(($(date +%s)-$TIME_S)))" break fi done ...
Je nejaky duvod, proc posilate funkci jmeno procesu a ne jeho cislo?
funkce(){ while [ -d "/proc/$1" ] do ....... done } lzma -c sobor& funkce $!
Precejenom je vetsi pravdepodobnost, ze tam bude proces se stejnym jmenem, nez cislem.
Marek
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.