#!@zsh@/bin/zsh lsof() { @lsof@/bin/lsof ${@} 2>/dev/null | tail -n +2} ignoredFiles() { cat <<EOF ^/usr/ ^/lib/ ^/dev/ ^pipe$ ^/$ ^/etc/ ^/var/log/ ^/nix/ EOF } slept=0 sleep=0.5 sleepTimeout=30 watched=false while true; do typeset -a files files=() used=$(lsof -c uucico -c uux | awk '{ $1=$2=$3=$4=$5=$6=$7=$8=""; print $0; }' | sed -r 's/^\s+//') files=(${(f)used}) watched=false for file (${files}); do line=$(lsof ${file} | grep -E '^(uucico|uux) ') line() { print ${line} } print ${file} | grep -qEf =(ignoredFiles) && continue [[ -z $(line) ]] && continue fType=$(line | awk '{ print $5; }') size=$(line | awk '{ print $7; }') pid=$(line | awk '{ print $2; }') fd=$(line | awk '{ print $4; }' | tr -dc '[:digit:]') name=$(basename ${file} | awk -v len=19 '{ if (length($0) > len) print substr($0, 1, len-3) "..."; else print; }') [[ ${fType} == "REG" ]] || continue clear @pv@/bin/pv -W -D 2 -i 0.5 -d ${pid}:${fd} -s ${size} -F "%r %a %p %e %I" -p -r -I -e -N ${name} slept=0 watched=true break done if $watched || [[ $slept -ge $(($sleepTimeout / $sleep)) ]]; then @inotify@/bin/inotifywait -r -e access /var/spool/uucp &>/dev/null else sleep 0.1 slept=$(($slept + 1)) fi done