X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=c393938ccdbf784c6077b294e453a71e6d517eb5;hb=9492242e5dc9999cafafb7492077a7cc8f1ba6e3;hp=a691958baa3de86d573509658d0755fc6c8469e5;hpb=549b689caf4f12615520e6558b011ffbaf2bad09;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index a691958..c393938 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -1,4 +1,4 @@ -# +#! /bin/bash ## open : string -> unit ## @@ -96,6 +96,16 @@ p() { | xsel -i -b -t 30000 } +dl() { + local -r timestamp="$(date --iso-8601=ns)" + local -r dir="$HOME"/dl/adhoc/"$timestamp" + local -r url_file_path="${dir}/url" + + mkdir -p "$dir" + touch "$url_file_path" + cd "$dir" +} + ## web search ## ws : string -> unit ws() { @@ -256,32 +266,12 @@ top_commands() { } ## Top Disk-Using directories -## TODO: Consider using numfmt instead of awk ## tdu : path-string -> (size:number * directory:path-string) list tdu() { local -r root_path="$1" - du "$root_path" \ - | awk ' - { - size = $1 - path = $0 - sub("^" $1 "\t+", "", path) - paths[path] = size - if (size > max) - max = size - } - - END { - for (path in paths) { - size = paths[path] - pct = 100 * (size / max) - gb = size / 1024 / 1024 - printf("%6.2f %3d%% %s\n", gb, pct, path) - } - } - ' \ - | sort -r -n -k 1 \ + du -h "$root_path" \ + | sort -r -h -k 1 \ | head -50 \ | tac # A slight optimization: head can exit before traversing the full input. @@ -293,14 +283,8 @@ tduf() { find "$@" -type f -printf '%s\t%p\0' \ | sort -z -n -k 1 \ | tail -z -n 50 \ - | gawk -v RS='\0' ' - { - size = $1 - path = $0 - sub("^" $1 "\t+", "", path) - gb = size / 1024 / 1024 / 1024 - printf("%f\t%s\n", gb, path) - }' + | numfmt -z --to=iec \ + | tr '\0' '\n' } # Most-recently modified file system objects @@ -674,6 +658,7 @@ status() { echo 'accounting' + # TODO Bring back seesion and client listing, but per server/socket. printf '%stmux\n' "$indent_unit" ps -eo comm,cmd \ | awk ' @@ -681,18 +666,27 @@ status() { # "tmux: server tmux -L pistactl new-session -d -s pistactl" # "tmux: client tmux -L foo" # "tmux: client tmux -Lbar" + # "tmux: client tmux" + # "tmux: server tmux -L foo -S bar" <-- -S takes precedence /^tmux:/ { # XXX This of course assumes pervasive usage of -L # TODO Handle -S role=$2 + + split($0, sides_of_S, "-S") + split(sides_of_S[2], words_right_of_S, FS) + split($0, sides_of_L, "-L") split(sides_of_L[2], words_right_of_L, FS) - sock=words_right_of_L[1] - if (!sock) { - sock = "default" + + if (words_right_of_S[1]) { + sock = "path." words_right_of_S[1] + } else if (words_right_of_L[1]) { + sock = "name." words_right_of_L[1] } else { - sock = "\"" sock "\"" + sock = "default" } + roles[role]++ socks[sock]++ count[role, sock]++ @@ -842,6 +836,9 @@ status() { echo "${indent_unit}-->" + # TODO Populate pid->cmd dict from `ps -eo pid,comm` and lookup progs there + # since netstat -p output comes out truncated. + sudo -n netstat -tulnp \ | awk -v indent="${indent_unit}${indent_unit}" ' NR > 2 && ((/^tcp/ && proc = $7) || (/^udp/ && proc = $6)) {