私には2人のユーザーがいます。 user1とuser2。 user1によって実行されるbashスクリプトがあり、user2によって開始された画面端末でコマンドを実行する必要があります。提案?ありがとうマックス
screen
の場合、次を使用できます
screen -S user2/sessionname -p windowname -X stuff "~user1/somescript.sh
"
これにより、テキスト~user1/somescript.sh
(user1のホームディレクトリ内のファイルを参照)が特定の画面セッションの特定のウィンドウに入力され、改行文字が送信されます。
(はい、2番目の"
は改行する必要があります。そうでない場合は、テキストを送信し、画面セッションでReturnキーを押す必要があります。または$'stuff blah\n'
を使用します)
これを行うには、user2/sessionname
への書き込みアクセス権が必要です。 multiuser
およびacladd
の説明については、画面のマニュアルページをお読みください。
一般的な「別のttyで実行する」場合は、writevt /dev/pts/X sometext
を使用できます。 writevt
ツールはconsole-toolsパッケージの一部です。ディストリビューションが代わりにkbdを使用する場合は、 writevt.c
を取得します。これはLinuxに固有です。
./somescript.sh >& /dev/pts/X
ここで、/dev/pts/X
は、user2の画面に属するttyデバイスです。
書き込みアクセスが必要になります。これは、user2がchmod/setfaclを使用して指定するか、Sudo
を使用できます。
(>& file
は> file 2>&1
と同等であり、stdoutとstderrの両方を指定されたファイルにリダイレクトします。)