Bash スクリプトは、Crontab で実行すると異なる動作をします。編集 - Pulseaudioの環境変数の問題

Bash スクリプトは、Crontab で実行すると異なる動作をします。編集 - Pulseaudioの環境変数の問題

Cronは両方のコマンドを完全に無視しますが、手動で完全に機能するスクリプトがあります(これは単なるスニペットです)。

sinkint=$(pacmd list-sinks | sed -n '/index\W [1-9]/p' | sed 's/.*://g;s/\W//g')

pacmd set-default sink $sinkint
pacmd set-sink-volume $sinkint 20%

予約されたこと

* * * * * /path/to/script arg1 >> /path/to/log

エラーメッセージ

No PulseAudio daemon running, or not running as session daemon.
No PulseAudio daemon running, or not running as session daemon.
You have to specify a sink name/index and a volume

編集する:

スクリプトで変数を試しました。

export PULSE_SERVER=unix:/tmp/pulse-socket
export PULSE_COOKIE=/tmp/pa_cookie

私の/etc/pulse/default.paのソケット

load-module module-native-protocol-unix socket=/tmp/pulse-socket

私の/etc/pulse/client.confのソケットとCookie

default-server = unix:/tmp/pulse-socket
cookie-file = /tmp/pa_cookie

クローンタップ-e

PULSE_SERVER=unix:/tmp/pulse-socket
PULSE_COOKIE=/tmp/pa_cookie

* * * * * /path/to/script arg1 2> /path/to/log

ベストアンサー1

XDG_RUNTIME_DIR=/run/user/1000crontabに追加すると動作します!

とても迷惑なことです。これは、文字通り私が必要とする唯一の環境変数だからです。まあ、将来的に誰かが答えが必要な場合 - これが答えだと思います。

おすすめ記事