常に接続されているサーバーでは、crontabで次のものを使用します。
@reboot nc -k -l 1337 < /tmp/fifo.fifo
常にネットワークに接続されていない、または開いていないクライアントでは、次のものを使用します。
nc -d $IP_OF_SERVER 1337 > /tmp/fifo.fifo & $SOME_COMMAND
サーバーは常に指定されたポート(-kパラメーターのおかげで)から接続をリッスンし、クライアントは必要に応じてサーバーに接続します。
私はMPDとFIFOビジュアライゼーションツールにそれを使用します。 MPDはリモートホストで実行されていますが、私のMPDクライアント(ncmpcpp)はローカルで実行されています。
これは、localhostのncmpcpp設定の重要な部分です。
mpd_host = "$IP_OF_SERVER"
visualizer_fifo_path = "/tmp/fifo.fifo"
これは、リモートサーバーのmpd設定の重要な部分です。
audio_output {
[…]
path "/tmp/fifo.fifo"
[…]
}
私のローカルコンピュータで "nc"コマンドを実行すると、多くのリソースが使用されているようです...私のCPUパフォーマンスの100%です。
問題がある場所にはどんなアイデアがありますか?それとも、これが正常であれば、状況全体をどのように改善できますか?
残念ながら、Visualizer_fifo_pathへのネットワークパスを指定することは不可能です。たとえば、次のようになります。
visualizer_fifo_path = "$IP_OF_SERVER:/tmp/fifo.fifo"
また、NFS経由でリモートホストをマウントし、NFS経由でマウントされたFIFOを使用することもできません。
以下はdtrussのいくつかの出力です:
$ >> ps aux | grep 1337
user 96823 95,2 0,0 2433292 576 s003 R+ 12:16PM 37:27.77 nc -d 192.168.2.42 1337
user 96821 0,0 0,0 2447044 1084 s003 Ss+ 12:16PM 0:00.00 bash -c nc -d 192.168.2.42 1337 > /tmp/volumio.fifo & ncmpcpp -c /Users/user/.ncmpcpp/config-volumio -s visualizer
$ >> sudo dtruss -p 96821
SYSCALL(args) = return
$ >> sudo dtruss -p 96823
dtrace: 353433 dynamic variable drops with non-empty dirty list
SYSCALL(args) = return
select(0x4, 0x7FFF5D031F90, 0x0, 0x0, 0x0) = 1 0
select(0x4, 0x7FFF5D031F90, 0x0, 0x0, 0x0) = 1 0
select(0x4, 0x7FFF5D031F90, 0x0, 0x0, 0x0) = 2 0
read(0x3, "\260\377N\377\022\377\325\376X\376J\376\233\375\253\375\311\374\332\374\262\374\276\374\234\374\232\374_\374L\374\217\374v\374\321\374\255\374\006\375\341\374\a\375\372\374\314\374\323\374\305\374\306\374k\374z\374\267\373\355\373u\373\251\373s\373\230\373\200\373\271\373\363\373\026\374^\374h\3746\374P\374\333\373\375\373q\373\225\373\270\372\354\372\270\371\364\371'\371g\371\036\371\\\371b\371\217\371\331\371\371\371\0", 0x400) = 1024 0
write(0x1, "\260\377N\377\022\377\325\376X\376J\376\233\375\253\375\311\374\332\374\262\374\276\374\234\374\232\374_\374L\374\217\374v\374\321\374\255\374\006\375\341\374\a\375\372\374\314\374\323\374\305\374\30
select(0x4, 0x7FFF5D031F90, 0x0, 0x0, 0x0) = 1 0
select(0x4, 0x7FFF5D031F90, 0x0, 0x0, 0x0) = 1 0
select(0x4, 0x7FFF5D031F90, 0x0, 0x0, 0x0) = 1 0
[…]
PS:おそらく問題は、「tmux」で「nc」が「ncmpcpp」で始まるということです。
tmux split-window -t "$session":1 -v -p 28 "nc -d $IP_OF_SERVER 1337 > /tmp/volumio.fifo & ncmpcpp -c $HOME/.ncmpcpp/config-volumio -s visualizer"
「nc -d $IP_OF_SERVER 1337」をバックグラウンドで永久に実行するにはどうすればよいですか? crontabでも起動できますか?サーバーに接続するための「-k」パラメータのようなものはありますか?