mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/sh
 | 
						|
### BEGIN INIT INFO
 | 
						|
# Provides:          <NAME>
 | 
						|
# Required-Start:    $local_fs $network $named $time $syslog
 | 
						|
# Required-Stop:     $local_fs $network $named $time $syslog
 | 
						|
# Default-Start:     2 3 4 5
 | 
						|
# Default-Stop:      0 1 6
 | 
						|
# Description:       <DESCRIPTION>
 | 
						|
### END INIT INFO
 | 
						|
 | 
						|
SCRIPT=/usr/local/mesh/meshagent
 | 
						|
RUNAS=root
 | 
						|
 | 
						|
PIDFILE=/var/run/meshagent.pid
 | 
						|
LOGFILE=/var/log/meshagent.log
 | 
						|
 | 
						|
start() {
 | 
						|
  if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE") 2>/dev/null; then
 | 
						|
    echo 'Service already running' >&2
 | 
						|
    return 1
 | 
						|
  fi
 | 
						|
  echo 'Starting service…' >&2
 | 
						|
  local CMD="$SCRIPT -exec \"var child; process.on('SIGTERM', function () { child.removeAllListeners('exit'); child.kill(); process.exit(); }); function start() { child = require('child_process').execFile(process.execPath, [process.argv0, \"\"]); child.stdout.on('data', function (c) { }); child.stderr.on('data', function (c) { }); child.on('exit', function (status) { start(); }); } start();\" &> \"$LOGFILE\" & echo \$!"
 | 
						|
 | 
						|
  cd /usr/local/mesh
 | 
						|
  su -c "$CMD" $RUNAS > "$PIDFILE"
 | 
						|
  echo 'Service started' >&2
 | 
						|
}
 | 
						|
 | 
						|
stop() {
 | 
						|
  if [ ! -f "$PIDFILE" ]; then
 | 
						|
    echo 'Service not running' >&2
 | 
						|
    return 1
 | 
						|
  else
 | 
						|
    pid=$( cat "$PIDFILE" )
 | 
						|
    if kill -0 $pid 2>/dev/null; then
 | 
						|
          echo 'Stopping service…' >&2
 | 
						|
          kill -15 $pid
 | 
						|
          echo 'Service stopped' >&2
 | 
						|
    else
 | 
						|
      echo 'Service not running'
 | 
						|
    fi
 | 
						|
    rm -f $"PIDFILE"
 | 
						|
  fi
 | 
						|
}
 | 
						|
restart(){
 | 
						|
    stop
 | 
						|
    start
 | 
						|
}
 | 
						|
status(){
 | 
						|
    if [ -f "$PIDFILE" ]
 | 
						|
    then
 | 
						|
        pid=$( cat "$PIDFILE" )
 | 
						|
        if kill -0 $pid 2>/dev/null; then
 | 
						|
            echo "meshagent start/running, process $pid"
 | 
						|
        else
 | 
						|
            echo 'meshagent stop/waiting'
 | 
						|
        fi
 | 
						|
    else
 | 
						|
        echo 'meshagent stop/waiting'
 | 
						|
    fi
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
case "$1" in
 | 
						|
    start)
 | 
						|
        start
 | 
						|
        ;;
 | 
						|
    stop)
 | 
						|
        stop
 | 
						|
        ;;
 | 
						|
    restart)
 | 
						|
        stop
 | 
						|
        start
 | 
						|
        ;;
 | 
						|
    status)
 | 
						|
        status
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        echo "Usage: service meshagent {start|stop|restart|status}"
 | 
						|
        ;;
 | 
						|
esac
 | 
						|
exit 0
 |