diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2018-04-14 14:17:56 +0200 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2018-04-14 14:17:56 +0200 |
| commit | 3bb2f9a6caef07cd2d798fe52e340df524663a82 (patch) | |
| tree | 4b7efc82afb7c02b6120a548b5578abdeecc9f84 /monitor-uucp | |
| parent | 3fc89b51602f48938dcaa3d272fce130cd674093 (diff) | |
| download | utils-3bb2f9a6caef07cd2d798fe52e340df524663a82.tar utils-3bb2f9a6caef07cd2d798fe52e340df524663a82.tar.gz utils-3bb2f9a6caef07cd2d798fe52e340df524663a82.tar.bz2 utils-3bb2f9a6caef07cd2d798fe52e340df524663a82.tar.xz utils-3bb2f9a6caef07cd2d798fe52e340df524663a82.zip | |
monitor-uucp
Diffstat (limited to 'monitor-uucp')
| -rwxr-xr-x | monitor-uucp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/monitor-uucp b/monitor-uucp new file mode 100755 index 0000000..412c707 --- /dev/null +++ b/monitor-uucp | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | #!@zsh@/bin/zsh | ||
| 2 | |||
| 3 | lsof() { @lsof@/bin/lsof ${@} 2>/dev/null | tail -n +2} | ||
| 4 | ignoredFiles() { | ||
| 5 | cat <<EOF | ||
| 6 | ^/usr/ | ||
| 7 | ^/lib | ||
| 8 | ^/dev/ | ||
| 9 | ^pipe$ | ||
| 10 | ^/$ | ||
| 11 | ^/etc/ | ||
| 12 | ^/var/log/ | ||
| 13 | EOF | ||
| 14 | } | ||
| 15 | |||
| 16 | slept=0 | ||
| 17 | sleep=0.5 | ||
| 18 | sleepTimeout=30 | ||
| 19 | watched=false | ||
| 20 | |||
| 21 | while true; do | ||
| 22 | typeset -a files | ||
| 23 | files=() | ||
| 24 | |||
| 25 | used=$(lsof -c uucico -c uux | awk '{ $1=$2=$3=$4=$5=$6=$7=$8=""; print $0; }' | sed -r 's/^\s+//') | ||
| 26 | |||
| 27 | files=(${(f)used}) | ||
| 28 | |||
| 29 | watched=false | ||
| 30 | |||
| 31 | for file (${files}); do | ||
| 32 | line=$(lsof ${file} | grep -E '^(uucico|uux) ') | ||
| 33 | line() { print ${line} } | ||
| 34 | |||
| 35 | print ${file} | grep -qEf =(ignoredFiles) && continue | ||
| 36 | [[ -z $(line) ]] && continue | ||
| 37 | |||
| 38 | fType=$(line | awk '{ print $5; }') | ||
| 39 | size=$(line | awk '{ print $7; }') | ||
| 40 | pid=$(line | awk '{ print $2; }') | ||
| 41 | fd=$(line | awk '{ print $4; }' | tr -dc '[:digit:]') | ||
| 42 | name=$(basename ${file} | awk -v len=19 '{ if (length($0) > len) print substr($0, 1, len-3) "..."; else print; }') | ||
| 43 | |||
| 44 | [[ ${fType} == "REG" ]] || continue | ||
| 45 | |||
| 46 | clear | ||
| 47 | @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} | ||
| 48 | |||
| 49 | slept=0 | ||
| 50 | watched=true | ||
| 51 | |||
| 52 | break | ||
| 53 | done | ||
| 54 | |||
| 55 | if $watched || [[ $slept -ge $(($sleepTimeout / $sleep)) ]]; then | ||
| 56 | printf "inotify (%s)\n" $(date +"%T") | ||
| 57 | @inotify@/bin/inotifywait -r -e access /var/spool/uucp &>/dev/null | ||
| 58 | slept=0 | ||
| 59 | else | ||
| 60 | sleep 0.1 | ||
| 61 | printf "." | ||
| 62 | slept=$(($slept + 1)) | ||
| 63 | fi | ||
| 64 | done | ||
