/run/user/$UIDディレクトリはいつ作られるか

ALL
スポンサーリンク

Ubuntu で /run/user/$UID($UIDはユーザーID )ディレクトリがありますが、これはユーザーがログインした際に作られます。
(正確には、PAM の pam_systemd によって、初回ユーザーセッション開始時に作られます)

その為、ユーザーログイン前に cron を実行する際は、/run/user/$UID があることを期待しているプログラムの実行ではエラーが起こります。

例えば、pulseaudio をユーザー権限で実行させようとして、crontab でシステム起動時に実行される @reboot を使って以下のように実行しようとすると、エラーになります。

@reboot pulseaudio -D --exit-idle-time=-1

そこで pulseaudio では、既存のディレクトリを PULSE_RUNTIME_PATH で指定して起動するようにします。

@reboot mkdir -p /tmp/$(id -u)/pulse; export PULSE_RUNTIME_PATH="/tmp/$(id -u)/pulse"; /usr/bin/pulseaudio -D --exit-idle-time=-1

参考

pam_systemd
linux – What is this folder /run/user/1000? – Unix & Linux Stack Exchange
pacmd-cronで動作しないのはなぜですか?

コメント