#!/bin/sh # Slackware init script to start/stop/restart nvidia-fabricmanager. # Copyright 2024 GUAN Xin 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