diff options
Diffstat (limited to 'system/nvidia-fabricmanager/rc.nvidia-fabricmanager')
-rw-r--r-- | system/nvidia-fabricmanager/rc.nvidia-fabricmanager | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/system/nvidia-fabricmanager/rc.nvidia-fabricmanager b/system/nvidia-fabricmanager/rc.nvidia-fabricmanager new file mode 100644 index 0000000000..2f90f16725 --- /dev/null +++ b/system/nvidia-fabricmanager/rc.nvidia-fabricmanager @@ -0,0 +1,75 @@ +#!/bin/sh + +# Slackware init script to start/stop/restart nvidia-fabricmanager. + +# Copyright 2024 GUAN Xin <guanx.bac@gmail.com> from Beijing +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +EXE="/usr/bin/nv-fabricmanager" +CFG="/usr/share/nvidia/nvswitch/fabricmanager.cfg" +CMD="$EXE -c $CFG" + +# Start nvidia-fabricmanager: +fabricmanager_start() { + PID=`pgrep -f "$CMD"` + if [ $PID -gt 0 ] 2>/dev/null; then + echo "nvidia-fabricmanager is already running as PID $PID" >&2 + exit 3 + elif [ -x $EXE ]; then + echo "Starting nvidia-fabricmanager: $CMD" + $CMD + fi +} + +# Stop nvidia-fabricmanager: +fabricmanager_stop() { + PID=`pgrep -f "$CMD"` + if [ $PID -gt 0 ] 2>/dev/null; then + printf 'Stopping nvidia-fabricmanager (PID %d).' $PID + kill $PID + timeout 10 tail --pid=$PID -f /dev/null + if [ $? -eq 124 ]; then + echo " Timeout." + exit 124 + fi + echo + fi +} + +# Restart nvidia-fabricmanager: +fabricmanager_restart() { + fabricmanager_stop + fabricmanager_start +} + +case "$1" in +'start') + fabricmanager_start + ;; +'stop') + fabricmanager_stop + ;; +'restart') + fabricmanager_restart + ;; +*) + echo "usage $0 start|stop|restart" + exit 2 +esac |