Debian

systemd-service 中沒有 alsa-sound(使用螢幕)

  • September 13, 2020

我只是設置了一個systemd.service以便在啟動時執行分離到螢幕的cmus (一個控制台音樂播放器) 。

在沒有使用者登錄機器的情況下通過遠端啟動時,我沒有聽到聲音。

確實得到了聲音,當我以使用者身份登錄時,我將服務設置為執行。但是:我無法通過遙控器更改音量,它顯示“混音器未打開”。

當我剛剛啟動 cmus 分離到以使用者身份手動登錄的螢幕時,我可以再次註銷,並通過遙控器獲得聲音和混音器。

當我將服務設置為以 root 身份執行時(出於多種原因,我不希望這樣做),它確實有聲音和混音器。

不幸的是,這裡Environment=XDG_RUNTIME_DIR=/run/user/1000建議沒有幫助(1000 是正確的)。

所以問題是:這裡缺少什麼才能alsa以使用者身份在我的 systemd-service 中充分工作?

我現在的單位是這樣的:

[Unit]
Description=cmusd (consolemusicplayer in screen with remote-web-server)
After=syslog.target network.target sound.target

[Service]
Type=forking
User=myusername
WorkingDirectory=/home/myusername/cmus_daemon
ExecStart=/home/myusername/cmus_daemon/cmusd.init start
ExecStop=/home/myusername/cmus_daemon/cmusd.init stop
Environment="HOME=/home/myusername" "USERNAME=myusername"

[Install]
WantedBy=multi-user.target

cmusd.initstart 基本上在哪裡

screen -dmS cmusplayer cmus --listen $CMUS_IP

我的系統是帶有光學音頻的小板上的 ubuntu 伺服器 19.10。

好吧,經過更多的搜尋和試驗,我找到了一個解決方案,至少在這個 ubuntu 上它就像一個魅力:只需添加Group=audio. 不需要環境。

[Unit]
Description=cmusd (consolemusicplayer in screen with remote-web-server)
After=syslog.target network.target sound.target

[Service]
Type=forking
User=myusername
Group=audio
WorkingDirectory=/home/myusername/cmus_daemon
ExecStart=/home/myusername/cmus_daemon/cmusd.init start
ExecStop=/home/myusername/cmus_daemon/cmusd.init stop

[Install]
WantedBy=multi-user.target

引用自:https://unix.stackexchange.com/questions/609271