Изодромные с предварением файлы являются способом пойти, однако, во многом как init сценарии только сдаются, когда они видят изодромный с предварением файл, необходимо проверить, чтобы гарантировать, что pid в файле все еще существует.
Что-то вроде этого добилось бы цели:
PIDFILE=/var/run/myscript.pid
if [ -e "$PIDFILE" ] ; then
# our pidfile exists, let's make sure the process is still running though
PID=`/bin/cat "$PIDFILE"`
if /bin/kill -0 "$PID" > /dev/null 2>&1 ; then
# indeed it is, i'm outta here!
/bin/echo 'The script is still running, forget it!'
exit 0
fi
fi
# create or update the pidfile
/bin/echo "$$" > $PIDFILE
... do stuff ...
/bin/rm -f "$PIDFILE"
Вы можете использовать комбинацию ps и kill, чтобы остановить конкретный процесс.
Сначала выполните ps -aux | grep minecraft
, чтобы получить номер процесса - второе поле, первое число.
Затем вы можете выполнить kill $ PID
, чтобы отправить SIGTERM процессу и корректно завершить его.
Ungasebenzisa ezi fayile zimbini zilandelayo ukuqala / ukumisa service.jar
start.sh
#!/usr/bin/env bash
PID=0
if [ -f './pid' ]; then
PID=$(cat ./pid)
fi
if ps -p $PID > /dev/null
then
echo "Service with $PID is already running"
else
nohup java -jar ./service.jar > service.out 2> errors.txt < /dev/null & PID=$!; echo $PID > ./pid
fi
stop.sh
#!/usr/bin/env bash
if [ -f './pid' ]; then
PID=$(cat ./pid) && kill -15 $PID
fi