Files
graphene/Scripts/list-all-graphene.sh

86 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
ID=`id -u`
PGIDS=`ps -a -o pgid,command | tail -n +2 | \
awk "{ if (\\\$2 ~ /\\/pal\$/ ) print \\\$1 }" | uniq`
NONE=1
for PGID in $PGIDS
do
NONE=0
ps -p $PGID -o pid,args 2> /dev/null | tail -n +2
done
if [ "$NONE" = "1" ]; then
echo "no graphene instance"
exit 0
fi
echo -n "choose intance(s): "
read SELECT_PGIDS
DO_KILL=0
for CMD in $SELECT_PGIDS
do
if [ "$CMD" = "kill" ]; then
SELECT_PGIDS=${SELECT_PGIDS:4}
DO_KILL=1
fi
break
done
do_list()
{
PGID=$1
echo "instance $PGID:"
PIDS=`ps -a -o pgid,pid --sort=start_time 2> /dev/null | tail -n +2 | \
awk "{ if (\\\$1 == $PGID) print \\\$2 }"`
CNT=1
for PID in $PIDS
do
STAT=`ps -a -p $PID -o stat | tail -n +2`
if [[ $STAT == Z* ]]; then
printf " %3d: process %5d (DEAD):" $CNT $PID
else
printf " %3d: process %5d :" $CNT $PID
fi
for TASK in /proc/$PID/task/*
do
printf " %5d" ${TASK##*/}
done
echo
CNT=`expr $CNT + 1`
done
}
do_kill()
{
PGID=$1
PIDS=`ps -a -o pgid,pid 2> /dev/null | tail -n +2 | \
awk "{ if (\\\$1 == $PGID) print \\\$2 }"`
kill -9 $PGID $PIDS
}
NONE=1
for PGID in $SELECT_PGIDS
do
if [ "$DO_KILL" = "1" ]; then
do_kill $PGID
else
do_list $PGID
fi
NONE=0
done
if [ "$NONE" = "1" ]; then
for PGID in $PGIDS
do
if [ "$DO_KILL" = "1" ]; then
do_kill $PGID
else
do_list $PGID
fi
done
fi