我刚刚设置了一个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