それでも出力を受け取り、入力を送信できる間はトラップ付きのSIGHUPを無視します。

それでも出力を受け取り、入力を送信できる間はトラップ付きのSIGHUPを無視します。

したがって、次のようにしてHUPを無視できることを既に知っています。

trap "command" HUP

しかし、プロセスは完全にバックグラウンドで発生するため、同じ操作を実行しながらそのコマンドに入力を送信できますか? (などscreenの可能な代替手段を使用せずにtmux

その場合、この投稿は同様の投稿の代替として使用できます。これ1(screenソリューションとして使用)。

たとえば、

trap "echo HUP received" HUP; read X; echo input was $X

これはうまくいきますが送る入力する。出力は表示されないため、trap使用されているプロセスが対話型(ncurseなど)の場合は使用が制限されます。

trapしたがって、コマンドで使用し(HUPを無視)、一部の操作を自動化したい場合expect(出力が必要):

#!/bin/bash

read -s PWD

/usr/bin/expect -d <<EOF
set timeout -1
spawn trap "/usr/bin/vncserver -geometry 1366x768 :1" HUP
expect "Password:"
send "$PWD\r"
expect "Verify:"
send "$PWD\r"
expect "Would you like to enter a view-only password"
send "n\r"
expect eof
EOF

それは動作しません。 (のような代替を使用しない限りscreentmux

関連情報