📄 stop-gtk-server
字号:
#!/bin/sh## Script to kill GTK-server processes which have not been exited# properly by a client program.## October 6, 2006 until july 8, 2008 - PvE.# December 2009: adjustments for MacOSX - PvE.#---------------------------------------------------------------# Define temporary file to dump processlistPROCESS=/tmp/process.txt# Determine platformPLATFORM=`uname`# Check usageif [ "$#" -eq 0 ]then echo echo "*** Stop GTK-server processes ***" echo echo "Usage: stop-gtk-server <[-]stdin> | <[-]tcp> | <[-]udp> | <[-]fifo> | <[-]ipc> | <[-]all> | <[-]show>" echo exit 1fi# Dump processlist in temporary fileps aux | grep -v stop-gtk-server > $PROCESS# Check if we are going to kill FIFO gtk-server processesif [ $1 = "fifo" ]then # Determine FIFO processes GTK=`awk '/gtk-server fifo/ {print $2}' $PROCESS` # Determine pipe files FILES=`awk '{gsub(/=/, " ")} /gtk-server fifo/ {print $13}' $PROCESS`elif [ $1 = "-fifo" ]then # Determine FIFO processes GTK=`awk '/gtk-server -fifo/ {print $2}' $PROCESS` # Determine pipe files FILES=`awk '{gsub(/=/, " ")} /gtk-server -fifo/ {print $13}' $PROCESS`# Check on TCP processelif [ $1 = "tcp" ]then GTK=`awk '/gtk-server tcp/ {print $2}' $PROCESS`elif [ $1 = "-tcp" ]then GTK=`awk '/gtk-server -tcp/ {print $2}' $PROCESS`# Check on UDP processelif [ $1 = "udp" ]then GTK=`awk '/gtk-server udp/ {print $2}' $PROCESS`elif [ $1 = "-udp" ]then GTK=`awk '/gtk-server -udp/ {print $2}' $PROCESS`# Check if we are going to kill STDIN gtk-server processeselif [ $1 = "stdin" ]then GTK=`awk '/gtk-server stdin/ {print $2}' $PROCESS`elif [ $1 = "-stdin" ]then GTK=`awk '/gtk-server -stdin/ {print $2}' $PROCESS`# Check if we are going to kill IPC gtk-server processeselif [ $1 = "ipc" ]then GTK=`awk '/gtk-server ipc/ {print $2}' $PROCESS` # Determine message queues IPC=`awk '{gsub(/=/, " ")} /gtk-server ipc/ {print $13}' $PROCESS`elif [ $1 = "-ipc" ]then GTK=`awk '/gtk-server -ipc/ {print $2}' $PROCESS` # Determine message queues IPC=`awk '{gsub(/=/, " ")} /gtk-server -ipc/ {print $13}' $PROCESS`# Check if we are going to kill ALL gtk-server processeselif [ $1 = "all" -o $1 = "-all" ]then # Determine processes GTK=`awk '/gtk-server / {print $2}' $PROCESS` # Determine pipe files FILES=`awk '{gsub(/=/, " ")} /gtk-server fifo/ {print $13}' $PROCESS` FILES="$FILES `awk '{gsub(/=/, " ")} /gtk-server -fifo/ {print $13}' $PROCESS`" # Determine message queues IPC=`awk '{gsub(/=/, " ")} /gtk-server ipc/ {print $13}' $PROCESS` IPC="$IPC `awk '{gsub(/=/, " ")} /gtk-server -ipc/ {print $13}' $PROCESS`"# Check if we are going to kill ALL gtk-server processeselif [ $1 = "show" -o $1 = "-show" ]then # Determine processes echo GTK=`awk '/gtk-server / {print}' $PROCESS` if [ -z "${GTK}" ] then echo "No GTK-server processes found!" else awk '/gtk-server / {print $1, $2, $9, $11, $12, $13, $14, $15, $16, $17, $18}' $PROCESS fi echo exit 0# Generate error warning -> argument not recognizedelse echo "Argument not recognized!" echo "Run 'stop-gtk-server' to see usage." exit -1fi# Kill the GTK-server processesfor i in $GTKdo kill -9 ${i} echo "Process ${i} stopped."done# Remove PIPE files if they existfor i in $FILESdo if [ -p "${i}" ] then rm ${i} echo "Pipefile ${i} removed." fidone# Remove message queues if they existif [ "`expr "$PLATFORM" : '.*\(BSD\)'`" = "BSD" ]then QUEUE=`ipcs -q | awk '/[0123456789]/ {printf "%d ", $3}'`elif [ "`expr "$PLATFORM" : '.*\(Darwin\)'`" = "Darwin" ]then QUEUE=`ipcs -q | awk '/0x/ {printf "%d ", $3}'`else QUEUE=`ipcs -q | awk '/[0123456789]/ {printf "%d ", strtonum($1)}'`fifor k in $IPCdo for j in $QUEUE do if [ "$k" = "$j" ] then if [ "`expr "$PLATFORM" : '.*\(BSD\)'`" = "BSD" ] then ID=`ipcs -q | awk -v ARG=$k '/[0123456789]/ {if ($3==ARG) print $2}'` elif [ "`expr "$PLATFORM" : '.*\(Darwin\)'`" = "Darwin" ] then ID=`ipcs -q | awk -v ARG=$k '/0x/ {if ($3==ARG) print $2}'` else ID=`ipcs -q | awk -v ARG=$k '/[0123456789]/ {if (strtonum($1)==ARG) print $2}'` fi ipcrm -q $ID echo "Message queue ${ID} removed." fi donedone# Tell if there are no processes foundif [ -z "$GTK" ]then echo echo "No GTK-server processes found!" echofi# Remove temporary filerm $PROCESSexit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -