Linux,他の端末(ターミナル)をリアルタイムで監視する方法

スポンサーリンク

鍛錬 422

Linux,他の端末(ターミナル)をリアルタイムで監視する方法

遠隔で共同作業をする場合などに、他の端末(ターミナル)の作業風景をリアルタイムで監視するには script と mkfifo を使用します。

スポンサーリンク

準備

1. mkfifo で名前付きパイプ(FIFO)を作成する

以下は、mkfifo で名前付きパイプ、fifo_monitoring を作成しています。

関連記事:Linux,永続的な名前付きのパイプを作成しプロセス間で通信する

監視される側の設定

***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ mkfifo fifo_monitoring
***@ubuntu:/var/tmp$ ls -l fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 fifo_monitoring
***@ubuntu:/var/tmp$

2. script で、端末(ターミナル)に入力した内容を名前付きパイプに書き込むように設定する

以下は、script にオプションの -f を付加して端末に書き込むごとにフラッシュし、名前付きパイプ fifo_monitoring に記録するように設定しています。

関連記事:Linux,端末(ターミナル)で入力した内容を記録する

監視される側の設定の続き

***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ mkfifo fifo_monitoring
***@ubuntu:/var/tmp$ ls -l fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 fifo_monitoring
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ script -f fifo_monitoring
スクリプトを開始しました。ファイルは fifo_monitoring です
***@ubuntu:/var/tmp$

3. 端末(ターミナル)を新しく立ち上げ、監視を開始する

以下は、新しく立ち上げた端末で、先程別の端末にて作成した名前付きパイプ fifo_monitoring を cat して、監視を開始しています。

監視する側の設定

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls -l /var/tmp/fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 /var/tmp/fifo_monitoring
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ cat /var/tmp/fifo_monitoring
Script started on 2019-02-23 00:12:48+0900
***@ubuntu:/var/tmp$
スポンサーリンク

実行結果

以下は、実際に挙動を確認しています。

監視される側の端末の内容が、監視する側の端末にリアルタイムで反映されます。

監視される側で date コマンドを実行

以下は、監視される側で date コマンドを実行しています。

監視される側の時刻を名前付きパイプに書き込み、監視する側がそれをリアルタイムで読み込んでいるだけなので、表示される時刻は当然同じ時刻となります。

監視される側

***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ mkfifo fifo_monitoring
***@ubuntu:/var/tmp$ ls -l fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 fifo_monitoring
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ script -f fifo_monitoring
スクリプトを開始しました。ファイルは fifo_monitoring です
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ date
Sat Feb 23 00:14:10 JST 2019
***@ubuntu:/var/tmp$

監視する側

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls -l /var/tmp/fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 /var/tmp/fifo_monitoring
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ cat /var/tmp/fifo_monitoring
Script started on 2019-02-23 00:12:48+0900
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ date
Sat Feb 23 00:14:10 JST 2019
***@ubuntu:/var/tmp$

監視される側で echo ABC を実行

以下は、監視される側で echo ABC を実行して、監視する側にリアルタイムで反映されることを確認しています。

監視される側

***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ mkfifo fifo_monitoring
***@ubuntu:/var/tmp$ ls -l fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 fifo_monitoring
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ script -f fifo_monitoring
スクリプトを開始しました。ファイルは fifo_monitoring です
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ date
Sat Feb 23 00:14:10 JST 2019
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ echo ABC
ABC
***@ubuntu:/var/tmp$

監視する側

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls -l /var/tmp/fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 /var/tmp/fifo_monitoring
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ cat /var/tmp/fifo_monitoring
Script started on 2019-02-23 00:12:48+0900
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ date
Sat Feb 23 00:14:10 JST 2019
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ echo ABC
ABC
***@ubuntu:/var/tmp$

監視される側で exit を実行し、script を終了

以下は、監視される側で exit を実行し、script を終了しています。

監視される側で script が終了すると、監視する側でも名前付きパイプとの接続が切断されて終了します。

監視される側

***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ mkfifo fifo_monitoring
***@ubuntu:/var/tmp$ ls -l fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 fifo_monitoring
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ script -f fifo_monitoring
スクリプトを開始しました。ファイルは fifo_monitoring です
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ date
Sat Feb 23 00:14:10 JST 2019
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ echo ABC
ABC
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ exit
exit
スクリプトを終了しました。ファイルは fifo_monitoring です
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$

監視する側

***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ ls -l /var/tmp/fifo_monitoring
prw-r--r-- 1 *** *** 0 Feb 23 00:11 /var/tmp/fifo_monitoring
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ cat /var/tmp/fifo_monitoring
Script started on 2019-02-23 00:12:48+0900
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ date
Sat Feb 23 00:14:10 JST 2019
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ echo ABC
ABC
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ 
***@ubuntu:/var/tmp$ exit
exit

Script done on 2019-02-23 00:15:08+0900
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$

 
上記に示した通り、監視される側の端末内容が、監視する側の端末にリアルタイムで反映されることが確認できました。

タイトルとURLをコピーしました