Debian
systemd-service 中沒有 alsa-sound(使用螢幕)
我只是設置了一個
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.init
start 基本上在哪裡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