Como posso usar o init.d (ou algum outro método) para executar um script de tela na inicialização?

3

Eu tenho um script de shell que é executado dentro de uma sessão de tela e faz o loop do loop continuamente a cada 10 minutos (nunca termina). Eu queria saber como eu poderia iniciar a sessão de tela, executar o script de shell e, em seguida, desanexá-lo na inicialização.

Agora eu corro isto:

screen
sh /var/www/scripts/screen.sh
ctrl+ad (to detach)
    
por ATLChris 18.02.2013 / 17:06

1 resposta

3

Atualmente, uso um script de tela para minecraft.

É assim que faço: screen -dmS .

Linhas exatas no script:

as_user "cd $MCPATH && screen -dmS $SCREEN $INVOCATION"
as_user "screen -list | grep '\.$SCREEN' | cut -f1 -d'.' | tr -d -c 0-9 > $pidfile"

Você provavelmente poderia usar apenas screen -dm para funcionar perfeitamente para você.

No que diz respeito a "executar na inicialização" Você pode criar um script init.d.

sudo vi /etc/init.d/screensh :

#!/bin/bash
# /etc/init.d/screensh

### BEGIN INIT INFO
# Provides:   screen.sh
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $network
# Should-Stop:    $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:    Screen.sh 
# Description:    This runs a script continuously in screen. 
### END INIT INFO

case "" in

  start)
        echo "Starting screen.sh"
        screen -dm sh /var/www/scripts/screen.sh
        ;;
  stop)
        echo "Stopping screen.sh"
        PID='ps -ef | grep screen.sh | grep -v grep | awk '{print }''
        kill -9 $PID 
        ;;

  restart|force-reload)
        echo "Restarting $screen"
        PID='ps -ef | grep screen.sh | grep -v grep | awk '{print }''
        kill -9 $PID 
        sleep 15
        screen -dm sh /var/www/scripts/screen.sh
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart}" >&2
        exit 1
        ;;
esac
exit 0

E, em seguida, execute sudo update-rc.d screensh defaults .

Tente isso, brinque com isso, se não funcionar, mas não deve ... realmente não ter um sistema de teste para brincar no momento.

    
por Mike 26.02.2013 / 15:41