GNU/Linux >> Linux の 問題 >  >> Linux

リモートアクティブターミナルでコマンドを実行しますか?

PIDが6350のターミナルエミュレータ(T1)を開いているとします。

別の端末から、次のコマンドを入力します(C1):

echo "lsn" > /proc/6350/fd/0

これはlsを書き込みます T1の新しい行ですが、実行されません。なぜですか?

cat|bashも使ってみました echo "lsn" > /proc/catid/fd/0を使用 しかし、それはまだ実行されていません。

コマンドを別の端末にエコーしてコマンドを実行するにはどうすればよいですか?

考えられる答え:

$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;

この場合、端末に直接書き込むことはできなくなります(コマンド(C1)がこの端末に表示したものと同じようにすべてが表示されます。

承認された回答:

ttyechoというコマンドラインユーティリティがあります 別の端末(tty / pts)にコマンドを送信し、コマンドを実行することができます。

sudo ttyecho -n /dev/pts/5 ls

参照:コマンドまたはデータを他の端末に送信するユーティリティ(tty / pts)

ttyechoも参照してください。 githubのソースコード。

もう1つの興味深いttyコマンドはselectorです。 、tty入力バッファを更新するコンソールのリアルタイムインタラクティブパターンマッチャー。

# selector examples
selector -v -x @ <(find . -maxdepth 2 -type d | awk '{print $0"@cd "$0}')
selector -v -x @ <(grep -E -o 'http[^ ]+' fileWithURLS)

参照:セレクター–コンソールの動的検索


Linux
  1. 定義されたディレクトリ範囲でコマンドを実行しますか?

  2. ターミナルCtrl+sとCtrl+z?

  3. ファイルが見つかった場所でコマンドを実行しますか?

  1. リモート ssh コマンドで変数を渡す

  2. Linuxはコマンドをリモートで実行します

  3. Mac OS X ターミナルの ip コマンド

  1. 入力でNohupコマンドを実行しますか?

  2. |ターミナルコマンドで?

  3. パスワードなしでsshコマンドをsudoコマンドをリモートで実行する方法