/ Published in: Bash
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#!/bin/sh # Alexis Megas, 2005. # Alexis Megas, 02/24/2007. Removed clear call. # Alexis Megas, 07/04/2007. Direct errors to /dev/null. # A script that allows the superuser to CONTINUE or STOP another # user's processes. The script runs in both interactive and # non-interactive modes. # stop_user_processes.sh [-f] -c -u userid (CONTINUE) # stop_user_processes.sh [-f] -s -u userid (STOP) force=0 usage="usage: stop_user_processes.sh -c|-s -u USERID [-f(orce)]" while getopts cfsu: options 2> /dev/null do case $options in c) sig="-CONT" ;; f) force=1 ;; s) sig="-STOP" ;; u) userid=$OPTARG ;; \?) echo "$usage" exit 1 ;; esac done if [ -z "$userid" -o $OPTIND -ge 6 ] then echo "$usage" exit 1 fi answer="" for pid in `ps -U $userid -o pid 2> /dev/null | tail +2 2> /dev/null` do name="`ps -U $userid -o pid,comm 2> /dev/null | grep \" $pid \" 2> /dev/null | awk '{print $2}' 2> /dev/null`" if [ -z "$name" ] then continue fi if [ $force -eq 0 -a "$answer" != "a" ] then if [ "$sig" = "-STOP" ] then echo "Stop $pid ($name)? [a/n/q/y]: \c" else echo "Continue $pid ($name)? [a/n/q/y]: \c" fi read answer while [ "$answer" != "a" -a "$answer" != "n" -a "$answer" != "q" \ -a "$answer" != "y" ] do if [ "$sig" = "-STOP" ] then echo "Stop $pid ($name)? [a/n/q/y]: \c" else echo "Continue $pid ($name)? [a/n/q/y]: \c" fi read answer done if [ "$answer" = "n" ] then continue elif [ "$answer" = "q" ] then exit 0 fi fi kill $sig $pid 2> /dev/null if [ $? -eq 0 ] then if [ "$sig" = "-STOP" ] then echo "$pid ($name) stopped." else echo "$pid ($name) continued." fi else if [ "$sig" = "-STOP" ] then echo "Error stopping $pid ($name)." else echo "Error continuing $pid ($name)." fi fi done exit 0