コンピュータ/ソフトウェア関連Tips

rootユーザーで音を出す

作成日: Aug 5, 2013
カテゴリー: LINUX タグ: LINUX

自宅に、必要なときだけディスプレイを接続しているCentOSマシンがあって、起動時に(将来的には他のタイミングでも)音声で通知するようにしたい。

/etc/rc.localに、

echo "Attention. The computer has booted up." | festival --tts

を追加してリブート。音が出ない。

su - して、上記コマンドを実行したところ、

Pulseaudio: Connection refused

となる。一般ユーザーの場合は問題無し。

どうも、自分がしたいことがレアケースの模様。

http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

に、PulseaudioをSystem-Wide Daemonで動かす方法が解説されていたのだが、今回の用途では、一般ユーザーは音声出力せず、音声出力するのはrootユーザーのみであるので、音声出力の都度、pulseaudioを起動する方法ってないのかな…と思って、

# pulseaudio --start ; echo "Attention. The computer has booted up." | festival --tts
W: main.c: This program is not intended to be run as root (unless --system is specified).

としたところ、音声は出力された。

また、

# pulseaudio --start & echo "Attention. The computer has booted up." | festival --tts
W: main.c: This program is not intended to be run as root (unless --system is specified).
[2]+  Done                    pulseaudio

とした場合でも、音声は出力された。

–start無しで、単に、pulseaudioとしたときは、

# pulseaudio ; echo "Attention. The computer has booted up." | festival --tts
W: main.c: This program is not intended to be run as root (unless --system is specified).
W: main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.Spawn.ExecFailed: /bin/dbus-launch terminated abnormally without any error message

^CPulseaudio: Connection refused
Pulseaudio: Connection refused

てな感じでハングアップ。^CはCTRL+C。

# pulseaudio & echo "Attention. The computer has booted up." | festival --tts
[1] 1503
W: main.c: This program is not intended to be run as root (unless --system is specified).
W: main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.Spawn.ExecFailed: /bin/dbus-launch terminated abnormally without any error message

音声出力された。

# pulseaudio &

を実行したあと、プロンプトが表示されないので、

echo "Attention. The computer has booted up." | festival --tts

をペーストしたら、音声出力された。しかし、その後の挙動が変になった。

# ps aux|grep pulse
root      1535  0.0  0.0 341100  4860 pts/0    T<l  22:20   0:00 pulseaudio

killしたら、また音声出力されるようになった。

代わりにbeepメロディーにしてみた。http://blog.meyju.net/2011/07/27/beep-sounds/

beepはrc.local中の記述で音が出た。