X-Git-Url: https://uglyman.kremlin.cc/gitweb/gitweb.cgi?a=blobdiff_plain;f=assgn3%2Fprocess-pid.sh;h=30d57c75e0b96fcd31fde4343e7f02e0584b9dec;hb=ed3a7f092f7068fcd45914826cbdf31710c6a5a2;hp=0676b8b73b67cc44ade2cabcd119500641828ce0;hpb=bfcad051de6e4355ad1011a6f589cbc9686a1cdd;p=assignments.git diff --git a/assgn3/process-pid.sh b/assgn3/process-pid.sh index 0676b8b..30d57c7 100755 --- a/assgn3/process-pid.sh +++ b/assgn3/process-pid.sh @@ -1,6 +1,78 @@ #!/usr/bin/env bash -if [ -z "$1" ] || [ "$1" = "-h" ] ; then - echo "usage: ./process-pid.sh [command] [pid]" - exit 1; +USAGE="usage: $0 [-h, -a] [-f, -e] [-s ]" +OPTIND=2 + +if [[ ! "$1" =~ ^-?[0-9]+$ ]]; then + echo $USAGE; exit 1 + +elif [[ ! -d /proc/$1 ]]; then + echo "invalid pid '$1'"; exit 1 fi + +echo -e "pid '${1}' refers to a running process.\n" + +while getopts ":s:hafe" opts; do + case "${opts}" in + s) + cat /proc/"$1"/status | grep "$OPTARG" + ;; + h) + echo "$USAGE"; DROPBOOL=1 + ;; + a) + echo "written by ian sutton."; if [[ $DROPBOOL ]]; then exit 0; fi + ;; + f) + ls /proc/"$1" + ;; + e) + if [[ ! `readlink /proc/$1/exe` ]]; then + echo "no permissions to read pid '$1's executable path"; exit 1 + fi + + echo -n "executable path of pid '$1': " + readlink /proc/"$1"/exe + ;; + \?) + echo "bad option \"-$OPTARG\""; exit 1 + ;; + :) + echo $USAGE; exit 1 + ;; + esac + echo -ne "\n" +done + +# -h case +#if [[ "$1" -eq "-h" ]]; then +# echo "$USAGE"; exit 0 +# +# case +#elif [[ "$1" =~ ^-?[0-9]+$ ]]; then +# if `ps $1 > /dev/null 2>&1`; then +# echo "you win!"; exit 0 +# +# else +# echo -ne "invalid pid\n$USAGE"; exit 1 +# fi +# +# -e case +#elif [[ "$1" -eq "-e" && "$2" =~ ^-?[0-9]+$ ]]; then +# if `ps $2 > /dev/null 2>&1`; then +# echo "you win!"; exit 0; +# +# else +# echo -ne "invalid pid\n$USAGE"; exit 1 +# +# -s case +#elif [[ "$1" -eq "-s" && "$2" =~ ^-?[0-9]+$ ]]; then +# if `ps $2 > /dev/null 2>&1`; then +# echo "you win!"; exit 0; +# +# else +# echo -ne "invalid pid\n$USAGE"; exit 1 +# +#else +# echo "$USAGE"; exit 1 +#fi