#!/usr/bin/pagsh.openafs # -*- Shell-Script -*- # # Usage: # # run-in-pagsh [--fg] name command [argument ...] # # The argument `name' is a short description of the program to call, # without any spaces. It is used for making a PID file, which ensures # that only one instance of your command is running. # # The arguments that come afterward specify the command to run and its # arguments, if any. # # If the command will run in the foreground, then you should use the # `--fg' argument, making sure that it is the very first argument to # run-in-pagsh. # # Examples: # # run-in-pagsh interchange ~/interchange/bin/interchange # # run-in-pagsh --fg clean-mail ~/scripts/clean-mail # # Make sure that the ~/.run directory exists and is writable. # See http://wiki2.hcoop.net/MemberManual/RunningUnattendedCommands # for instructions on how to accomplish this. # Allow user to specify "--fg" argument. if test "$1" = "--fg"; then shift BGFLAG= else BGFLAG=-b fi # Sanity checks. if test -z "$2"; then echo "Error: not enough arguments." echo "Usage: run-in-pagsh name [--fg] command [argument ...]" exit 1 elif test ! -d "$HOME/.run"; then echo "Error: the ~/.run directory must exist before running this script." exit 1 fi # Use a different PID file for each program. K5PID=$HOME/.run/$1.pid # The command to run. shift CMD="$*" # Try to deduce the user we're running as. if test -z "$USER"; then if test -n "$LOGNAME"; then USER=$LOGNAME elif test -n "$HOME"; then USER=$(basename "$HOME") else echo "Error: cannot deduce your username" exit 1 fi fi # Your keytab file. KTAB=/etc/keytabs/user.daemon/$USER # Terminate current k5start process, if one is running. if test -f "$K5PID"; then kill `cat -- "$K5PID"` 2>/dev/null /usr/bin/k5start -qtU -f "$KTAB" -- rm -f "$K5PID" fi if test -n "$BGFLAG"; then # Start fresh k5start daemon which will be refreshing tickets # every 540 min. /usr/bin/k5start -U -b -K 540 -t -p "$K5PID" -f "$KTAB" # Run actual service with arguments as provided on command line. $CMD else # Run the command once, in the foreground, cleaning up its PID # file when done. /usr/bin/k5start -U -K 540 -t -p "$K5PID" -f "$KTAB" -- $CMD /usr/bin/k5start -qtU -f "$KTAB" -- rm -f "$K5PID" fi