mirror of
https://github.com/clearlinux/graphene.git
synced 2026-09-06 05:41:37 +00:00
86 lines
1.3 KiB
Bash
Executable File
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
|