J'essaie de comprendre comment écrire un script qui démarrerait le (s) programme (s) dans les sessions d'écran GNU au démarrage du système. J'essaye 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 dans la session écran et de détacher cette session immédiatement.
Merci pour les réponses, mais maintenant j'ai rencontré 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 essayé de citer la commande et n'aide pas trop.
scripts
gnu-screen
TbMa
la source
la source
-X
option?Réponses:
Vouliez-vous vraiment mettre le
\
à la fin de la ligne? Sinon, essayez de les supprimer - ils échappent au caractère suivant.également, la suppression de l'
-X
aide à la configuration fonctionne pour moi, par exemple:échoue
No screen session found
cependant:fonctionne bien. En tant que tel, je soupçonne que ce qui suit fonctionnera pour vous:
N'oubliez pas que si vous l'exécutez au démarrage, $ HOME n'est pas le même qu'après vous être connecté en tant qu'utilisateur spécifique. Si vous devez l'exécuter en tant qu'un certain utilisateur, vous devrez utiliser les goûts de
su
pour l'exécuter en tant qu'utilisateur, et spécifier le chemin complet supprimera toute ambiguïté:Ou, vous appelleriez le script entier ci-dessus comme
su - username /path/to/your/script
.la source
screen -S test -d -m $HOME/folder/folder/.program
presque exactement ce que je recherche, sauf si le dossier / .program est terminé, la session d'écran est automatiquement fermée. Existe-t-il un moyen de maintenir la session d'écran (shell) en cours d'exécution même après la fin du programme? Peut-être qu'au lieu d'exécuter le programme exclusivement, démarrez un shell qui démarre le programme puis revient à l'invite du shell, ou quelque chose?Comme Cry Havok l'a mentionné, vous pouvez placer le programme directement sur la ligne de commande.
Si vous devez vraiment utiliser l'option -X, a) vous devez spécifier la commande 'screen' et b) la session doit exister au préalable.
la source
sleep
commandes explicites pour donner à l'écran le temps de démarrer la session avant d'envoyer la commande.