J'essaie d'envoyer une entrée à une commande interactive exécutée via l'écran. Voici ma commande initialeProblèmes lors de l'envoi d'une entrée à un 'écran' détaché via readreg et coller
screen -L -c ./customrc -S psql -d -m /opt/PostgreSQL/9.0/bin/psql
La commande ci-dessus se déroulera psql interactive en mode écran Détacher. Le customrc est utilisé pour définir un fichier journal pour la sortie (que je vais lire un autre processus par vote)
J'utilise après deux commandes pour envoyer des données à psql en cours d'exécution à l'écran
screen -S psql -X readreg p psqlcommands.sql
screen -S psql -X paste p
Le problème est que les commandes ci-dessus ne fonctionnent pas, sauf si je rattache l'écran au moins une fois. Une fois que j'ai joint l'écran et détaché, les commandes ci-dessus fonctionnent comme prévu. Je dois lancer ces commandes via le processus java en arrière-plan, donc le shell interactif (bash) n'est pas disponible. Mon but est d'exécuter psql en mode interactif et de lui transmettre une entrée et de capturer sa sortie via un fichier journal. Jusqu'à présent, j'ai essayé d'exécuter l'écran via xterm (ou konsole ou gnome-terminal) en mode attach, utilisez readreg/paste, puis détachez, mais je me rends compte que xterm ne sera pas disponible dans mon environnement de production. J'ai aussi essayé d'envoyer la sortie vers/proc // fd/0 mais je suis incapable d'émuler 'ENTER' depuis le clavier (je dois attacher et appuyer pour que la sortie soit acceptée par psql). Je pense que les tuyaux et fifo peuvent aider mais je suis incapable de comprendre comment procéder avec eux en utilisant screen et psql.
J'apprécie d'autres conseils ou solutions de contournement.
Merci,
Usman.
Vous n'avez pas besoin d'exécuter 'true' dans un sous-shell,' true' fonctionnera correctement. –
Cela me donne une erreur de syntaxe si je ne l'exécute pas via un sous-shell. –