libreoffice-online/loolwsd/loolstat
2015-08-08 08:09:22 -04:00

99 lines
2.7 KiB
Bash
Executable file

#!/bin/bash
# utilities
TR='tr'
WC='wc'
PS='ps'
SED='sed'
TOP='top'
GREP='grep'
PSTREE='pstree'
# log pid file
PIDLOG="/tmp/loolwsd.pid"
# print error message
log_failure_msg () {
if [ -n "${1:-}" ]; then
/bin/echo "$@" || true
fi
}
# checking ... print lines matching a pattern utility
if ! echo a | $GREP -E '(a|b)' >/dev/null 2>&1; then
log_failure_msg "$0: error: $GREP utility not found."
fi
# checking ... word count utility
if ! $WC --version >/dev/null 2>&1; then
log_failure_msg "$0: error: $WC utility not found."
fi
# checking ... stream editor utility
if ! $SED --version >/dev/null 2>&1; then
log_failure_msg "$0: error: $SED utility not found."
fi
# checking ... delete characters utility
if ! $TR --version >/dev/null 2>&1; then
log_failure_msg "$0: error: $TR utility not found."
fi
# checking ... display a tree of processes utility
if ! $PSTREE --version >/dev/null 2>&1; then
log_failure_msg "$0: error: $PSTREE utility not found."
fi
# checking ... report a snapshot of the current processes utility.
if ! $PS --version >/dev/null 2>&1; then
log_failure_msg "$0: error: $PS utility not found."
fi
# checking ... display Linux processes utility.
if ! $TOP -v >/dev/null 2>&1; then
log_failure_msg "$0: error: $TOP utility not found."
fi
# checking pid log file.
if [ ! -f $PIDLOG ]; then
log_failure_msg "$0: error: $PIDLOG file not found."
exit 1;
fi
# get the loolwsd process id.
LOOLWSD_PID=$(cat $PIDLOG);
# checking if loolwsd is running.
if ! $PS -p $LOOLWSD_PID > /dev/null; then
log_failure_msg "$0: error: loolwsd is not running."
exit 1;
fi
# display a tree of processes.
$PSTREE -a -c -h -A -p $LOOLWSD_PID;
# get the number of running processes.
PROCESS=$($PSTREE -a -h -A -p $LOOLWSD_PID | $SED -e "s/\`//g" | $TR -d ' |-' | $GREP -E '^loolwsd|^loolbroker|^libreofficekit' | $WC -l);
# get the number of running threads.
THREADS=$($PSTREE -a -h -A -p $LOOLWSD_PID | $GREP -o '{.*}' | $WC -l);
# get the number of running client socket.
LOOLWSD_CLIENT=$($PSTREE -a -h -A -p $LOOLWSD_PID | $GREP -o '{client_socket}' | $WC -l);
# get the number of running prision socket.
LOOLWSD_PRISIONER=$($PSTREE -a -h -A -p $LOOLWSD_PID | $GREP -o '{prision_socket}' | $WC -l);
# get the number of processes swapped out.
SWAPPEDOUT=$($PSTREE -a -h -A -p $LOOLWSD_PID | $GREP -o '(.*)' | $WC -l);
# display report stats
printf "\n %-10s\n" "LOOLWSD STATS";
printf "==========================\n";
printf " %-10s %d\n" "Running process:" "$PROCESS";
printf " %-10s %d\n" "Running threads:" "$THREADS";
printf " %-10s %d\n" "Process swapped out:" "$SWAPPEDOUT";
printf " %-10s %d\n" "Socket Client threads:" "$LOOLWSD_CLIENT";
printf " %-10s %d\n" "Socket Prision threads:" "$LOOLWSD_PRISIONER";
$TOP -bn 1 | $GREP -E 'loolwsd|COMMAND'