J'ai un script Shell qui s'exécute dans une session d'écran et le boucle en boucle toutes les 10 minutes (sans fin). Je me demandais comment lancer la session d'écran, exécuter le script Shell, puis m'en détacher au démarrage.
En ce moment je lance ceci:
screen
sh /var/www/scripts/screen.sh
ctrl+ad (to detach)
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 simplement utiliser screen -dm
cela pourrait fonctionner parfaitement pour vous.
En ce qui concerne "l'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 exécutez Sudo update-rc.d screensh defaults
.
Essayez ça, jouez avec ça si ça ne marche pas, mais ça devrait ... ne pas avoir vraiment de système de test pour jouer avec ça pour le moment.