Skip to content

Instantly share code, notes, and snippets.

@vdakalov
Created March 23, 2017 11:12
Show Gist options
  • Select an option

  • Save vdakalov/95d31e575482648bf22855bc1c8b371d to your computer and use it in GitHub Desktop.

Select an option

Save vdakalov/95d31e575482648bf22855bc1c8b371d to your computer and use it in GitHub Desktop.
В качестве параметра принимает имя процесса. Показывает кол-во файловых дескрипторов процесса с изменением во времени
#!/bin/bash
pid=$(pidof "${@}")
if [ -z "${pid}" ]; then
echo "process was not found. exit"
exit
fi
echo "${@} (pid ${pid})"
prev=0
max_files=$(cat /proc/${pid}/limits | grep "Max open files" | grep -oP "\d+")
max_soft=$(echo "${max_files}" | head -1)
max_hard=$(echo "${max_files}" | tail -n 1)
echo "Max: soft ${max_soft}; hard ${max_hard}"
#echo "[2017-03-23 15:10:02] 10 +10"
echo -e "\nTIMESTAMP CURRENT\t\tDIFF"
echo -e "---------------------------------------------"
while [ -d /proc/${pid} ]; do
count=$(lsof -a -p $pid | wc -l)
diff_symbol=$([[ $count -gt $prev ]] && echo -n "+" || echo -n "")
diff=$(echo "$count-$prev" | bc)
ts=$(date +%Y-%m-%d\ %H:\%M:%S)
echo -en "\r[${ts}] ${count}\t\t${diff_symbol}${diff} "
if [[ "${diff}" -ne "0" ]]
then echo
fi
prev=$count
sleep 1
done
echo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment