| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | #!/usr/bin/env bashID=`id -u`PGIDS=`ps -a -o pgid,command | tail -n +2 | \	awk "{ if (\\\$2 ~ /\\/pal\$/ ) print \\\$1 }" | uniq`NONE=1for PGID in $PGIDSdo	NONE=0	ps -p $PGID -o pid,args 2> /dev/null | tail -n +2doneif [ "$NONE" = "1" ]; then	echo "no graphene instance"	exit 0fiecho -n "choose intance(s): "read SELECT_PGIDSDO_KILL=0for CMD in $SELECT_PGIDSdo	if [ "$CMD" = "kill" ]; then		SELECT_PGIDS=${SELECT_PGIDS:4}		DO_KILL=1	fi	breakdonedo_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=1for PGID in $SELECT_PGIDSdo	if [ "$DO_KILL" = "1" ]; then		do_kill $PGID	else		do_list $PGID	fi	NONE=0doneif [ "$NONE" = "1" ]; then	for PGID in $PGIDS	do		if [ "$DO_KILL" = "1" ]; then			do_kill $PGID		else			do_list $PGID		fi	donefi
 |