systemd-service 中没有 alsa-sound(使用屏幕)

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开始

screen -dmS cmusplayer cmus --listen $CMUS_IP

我的系统是一个带有光纤音频的小板上的 ubuntu 服务器 19.10。

答案1

好吧,经过更多的搜索和实验,我找到了一个解决方案,至少在这个 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

相关内容