Executar o comando na tela quando o initscript do LSB parou

1

Estou tentando fazer com que um servidor Bukkit seja executado dentro de uma tela como um serviço, iniciado a partir de um script LSB, mas não consigo parar corretamente. O que eu essencialmente quero é reconectar a tela e enviar um comando 'stop' para o console do servidor para que ele salve tudo ao invés de apenas ser morto, mas 'sudo service bukkit stop' não parece fazer nada com o meu script.

Ele ainda parece parar se eu reconectar a tela em um terminal e digitar 'stop' no console do Bukkit.

Alguém sabe qual é o problema? Meu script init.d está abaixo ...

#!/bin/bash
### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

cd /etc/minecraftbukkit
case $1 in
 start)
  # Checked the PID file exists and check the actual status of process
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "$NAME process" && status="0" || status="$?"
   # If the status is SUCCESS then don't need to start again.
   if [ $status = "0" ]; then
    exit # Exit
   fi
  fi
  # Start the daemon.
  screen -d -A -m -S "Bukkit152" sh ./bukkitrunner.sh
  ;;
 stop)
  # Stop the daemon.
  screen -d -r "Bukkit152"
  sleep 2
  stop
  ;;
 *)

esac
    
por bhygate 28.02.2016 / 21:56

1 resposta

0

Gerenciado para trabalhar com a tela, eventualmente. Eu estava esquecendo de enviar um retorno após o comando "stop", também descobri que eu tinha que usar "coisas" para enviar comandos para a tela: P

Aqui está o código de trabalho:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

cd /etc/minecraftbukkit
case $1 in
 start)
  # Checked the PID file exists and check the actual status of process
  if [ -e $PIDFILE ]; then
   status_of_proc -p $PIDFILE $DAEMON "$NAME process" && status="0" || status="$?"
   # If the status is SUCCESS then don't need to start again.
   if [ $status = "0" ]; then
    exit # Exit
   fi
  fi
  # Start the daemon.
  screen -d -A -m -S "Bukkit152" sh ./bukkitrunner.sh
  ;;
 stop)
  # Stop the daemon.
  screen -S "Bukkit152" -p 0 -X stuff "stop$(printf \r)"
  sleep 2
  ;;
 *)

esac

Obrigado ao @chicks pelo heads-up do tmux, estou investigando caso haja mais problemas ...

    
por 11.03.2016 / 22:33