Exécuter un programme avec l'écran GNU et le détacher immédiatement après

23

J'essaie de comprendre comment écrire un script qui lancerait un ou des programmes dans les sessions GNU Screen au démarrage du système. J'essaie ceci:

#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \

mais la commande ne peut pas être exécutée car la session est déjà détachée? La seule chose dont j'ai besoin est d'exécuter la commande en session d'écran et de détacher cette session immédiatement.

Merci pour les réponses, mais maintenant je suis confronté à un autre problème. Le script cesse de fonctionner après avoir mis des variables pour mon "programme et programme2". Quelque chose comme ça:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg

pour une raison quelconque "-f config.cfg" a été ignoré. Je suis également tenté de citer la commande et n'aide pas aussi.

    
posée TbMa 22.09.2011 - 17:27
la source

2 réponses

32

Vouliez-vous vraiment mettre le \ à la fin de la ligne? Si ce n’est pas le cas, essayez de les supprimer - ils échappent au caractère suivant.

aussi, supprimer le -X aide la configuration à travailler pour moi, par exemple:

screen -S test -d -m -X touch /tmp/test

échoue avec No screen session found , cependant:

screen -S test -d -m touch /tmp/test

fonctionne bien. En tant que tel, je soupçonne que ce qui suit fonctionnera pour vous:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

Rappelez-vous que si vous l'exécutez au démarrage, $ HOME n'est pas le même que lorsque vous vous connectez en tant qu'utilisateur spécifique. Si vous devez l'exécuter en tant qu'utilisateur spécifique, vous devrez utiliser les méthodes de su pour l'exécuter en tant qu'utilisateur, et spécifier le chemin d'accès complet supprimera toute ambiguïté:

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

Ou, vous appelez le script entier au-dessus de su - username /path/to/your/script .

    
réponse donnée Cry Havok 22.09.2011 - 18:51
la source
4

Comme mentionné dans Cry Havok, vous pouvez placer le programme directement sur la ligne de commande.

Si vous devez vraiment utiliser l'option -X, alors a) vous devez spécifier la commande 'screen' et b) la session doit exister avant.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
    
réponse donnée Arcege 22.09.2011 - 18:56
la source

Lire d'autres questions sur les étiquettes