added 'clean' command to cleanup leftovers
This commit is contained in:
parent
5d98199bf9
commit
67845a10a0
66
session
66
session
|
|
@ -36,8 +36,9 @@ EXIT_INVALID_SUBMODE=2
|
||||||
EXIT_SESSION_EXISTS=3
|
EXIT_SESSION_EXISTS=3
|
||||||
EXIT_SESSION_NOT_EXIST=4
|
EXIT_SESSION_NOT_EXIST=4
|
||||||
EXIT_ALREADY_IN_SESSION=5
|
EXIT_ALREADY_IN_SESSION=5
|
||||||
EXIT_CONFIG_NOT_GENERATED=6
|
EXIT_NOT_ATTACHED=6
|
||||||
EXIT_INVALID_CHOICE=7
|
EXIT_CONFIG_NOT_GENERATED=7
|
||||||
|
EXIT_INVALID_CHOICE=8
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
print_help() {
|
print_help() {
|
||||||
|
|
@ -82,7 +83,7 @@ print_help() {
|
||||||
echo >&2 "non-existent, can be initialized with '$(basename $0) config generate'."
|
echo >&2 "non-existent, can be initialized with '$(basename $0) config generate'."
|
||||||
echo >&2 "All sessions are logged by default in order to provide a scrollback"
|
echo >&2 "All sessions are logged by default in order to provide a scrollback"
|
||||||
echo >&2 "buffer at attaching. The logs are located in '${config[socket_dir]}'"
|
echo >&2 "buffer at attaching. The logs are located in '${config[socket_dir]}'"
|
||||||
echo >&2 "and logs of terminated sessions may be cleared using '$(basename $0) log clear'."
|
echo >&2 "and logs of terminated sessions may be cleared using '$(basename $0) clean log'."
|
||||||
}
|
}
|
||||||
|
|
||||||
get_available_sessions() {
|
get_available_sessions() {
|
||||||
|
|
@ -108,11 +109,18 @@ get_available_logs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
get_session_path() {
|
get_session_path() {
|
||||||
echo "${SOCKET_PREFIX}${1}${SOCKET_SUFFIX}"
|
local session_name=$1
|
||||||
|
echo "${SOCKET_PREFIX}${session_name}${SOCKET_SUFFIX}"
|
||||||
}
|
}
|
||||||
|
|
||||||
get_log_path() {
|
get_log_path() {
|
||||||
echo "${SOCKET_PREFIX}${1}${LOG_SUFFIX}"
|
local session_name=$1
|
||||||
|
echo "${SOCKET_PREFIX}${session_name}${LOG_SUFFIX}"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_session_pid() {
|
||||||
|
local session_name=$1
|
||||||
|
fuser $(get_session_path $session_name) 2> /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
is_existing_session_path() {
|
is_existing_session_path() {
|
||||||
|
|
@ -142,6 +150,13 @@ exit_if_in_session() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exit_if_not_in_session() {
|
||||||
|
if [ -z $DTACH_SOCKET_PATH ]; then
|
||||||
|
echo >&2 "Currently not attached to any session."
|
||||||
|
exit $EXIT_NOT_ATTACHED
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
exit_if_existing_session() {
|
exit_if_existing_session() {
|
||||||
if is_existing_session_name $session_name; then
|
if is_existing_session_name $session_name; then
|
||||||
echo >&2 "Session '$session_name' already exists."
|
echo >&2 "Session '$session_name' already exists."
|
||||||
|
|
@ -177,13 +192,9 @@ shift
|
||||||
## Now enter mode specific code
|
## Now enter mode specific code
|
||||||
case $mode in
|
case $mode in
|
||||||
"")
|
"")
|
||||||
if [ -z "$DTACH_SESSION_NAME" ];then
|
exit_if_not_in_session
|
||||||
echo "Currently not attached."
|
|
||||||
exit $EXIT_NOT_ATTACHED
|
|
||||||
else
|
|
||||||
echo "Currently attached to '$DTACH_SESSION_NAME'."
|
echo "Currently attached to '$DTACH_SESSION_NAME'."
|
||||||
exit $EXIT_SUCCESS
|
exit $EXIT_SUCCESS
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
"attach"|"att"|"a")
|
"attach"|"att"|"a")
|
||||||
exit_if_in_session
|
exit_if_in_session
|
||||||
|
|
@ -214,6 +225,14 @@ case $mode in
|
||||||
eval $CMD
|
eval $CMD
|
||||||
exit $EXITSUCCESS
|
exit $EXITSUCCESS
|
||||||
;;
|
;;
|
||||||
|
# "detach"|"det"|"d")
|
||||||
|
# exit_if_not_in_session
|
||||||
|
# PID=$(get_session_pid $DTACH_SESSION_NAME)
|
||||||
|
# echo $PID
|
||||||
|
# kill -SIGHUP $PID
|
||||||
|
# #echo -e "" > $(tty)
|
||||||
|
# exit $EXIT_SUCCESS
|
||||||
|
# ;;
|
||||||
"new"|"n")
|
"new"|"n")
|
||||||
exit_if_in_session
|
exit_if_in_session
|
||||||
#PROMPT_COMMAND="echo -ne \"\033]0;$1 (on $HOSTNAME)\007\""
|
#PROMPT_COMMAND="echo -ne \"\033]0;$1 (on $HOSTNAME)\007\""
|
||||||
|
|
@ -266,16 +285,15 @@ case $mode in
|
||||||
exit_if_nonexisting_session $session_name
|
exit_if_nonexisting_session $session_name
|
||||||
fi
|
fi
|
||||||
for sname in ${session_name[@]}; do
|
for sname in ${session_name[@]}; do
|
||||||
spath=$(get_session_path $sname)
|
|
||||||
logpath=$(get_log_path $sname)
|
logpath=$(get_log_path $sname)
|
||||||
PID=$(fuser $spath 2> /dev/null)
|
PID=$(get_session_pid $sname)
|
||||||
if [ ! -z "$PID" ]; then
|
if [ ! -z "$PID" ]; then
|
||||||
CMD="kill $SIGNAL $PID"
|
CMD="kill $SIGNAL $PID"
|
||||||
eval $CMD
|
eval $CMD
|
||||||
else # this seems to be an orphan
|
else # this seems to be an orphan
|
||||||
CLEANUP=1
|
CLEANUP=1
|
||||||
fi
|
fi
|
||||||
[[ "$CLEANUP" -eq 1 ]] && rm $spath
|
[[ "$CLEANUP" -eq 1 ]] && rm $(get_session_path $sname)
|
||||||
done
|
done
|
||||||
exit $EXIT_SUCCESS
|
exit $EXIT_SUCCESS
|
||||||
;;
|
;;
|
||||||
|
|
@ -322,11 +340,9 @@ case $mode in
|
||||||
done
|
done
|
||||||
exit $EXIT_SUCCESS
|
exit $EXIT_SUCCESS
|
||||||
;;
|
;;
|
||||||
|
"clean")
|
||||||
|
case "$1" in
|
||||||
"log")
|
"log")
|
||||||
if [[ "$1" != "clear" ]]; then
|
|
||||||
echo >&2 "Use '$(basename $0) log clear' to clear all unused log files."
|
|
||||||
exit $EXIT_INVALID_SUBMODE
|
|
||||||
fi
|
|
||||||
logs_avail=($(get_available_logs))
|
logs_avail=($(get_available_logs))
|
||||||
for sname in ${logs_avail[@]}; do
|
for sname in ${logs_avail[@]}; do
|
||||||
if ! is_existing_session_name $sname; then
|
if ! is_existing_session_name $sname; then
|
||||||
|
|
@ -335,6 +351,22 @@ case $mode in
|
||||||
done
|
done
|
||||||
exit $EXIT_SUCCESS
|
exit $EXIT_SUCCESS
|
||||||
;;
|
;;
|
||||||
|
"socket")
|
||||||
|
sessions_avail=($(get_available_sessions))
|
||||||
|
for sname in ${sessions_avail[@]}; do
|
||||||
|
PID=$(get_session_pid $sname)
|
||||||
|
if [ -z "$PID" ]; then
|
||||||
|
rm $(get_session_path $sname)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit $EXIT_SUCCESS
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo >&2 "'$(basename $0) clean' accepts:"
|
||||||
|
echo >&2 " log, socket"
|
||||||
|
exit $EXIT_INVALID_SUBMODE
|
||||||
|
esac
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo >&2 "Invalid mode: ${mode}"
|
echo >&2 "Invalid mode: ${mode}"
|
||||||
print_help
|
print_help
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue