web-dev-qa-db-fra.com

Comment créer une session d'écran au démarrage avec une commande qui ne se termine pas à la fin de la commande

Je veux éditer mon fichier rc.local pour démarrer quelques sessions de serveur chacune dans son propre écran GNU. Cependant, chaque fois que j'arrête un serveur, l'écran se termine.

Actuellement j'ai:

screen -dmS test ~/tmp/runserver.sh

avec cela à l'intérieur runserver.sh:

node ~/dev/mouser/app.js

Comment faire en sorte que l'écran reste en vie après la fin de la commande ou du script transmis?

4
QuinnBaetz

Deux façons. Soit invoquer un shell pour exécuter le script, qui se remplace ensuite (à l'aide de la commande intégrée exec) par un shell interactif une fois le script terminé.

screen -dmS test bash -c '~/tmp/runserver.sh; exec bash'

ou conservez votre commande d'écran actuelle et mettez exec bash dans votre script runserver.sh.

#!/bin/bash
node ~/dev/mouser/app.js
exec bash

(Remarque: il n’est pas utile d’avoir une extension sur un script. Cela vous donnera simplement des maux de tête de dépendance plus tard si vous le réécrivez dans une autre langue. Si vous regardez dans/bin et/usr/bin, vous trouverez une beaucoup de scripts sh, bash et python; aucun d'entre eux ne possède une extension .sh, .bash ou .py)

4
geirha