Question Comment puis-je utiliser init.d (ou une autre méthode) pour exécuter un script d'écran au démarrage?


J'ai un script shell qui s'exécute à l'intérieur d'une session d'écran et boucle le script en continu toutes les 10 minutes (ne se termine jamais). Je me demandais comment je pouvais lancer la session écran, exécuter le script shell, puis le détacher au démarrage.

En ce moment je lance ceci:

screen
sh /var/www/scripts/screen.sh
ctrl+ad (to detach)

3
2018-02-18 16:06


origine




Réponses:


J'utilise actuellement un script d'écran pour minecraft.

Voici comment je le fais: screen -dmS.

Lignes exactes dans le script:

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

Vous pourriez probablement juste utiliser screen -dm cela pourrait fonctionner parfaitement pour vous.

En ce qui concerne le "exécuter au démarrage", vous pouvez créer un 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 "$1" 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 $2}'`
        kill -9 $PID 
        ;;

  restart|force-reload)
        echo "Restarting $screen"
        PID=`ps -ef | grep screen.sh | grep -v grep | awk '{print $2}'`
        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

Et puis courir sudo update-rc.d screensh defaults.

Essayez, jouez avec ça si ça ne marche pas, mais il ne devrait pas y avoir de système de test pour le moment.


3
2018-02-26 14:41