diff options
author | Dave Brolley <brolley@redhat.com> | 2009-12-21 19:26:16 -0500 |
---|---|---|
committer | Dave Brolley <brolley@redhat.com> | 2009-12-21 19:26:16 -0500 |
commit | 600450900a5e98404c91104d2cb20cddce42838e (patch) | |
tree | e0a54b23be5755ec80c72f8b16a6281b5540c661 /initscript | |
parent | d12a5be645d7036e7834308e714496f57adda852 (diff) | |
download | systemtap-steved-600450900a5e98404c91104d2cb20cddce42838e.tar.gz systemtap-steved-600450900a5e98404c91104d2cb20cddce42838e.tar.xz systemtap-steved-600450900a5e98404c91104d2cb20cddce42838e.zip |
PR 10905: initscript improvements.
Make the stap-server initscript available as $bindir/stap-server
Reimplement the stap-server initscript as a thin wrapper around
$bindir/stap-server.
Diffstat (limited to 'initscript')
-rw-r--r-- | initscript/stap-server.in | 879 |
1 files changed, 2 insertions, 877 deletions
diff --git a/initscript/stap-server.in b/initscript/stap-server.in index 7b951d15..6001180a 100644 --- a/initscript/stap-server.in +++ b/initscript/stap-server.in @@ -8,880 +8,5 @@ # config: /etc/sysconfig/stap-server # config: /etc/stap-server/conf.d -. /etc/rc.d/init.d/functions - -# Systemtap function library -. @libexecdir@/systemtap/stap-env - -prog=stap-server - -# Commands -STAP_START_SERVER=@libexecdir@/systemtap/stap-start-server -STAP_STOP_SERVER=@libexecdir@/systemtap/stap-stop-server -UNAME=/bin/uname - -# Default Global Configuration -CONFIG_FILE=@sysconfdir@/sysconfig/stap-server -CONFIG_PATH=@sysconfdir@/stap-server/conf.d -STAT_PATH=@localstatedir@/run/stap-server -LOG_FILE=@localstatedir@/log/stap-server.log -STAP_USER=stap-server - -# Default option settings -# Optional global config file -OPT_CONFIG_FILE= - -echo_usage () { - echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|status} [options]" - echo $"Options:" - echo $" -c configfile : specify additional global configuration file." - echo $" -a arch : specify the target architecture." - echo $" -r release : specify the kernel release." - echo $" -I path : augment the search path for tapsets." - echo $" -R path : specify the location of the systemtap runtime." - echo $" -B options : specify 'make' options for building systemtap modules." - echo $" -u username : specify the user who will run the server(s)." - echo $" -i : specify a server for each installed kernel release." - echo $" -n nickname : specify a server configuration by nickname." - echo $" -p pid : specify a server or server configuration by process id." - echo $"" - echo $"All options, may be specified more than once." - echo $"" - echo $"If -a is not specified, the default architecture is that of the host" - echo $"platform." - echo $"" - echo $"If -r is not specified, the default kernel release is that currently" - echo $"running on the host platform." - echo $"" - echo $"If -u is not specified, the default user is 'stap-server'" - echo $"" - echo $"Each -I and -B option specifies an additional path or option" - echo $"respectively. For other options, each new instance overrides the" - echo $"previous setting." - echo $"" - echo $"The -i option is a shortcut which specifies one server for each kernel" - echo $"release installed in /lib/modules/. Previous -I, -R, -B and -u" - echo $"options will be applied to each server, however previous -a options" - echo $"are ignored and the default architecture is used." - echo $"" - echo $"The -n option allows the specification of a server configuration by" - echo $"nickname. When -n is specified, a currently running server with the" - echo $"given nickname will be searched for. If no currently running server" - echo $"with the given nickname is found, a server configuration with the" - echo $"given nickname will be searched for in @sysconfdir@/stap-server/conf.d/*.conf." - echo $"If a server configuration for the given nickname is found, the -a, -r," - echo $"-I, -R, -B and -u options for that server will be used as if they were" - echo $"specified on the command line. If no configuration with the given" - echo $"nickname is found, and the action is 'start' (or an action behaving" - echo $"like 'start' (see below), the server will be started with the given" - echo $"nickname. If no configuration with the given nickname is found, and" - echo $"the action is not 'start' (or an action behaving" "like 'start'," - echo $"it is an error. If a nickname is not specified for a server, its" - echo $"nickname will be its process id." - echo $"" - echo $"The -p option allows the specification of a server configuration by" - echo $"process id. When -p is specified, a currently running server with the" - echo $"given process id will be searched for. If no such server is found," - echo $"it is an error. If a server with the given pid is found, the -a, -r," - echo $"-I, -R, -B and -u options for that server will be used as if they were" - echo $"specified on the command line." - echo $"" - echo $"The specified action is performed for the server(s) specified on the" - echo $"command line. If no servers are specified on the command line, the" - echo $"behavior is as follows:" - echo $"" - echo $" start: Start the servers configured in @sysconfdir@/stap-server/conf.d/*.conf." - echo $" If none are configured, start a server for the kernel release" - echo $" and architecture of the host platform." - echo $"" - echo $" stop: Stop all currently running servers." - echo $"" - echo $" restart: Restart all currently running servers. If no servers are running," - echo $" behave as if 'start' was specified." - echo $"" - echo $" condrestart: Restart all currently running servers. If no servers are running," - echo $" do nothing." - echo $"" - echo $" try-restart: Same as condrestart." - echo $"" - echo $" force-reload: Stop all currently running servers and behave as if 'start'" - echo $" was specified." - echo $"" - echo $" status: Report the status of all current running servers." - echo $"" -} - -#----------------------------------------------------------------- -# Helper functions -#----------------------------------------------------------------- -log () { # message - echo `LC_ALL=en date +"%b %e %T"`": $1" >> "$LOG_FILE" -} -clog () { # message [-n] - echo $2 "$1" - log "$1" -} -slog () { # message - logger "$1" # if syslogd is running, this message will be sent to syslog. - log "$1" -} -logex () { # command - eval log \"Exec: $@\" - "$@" >> "$LOG_FILE" 2>&1 - return $? -} -do_failure () { # message - slog "Error: $1" - failure "$1" -} -do_success () { # message - log "Pass: $1" - success "$1" -} - -#------------------------------------------------------------------ -# Parameter parsing and setup options -#------------------------------------------------------------------ -parse_args () { # arguments - local rc=0 - while [ -n "$1" ]; do - case "$1" in - -a) - OPT_SERVER_CMDS="$OPT_SERVER_CMDS ARCH='$2'" - shift 1 - ;; - -B) - OPT_SERVER_CMDS="$OPT_SERVER_CMDS BUILD='$2'" - shift 1 - ;; - -c) - OPT_CONFIG_FILE=$2 - shift 1 - ;; - -i) - process_i - ;; - -I) - OPT_SERVER_CMDS="$OPT_SERVER_CMDS INCLUDE='$2'" - shift 1 - ;; - -n) - process_n $2 - shift 1 - ;; - -p) - process_p $2 - test $? = 0 || rc=1 - shift 1 - ;; - -r) - process_r $2 - test $? = 0 || rc=1 - shift 1 - ;; - -R) - OPT_SERVER_CMDS="$OPT_SERVER_CMDS RUNTIME='$2'" - shift 1 - ;; - -u) - OPT_SERVER_CMDS="$OPT_SERVER_CMDS USER='$2'" - shift 1 - ;; - --) - ;; - *) - rc=1 - ;; - esac - shift 1 - done - - # Add an EXEC command to the end if any server options were specified - test -n "$OPT_SERVER_CMDS" && OPT_SERVER_CMDS="$OPT_SERVER_CMDS EXEC" - - test $rc != 0 && echo_usage - return $rc -} - -# Process the -i flag. -process_i () { - cd /lib/modules - local release - for release in `ls`; do - test -n "$OPT_SERVER_CMDS" && OPT_SERVER_CMDS="$OPT_SERVER_CMDS EXEC" - process_r $release - done - - return 0 -} - -# Process the -n flag. -process_n () { - local target_NICKNAME="$1" - - # Is there a running server with this nickname? - local pid=`get_server_pid_by_nickname "$target_NICKNAME"` - if [ -n "$pid" ]; then - # Read the configuration and add it to the configuration commands. - . $STAT_PATH/$pid - OPT_SERVER_CMDS="$OPT_SERVER_CMDS `echo_server_commands`" - return - fi - - # Is there a server configuration with this nickname? - for f in "$CONFIG_PATH"/*.conf; do - if [ -f "$f" ]; then - . "$f" - test "X$NICKNAME" = "X$target_NICKNAME" || continue - OPT_SERVER_CMDS="$OPT_SERVER_CMDS `echo_server_commands`" - return - fi - done - - # No server configuration could be found for this nickname. Add a - # NICKNAME_NOT_FOUND=... command to the configuration commands. - OPT_SERVER_CMDS="$OPT_SERVER_CMDS NICKNAME_NOT_FOUND='$target_NICKNAME'" -} - -# Process the -p flag. -process_p () { - local pid="$1" - - # Are we managing a server with the given pid? - test ! -f $STAT_PATH/$pid && echo "No stap-server running as pid $pid" && \ - exit 1 - - # Add the configuration of the server running as $pid to OPT_SERVER_CMDS - . $STAT_PATH/$pid - OPT_SERVER_CMDS="$CONFIG_SERVER_CMDS `echo_server_commands`" - - return 0 -} - -# Process the -r flag. -process_r () { - local first_char=`expr "$1" : '\(.\).*'` - - if test "$first_char" = "/"; then # fully specified path - local kernel_build_tree=$1 - local version_file_name="$kernel_build_tree/include/config/kernel.release" - # The file include/config/kernel.release within the kernel - # build tree is used to pull out the version information - local kernel_release=`cat $version_file_name 2>/dev/null` - if test "X$kernel_release" = "X"; then - echo "Missing $version_file_name" - return 1 - fi - OPT_SERVER_CMDS="$OPT_SERVER_CMDS RELEASE='$kernel_release'" - return 0 - fi - - # kernel release specified directly - OPT_SERVER_CMDS="$OPT_SERVER_CMDS RELEASE='$1'" - return 0 -} - -load_config () { - # Include configs - if [ -f "$CONFIG_FILE" ]; then - . "$CONFIG_FILE" - fi - if [ -f "$OPT_CONFIG_FILE" ]; then - . "$OPT_CONFIG_FILE" - fi -} - -# Default to the currently running kernel release -get_release () { - $UNAME -r -} - -# Default to the currently running kernel release -get_arch () { - stap_get_arch -} - -echo_server_commands () { - # Echo the configuration command string. - echo -n "ARCH='$ARCH'" - echo -n " RELEASE='$RELEASE'" - echo -n " RUNTIME='$RUNTIME'" - for i in $INCLUDE; do - echo -n " INCLUDE='$i'" - done - for b in $BUILD; do - echo -n " BUILD='$b'" - done - echo -n " USER='$USER'" - # The NICKNAME= command must be last. See start (). - echo -n " NICKNAME='$NICKNAME'" - echo -} - -echo_server_options () { - # Echo the configuration options. - echo -n "-a '$ARCH'" - echo -n " -r '$RELEASE'" - test -n "$RUNTIME" && echo -n " -R '$RUNTIME'" - for i in $INCLUDE; do - echo -n " -I '$i'" - done - for b in $BUILD; do - echo -n " -B '$b'" - done - test -n "$USER" && echo -n " -u '$USER'" - echo -n " -n '$NICKNAME'" - echo -} - -load_server_config () { - CONFIG_SERVER_CMDS= - for f in "$CONFIG_PATH"/*.conf; do - if [ -f "$f" ]; then - # Obtain a configuration from each config file. - # Ensure that we get the correct defaults for items not specified. - local ARCH= - local BUILD= - local INCLUDE= - local RUNTIME= - local USER= - local RELEASE= - . "$f" - # Other options default to empty. These ones don't. - [ -z "$ARCH" ] && ARCH=`get_arch` - [ -z "$RELEASE" ] && RELEASE=`get_release` - [ -z "$USER" ] && USER=$STAP_USER - CONFIG_SERVER_CMDS="$CONFIG_SERVER_CMDS `echo_server_commands` EXEC" - fi - done -} - -prepare_stat_dir () { - if [ ! -d "$STAT_PATH" ]; then - logex mkdir -p "$STAT_PATH" - [ $? -ne 0 ] && return 1 - fi - return 0 -} - -stat_file () { # server-spec - echo $STAT_PATH/$1 -} - -default_server_cmds () { - echo "EXEC" -} - -init_server_opts () { - ARCH=`get_arch` - RELEASE=`get_release` - BUILD= - INCLUDE= - NICKNAME= - NICKNAME_NOT_FOUND= - RUNTIME= - USER=$STAP_USER -} - -server_still_running () { # PID - (ps -e | grep stap-serverd | grep -q $1) && return 0 # Still running - - rm -f $STAT_PATH/$1 - return 1 # Not running -} - -get_server_pid_by_config () { - # Need to save the config, since the process of checking the running - # servers alters it. - local target_ARCH="$ARCH" - local target_RELEASE="$RELEASE" - local target_INCLUDE="$INCLUDE" - local target_RUNTIME="$RUNTIME" - local target_BUILD="$BUILD" - local target_USER="$USER" - local target_NICKNAME="$NICKNAME" - - # Check the status file for each running server to see if it matches - # the one currently configured. We're checking for a given configuration, - # so don't compare the nickname. - for f in $STAT_PATH/*; do - test ! -e $f && continue - . $f - test "X$ARCH" = "X$target_ARCH" || continue - test "X$RELEASE" = "X$target_RELEASE" || continue - test "X$INCLUDE" = "X$target_INCLUDE" || continue - test "X$RUNTIME" = "X$target_RUNTIME" || continue - test "X$BUILD" = "X$target_BUILD" || continue - test "X$USER" = "X$target_USER" || continue - echo `basename $f` # Server has a pid - return - done - - ARCH="$target_ARCH" - RELEASE="$target_RELEASE" - INCLUDE="$target_INCLUDE" - RUNTIME="$target_RUNTIME" - BUILD="$target_BUILD" - USER="$target_USER" - NICKNAME="$target_NICKNAME" -} - -get_server_pid_by_nickname () { - # No need to save the current configuration. This function is not called - # in a context requiring it. - local target_NICKNAME="$1" - - # Check the status file for each running server to see if the nickname - # matches the one we want. - for f in $STAT_PATH/*; do - test ! -e $f && continue - . $f - test "X$NICKNAME" = "X$target_NICKNAME" || continue - echo `basename $f` # Server with nickname was found - return - done -} - -managed_servers () { - if [ ! -d $STAT_PATH ]; then - echo "" - return 1 - fi - cd $STAT_PATH - local list=`ls` - if [ -z "$list" ]; then - echo "" - return 1 - fi - - echo "$list" -} - -eval_server_command () { - local cmd="$1" - - # Accumulate the results of BUILD and INCLUDE commands. - if echo $cmd | grep -q ^BUILD; then - local prevBUILD="$BUILD" - eval $cmd - BUILD="$prevBUILD $BUILD" - BUILD=`echo $BUILD | sed 's/^ //'` - elif echo $cmd | grep -q ^INCLUDE; then - local prevINCLUDE="$INCLUDE" - eval $cmd - INCLUDE="$prevINCLUDE $INCLUDE" - INCLUDE=`echo $INCLUDE | sed 's/^ //'` - else - eval $cmd - fi -} - -start_server () { - clog $"Starting $prog for $RELEASE $ARCH: " -n - - # Is there already a server running for the requested kernel release - # and arch? - local server_pid=`get_server_pid_by_config` - if test -n "$server_pid"; then - if server_still_running $server_pid; then - do_success $"$prog start `echo_server_options`" - return 0 # Success - fi - fi - - # Construct the server start command. - local server_cmd="$STAP_START_SERVER -r '$RELEASE' -a '$ARCH'" - for b in $BUILD; do - server_cmd="$server_cmd -B '$b'" - done - for i in $INCLUDE; do - server_cmd="$server_cmd -I '$i'" - done - test -n "$RUNTIME" && server_cmd="$server_cmd -R '$RUNTIME'" - server_cmd="$server_cmd --log=$LOG_FILE" - - # Start the server here. - local pid=`runuser -s /bin/bash - $USER -c "$server_cmd"` - if [ $? != 0 -o -z "$pid" ]; then - if [ -n "$pid" ]; then - rm -f $STAT_PATH/$pid - fi - do_failure $"$prog start `echo_server_options`" - return 1 # Failure - fi - - # Nickname defaults to the pid. - test -z "$NICKNAME" && NICKNAME="$pid" - - # Write the configuration to the status file. - local server_status_file=$STAT_PATH/$pid - echo "ARCH='$ARCH'" > $server_status_file - echo "USER='$USER'" >> $server_status_file - echo "BUILD='$BUILD'" >> $server_status_file - echo "INCLUDE='$INCLUDE'" >> $server_status_file - echo "NICKNAME='$NICKNAME'" >> $server_status_file - echo "RUNTIME='$RUNTIME'" >> $server_status_file - echo "RELEASE='$RELEASE'" >> $server_status_file - - do_success $"$prog start `echo_server_options`" -} - -start () { # server-cmds - prepare_stat_dir - if [ $? -ne 0 ]; then - do_failure $"Failed to make stat directory ($STAT_PATH)" - return 1 - fi - - # Start the specified servers - server_cmds="$1" - # If none specified, start the configured servers - if [ -z "$server_cmds" ]; then - load_server_config - server_cmds="$CONFIG_SERVER_CMDS" - - # If none configured, start the default servers - [ -z "$server_cmds" ] && server_cmds=`default_server_cmds` - fi - - # Start each requested server in turn - local rc=0 - local first=1 - init_server_opts - local cmd - local prevCmd - for cmd in $server_cmds; do - prevCmd=$cmd - # Evaluate commands until the EXEC command is found. - if test "$cmd" != "EXEC"; then - eval_server_command $cmd - # A specified nickname only sticks if it is the final command. - # Otherwise, we have a configuration based on a nicknamed - # configuration. - echo "$cmd" | grep -q "^NICKNAME=" || NICKNAME="" - continue - fi - # If a nickname was specified, but the corresponding config was not found, - # then it is the nickname for this new configuration. - if test -n "$NICKNAME_NOT_FOUND"; then - NICKNAME="$NICKNAME_NOT_FOUND" - NICKNAME_NOT_FOUND= - fi - - # Start the configured server - test $first = 0 && echo - first=0 - start_server || rc=1 - - # Don't use the same nickname for the next server. - NICKNAME= - done - - return $rc -} - -stop () { # server-cmds - local first=1 - local server_list= - server_cmds="$1" - if [ -n "$server_cmds" ]; then - # Get the pids of all the requested servers. - init_server_opts - local cmd - local prevCmd - for cmd in $server_cmds; do - prevCmd=$cmd - # Evaluate commands until the EXEC command is found. - if test "$cmd" != "EXEC"; then - eval_server_command $cmd - # A specified nickname only sticks if it is the final command. - # Otherwise, we have a configuration based on a nicknamed - # configuration. - echo "$cmd" | grep -q "^NICKNAME=" || NICKNAME="" - continue - fi - # If a nickname was specified, but the corresponding config was not - # found, it is an error. - if test -n "$NICKNAME_NOT_FOUND"; then - clog "No configuration found for the nickname '$NICKNAME_NOT_FOUND'" -n - NICKNAME="$NICKNAME_NOT_FOUND" - do_failure $"$prog stop `echo_server_options`" - NICKNAME_NOT_FOUND= - rc=1 - continue - fi - - # Get the pid for this server, if it's running - local server_pid=`get_server_pid_by_config` - if test -n "$server_pid"; then - server_list="$server_list $server_pid" - continue - fi - - # This server is not running, but give a success stop status anyway. - test $first = 0 && echo - first=0 - clog $"Stopping $prog for $RELEASE $ARCH: " -n - do_success $"$prog stop `echo_server_options`" - done - else - server_list=`managed_servers` - if [ -z "$server_list" ]; then - clog $"Stopping $prog: " -n - do_success $"$prog: No managed servers to stop" - return 0 - fi - fi - - # Stop each server in turn - local rc=0 - local pid - for pid in $server_list; do - . $STAT_PATH/$pid - - test $first = 0 && echo - first=0 - clog $"Stopping $prog for $RELEASE $ARCH: " -n - - local this_rc=0 - if server_still_running $pid; then - runuser -s /bin/bash - $USER -c "$STAP_STOP_SERVER $pid" - if [ $? != 0 ]; then - do_failure $"$prog stop `echo_server_options`" - this_rc=1 - rc=1 - fi - fi - if [ $this_rc = 0 ]; then - rm -f $STAT_PATH/$pid - do_success $"$prog stop `echo_server_options`" - fi - done - - return $rc -} - -status () { # server-list - local rc=0 - - # Report status for the specified servers or all running servers, if none - # specified. - local server_list= - server_cmds="$1" - if [ -n "$server_cmds" ]; then - # Get the pids of all the requested servers. - init_server_opts - local cmd - local prevCmd - for cmd in $server_cmds; do - prevCmd=$cmd - # Evaluate commands until the EXEC command is found. - if test "$cmd" != "EXEC"; then - eval_server_command $cmd - # A specified nickname only sticks if it is the final command. - # Otherwise, we have a configuration based on a nicknamed - # configuration. - echo "$cmd" | grep -q "^NICKNAME=" || NICKNAME="" - continue - fi - # If a nickname was specified, but the corresponding config was not - # found, say so. - if test -n "$NICKNAME_NOT_FOUND"; then - echo "No configuration found for the nickname '$NICKNAME_NOT_FOUND'" - NICKNAME_NOT_FOUND= - rc=3 - continue - fi - - # Get the pid for this server, if it's running - local server_pid=`get_server_pid_by_config` - if test -n "$server_pid"; then - server_list="$server_list $server_pid" - continue - fi - # This server is not running - echo "stap-server `echo_server_options`" - rc=3 - done - else - server_list=`managed_servers` - if [ -z "$server_list" ]; then - echo "No managed stap-server is running" - return 3 - fi - fi - - # Get status of each server in turn - local pid - for pid in $server_list; do - . $STAT_PATH/$pid - if ! server_still_running $pid; then - echo "stap-server `echo_server_options` started as PID $pid is no longer running" - rc=1 - continue - fi - echo "stap-server `echo_server_options` running as PID $pid" - done - - return $rc -} - -# Restart or start if not running -function restart () { # server-cmds - # Restart the specified servers or all servers, if none specified. - local server_cmds="$1" - if [ -z "$server_cmds" ]; then - local server_list=`managed_servers` - local pid - for pid in $server_list; do - . $STAT_PATH/$pid - server_cmds="$server_cmds `echo_server_commands` EXEC" - done - fi - - # Stop the specified servers, or all if none specified - stop "$server_cmds" - local rc=$? - echo - - # Restart the same servers. If none were specified then - # start the configured or default server(s)). - start "$server_cmds" - local this_rc=$? - [ $this_rc != 0 ] && rc=$this_rc - - return $rc -} - -# Restart only if running -function condrestart () { # server-list - # Restart the specified servers or all servers, if none specified, - # but only if they are already running. - local server_cmds="$1" - if [ -z "$server_cmds" ]; then - local server_list=`managed_servers` - local pid - for pid in $server_list; do - . $STAT_PATH/$pid - server_cmds="$server_cmds `echo_server_commands` EXEC" - done - # No server specified or running? - if [ -z "$server_cmds" ]; then - clog "No managed stap-server is running" -n - do_success "No managed stap-server is running" - return 0 - fi - fi - - # For each server in the list, stop it if it is running - local start_cmds= - local first=1 - local server_cmd= - local cmd - for cmd in $server_cmds; do - # Execute and collect commands until the EXEC command is found. - server_cmd="$server_cmd $cmd" - if test "$cmd" != "EXEC"; then - eval_server_command $cmd - continue - fi - - test $first = 0 && echo - first=0 - - # Now see if this server is running - if ! status "$server_cmd" >/dev/null 2>&1; then - clog $"$prog for $RELEASE $ARCH is not running" -n - do_success "$prog `echo_server_options` is not running" - server_cmd= - continue - fi - - start_cmds="$start_cmds $server_cmd" - - stop "$server_cmd" - this_rc=$? - [ $this_rc != 0 ] && rc=$this_rc - - server_cmd= - done - - # Now restart the servers that were running - if [ "X$start_cmds" != "X" ]; then - echo - start "$start_cmds" - local this_rc=$? - [ $this_rc != 0 ] && rc=$this_rc - fi - - return $rc -} - -#------------------------------------------------------------------ -# Mainline script -#------------------------------------------------------------------ -CMD=$1 -shift 1 -OPTS=`getopt -s bash -u -o 'a:B:c:iI:n:p:r:R:u:' -- $@` -if [ $? -ne 0 ]; then - slog "Error: Argument parse error: $@" - failure $"parse error" - echo_usage - exit 2 -fi - -# Initialize server specs -OPT_SERVER_CMDS= -parse_args $OPTS || exit 2 -load_config - -RETVAL=0 - -case $CMD in - start) - # Start specified servers. If none specified, start configured servers - start "$OPT_SERVER_CMDS" - RETVAL=$? - ;; - stop) - # Stop specified servers - stop "$OPT_SERVER_CMDS" - RETVAL=$? - ;; - # Restart specified servers - restart) - restart "$OPT_SERVER_CMDS" - RETVAL=$? - ;; - # Restart specified servers if they are running - condrestart|try-restart) - condrestart "$OPT_SERVER_CMDS" - RETVAL=$? - ;; - # Give status on specified servers - status) - status "$OPT_SERVER_CMDS" - exit $? - ;; - # Reloading config without stop/restart is not supported - reload) - RETVAL=3 - ;; - # Reload config with stop/start - force-reload) - # stop all running servers - stop - echo - # Restart specified servers - # If none specified, restart configured servers - start "$OPT_SERVER_CMDS" - RETVAL=$? - ;; - usage|*) - echo_usage - RETVAL=0 - ;; -esac - -echo -exit $RETVAL +# Call the installed stap-server script. +STAP_USER=stap-server @bindir/stap-server "$@" |