あるbashから別のbashプロセスにbashコマンドを実行するには?

あるbashから別のbashプロセスにbashコマンドを実行するには?

2 つの bash プロセスが実行中です。名前を bash_1 と bash_2 として指定します。 bash_2のbash_1からコマンドを実行したいです。私はこれを達成するためにこのアプローチに従います。

bash_1からIOの開発ファイルを取得します。

vchandola@mininet-server:~$ echo $$  
1097
vchandola@mininet-server:~$ ls -alh /proc/1097/fd  
total 0  
dr-x------ 2 vchandola vchandola  0 Jul 11 15:48 .  
dr-xr-xr-x 9 vchandola vchandola  0 Jul 11 15:48 ..  
lrwx------ 1 vchandola vchandola 64 Jul 11 15:48 0 -> /dev/pts/2  
lrwx------ 1 vchandola vchandola 64 Jul 11 15:48 1 -> /dev/pts/2  
lrwx------ 1 vchandola vchandola 64 Jul 11 15:48 2 -> /dev/pts/2  
lrwx------ 1 vchandola vchandola 64 Jul 11 16:08 255 -> /dev/pts/2  

bash_2 で次のコマンドを実行します。 bash_2でコマンドを実行します。 bash_1 で bash コマンドを実行します。

root@mininet-server:/home/vchandola# socat - /dev/pts/2
hello
ls

bash_2でこれらの応答を期待しましたが、私は見ませんでした。 bash_1では、両方の文字列が提供されますが、Enter /改行文字が期待どおりに読み込まれたり提供されたりしていないようです。これがbash_1で見たものです。

vchandola@mininet-server:~$ hello
ls

bash_1でhelloとlsコマンドが実行されないのはなぜですか? bash_1でhelloとlsを実行する方法は?

ベストアンサー1

shell-12つのシェルがあり、次のものがある場合shell-2

(shell-1) $ who am i
user     pts/0        ...

(shell-2) $ who am i
user     pts/1        ...

それから書く関連文字デバイスの出力は、関連端末に印刷されます(ご覧のように):

(shell-2) $ echo hello > /dev/pts/0
$

(shell-1) $ hello

デバイスに書き込むことはshell-2デバイスに書き込むことと変わりませんshell-1echo helloで実行するとshell-1、にも記録されます/dev/pts/0が、記録されません。入力するそのシェルの場合、端末の「画面」に書き込まれます。

プロセスがシェルの標準入力ストリームに書き込むようにするには、他のメカニズム(パイプまたはfifoなど)を使用し、シェルを実行するプロセスでこれを設定する必要があります。

おすすめ記事