web-dev-qa-db-fra.com

Comment envoyer une entrée standard au travail en arrière-plan?

Après plusieurs essais et erreurs, j'ai installé un autre visualiseur d'images sur ma machine distante (feh), réglage dans UP- et essayé à nouveau la commande.

feh WARNING: /tmp/feh_stdin_ZwCjv7 - No Imlib2 loader for that file format
feh: No loadable images specified.
See 'man feh' for detailed usage information

Je pense que c'est le problème qui a causé l'erreur display _ _ sur une erreur d'éclatement.

display: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.

Selon - https://superuser.com/a/1517417/1106777 , la commande a échoué car j'ai démarré display comme travail d'arrière-plan (&).

Si le processus est démarré avec & Ensuite, la coquille redirigera réellement son stdin de /dev/null Pour éviter toute tentative de lecture.

Si je supprimais le trailing &, La commande sera sans problème, prenons un exemple de:

De travail

ssh beer@laika "DISPLAY=:0 feh -" < <(cat 1.jpeg)

(Aussi) travaillant

ssh beer@laika "DISPLAY=:0 display -" < <(cat 1.jpeg)

Comment envoyer STDIN à l'arrière-plan & Job?

3
Liso

La commande

display - && sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560

démarre la commande display, attend la sortie, puis exécute sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560 Si l'état de sortie indique le succès.

Vous voulez probablement

display - & sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560

ce qui commence display dans l'arrière-plan de la coque continue immédiatement avec les commandes restantes.

2
steeldriver

Il semble être numéro d'autorité sur SSH :

Affichage et autorité

Un programme X a besoin de deux informations afin de se connecter à un affichage X. (Notez que wmctrl est un programme X, même s'il accède à d'autres fenêtres des processus plutôt que de créer son propre.)

  • Il faut l'adresse de l'écran, qui est typiquement :0 Lorsque vous êtes connecté localement ou :10, :11, etc. Lorsque vous êtes connecté à distance (mais le numéro peut modifier en fonction du nombre de connexions X actives). L'adresse de l'écran est normalement indiquée dans la variable d'environnement d'affichage.

  • Il a besoin du mot de passe pour l'affichage. X Afficher les mots de passe sont appelés cookies magiques. Les cookies magiques ne sont pas spécifiés directement: ils sont toujours stockés dans X dossiers d'autorité, qui sont une collection d'enregistrements de la forme "Affichage: 42 dispose de cookies 123456". Le fichier d'autorité X est normalement indiqué dans la variable d'environnement Xauthority. Si $XAUTHORITY n'est pas défini, les programmes utilisent ~/.Xauthority.

Heureusement, vous pouvez résoudre ceci en mettant en place des cookies:

Pour copier des cookies lorsque vous vous connectez à votre session de bureau X, ajoutez les lignes suivantes à ~/.xprofile ou alors ~/.profile (ou un autre script qui est lu lorsque vous vous connectez):

case :$DISPLAY:$XAUTHORITY in
  :*:?*) XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

Ceci est un petit résumé de la réponse. S'il vous plaît visitez le lien ci-dessus pour tous les détails.

0
WinEunuuchs2Unix