daemontools を「システム管理だけに使うもの」と思ってはいませんか?
daemontools は、一般ユーザ権限で起動したデーモンを 制御するためにも使えます。ここではその特徴を利用し、 mpg123 をデーモンに見立ててお手軽にシェルから リモート操作できるようにしてみました。 機能は質素なものですが「手軽に mp3 を聞きたい、 でもキーボードから手を離したくないし、 余計なウインドウも出したくない」 という人には向いているでしょう。
supervise は、自分の監視しているデーモンが終了すると、
1秒後に立ち上げなおします。これを利用して、supervise に
mpg123 を起動させるようにしておけば、とくに何も指定せずとも
曲をリピートさせることが可能です。run
スクリプトの
中で mpg123 にプレイリストを渡すようにしておけば、svc を使って
以下のような制御が行えます:
こいつはなかなかウマーな特徴でしょう。 以下にその手順を示します。
ここでは /home/yusuke/.mp3play
とします。
$ mkdir /home/yusuke/.mp3play
run
スクリプトはこんだけです:
#!/bin/sh exec mpg123 `cat /home/yusuke/.mp3play/list`
これを .mp3play
ディレクトリに実行可能な状態で
置いておきます。
supervise は排他制御を行うので、2度 supervise を起動しても 2つ同時に走ってしまうことはありません。 だからまあこれはどこで起動してもいいです。 (注意: svscan を使う必要はないでしょう)
ぼくは自分の .xinitrc
で走らせることにしました。
以下のような行を追加します:
supervise /home/yusuke/.mp3play >/dev/null 2>&1 &
supervise は起動した瞬間に run
を
実行しようとしますが、起動したらいきなり曲が鳴り出すとビビリます(経験済)。
そのため、あらかじめ /home/yusuke/.mp3play
に
空の down
ファイルを作っておきましょう。
こうすると supervise は svc -d
されたのと同じ状態から
開始します。
$ touch /home/yusuke/.mp3play/down
この時点で /home/yusuke/.mp3play/
はこうなっています:
$ ls -l /home/yusuke/.mp3play -rw-r--r-- 1 yusuke 0 Feb 10 15:47 down -rwxr-xr-x 1 yusuke 46 Feb 10 15:40 run
最後に、適当なディレクトリに演奏のためのシェルスクリプトを置きます:
#!/bin/sh SVCDIR=/home/yusuke/.mp3play # stop playing first. svc -d $SVCDIR # immediately return if no file is specified. if [ ! "$1" ]; then exit; fi # put the files into the playlist. find "$@" -name '*.mp3' | sort > $SVCDIR/list # restart playing. svc -u $SVCDIR
このスクリプトは指定されたディレクトリ以下にある
*.mp3
ファイルをすべてプレイリストに追加し
演奏を開始させるものです。自動的にリピートされるのが気にいらない人は、
最後の svc -u
を svc -o
にしておきましょう。
これを mp
とかいう名前にでもしておけば、
などとして /mp3/sc/ 以下の mp3 ファイルをすべて 演奏させることができます。$ mp /mp3/sc
ほかにも、お好みに応じて以下のようなエイリアスなり シェル関数なりを追加するといいでしょう:
alias first='svc -t /home/yusuke/.mp3play' # play from the beginning of the list alias once='svc -o /home/yusuke/.mp3play' # play once alias rept='svc -u /home/yusuke/.mp3play' # play repeatedly alias stop='svc -d /home/yusuke/.mp3play' # stop playing alias next='svc -i /home/yusuke/.mp3play' # play the next one
supervise のおいしいところは、
svc -o
(once) と svc -u
(repeat)
が途中でシームレスに切りかえられることです。最初に svc -o
で起動しておいて、演奏中に気が変わっても
svc -u
を実行すればそのままリピートモードになってくれます
(逆もまたしかり)。
欠点:
Last modified: Sat May 18 16:35:20 2002
Yusuke Shinyama