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で動作しないのはなぜですか?
コメント