运行 Debian 的 Rock 4 SE 的启动脚本

运行 Debian 的 Rock 4 SE 的启动脚本

当我的 Rock 启动时,我尝试使用 URL 作为输入来运行 VLC 播放器。我创建了一个名为 startup.service 的单元文件并将其放入。

/etc/systemd/system/startup.service

它看起来像这样:

[Unit]

Description=Startup script

After=default.target

[Service]

ExecStart=sh /usr/sbin/startup.sh

[install]

WantedBy=default.target

/usr/sbin/startup.sh 看起来像这样

sudo -u rock vlc https://dropbox.com/s/<fileID>/<fileName.mp4?raw=1>

当我运行 startup.sh 时,VLC 会按应有的方式打开并从 url 播放视频。

当我使用启动服务时

sudo systemctl daemon-restart
sudo systemctl start startup.service

什么都没发生。

使用以下方式查看日志

sudo journalctl -u startup.service | less

我得到以下输出:

Nov 27 15:49:17 rockpi-4b systemd[1]: Started Startup script.
Nov 27 15:49:17 rockpi-4b sudo[1547]:     root : PWD=/ ; USER=rock ; COMMAND=/usr/bin/vlc https://www.dropbox.com/s/0k6xpcyp9ecpmau/test.mp4?raw=1
Nov 27 15:49:17 rockpi-4b sudo[1547]: pam_unix(sudo:session): session opened for user rock(uid=1000) by (uid=0)
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593cfaf50] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593d20e40] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593d20e40] main interface error: no suitable interface module
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593c25ee0] main libvlc error: interface "dbus,none" initialization failed
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593d180c0] main interface error: no suitable interface module
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593c25ee0] main libvlc error: interface "globalhotkeys,none" initialization failed
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593c25ee0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Nov 27 15:49:17 rockpi-4b sh[1555]: error: XDG_RUNTIME_DIR not set in the environment.
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593d180c0] skins2 interface error: cannot initialize OSFactory
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593d180c0] [cli] lua interface: Listening on host "*console".
Nov 27 15:49:17 rockpi-4b sh[1555]: VLC media player 3.0.17.4 Vetinari
Nov 27 15:49:17 rockpi-4b sh[1555]: Command Line Interface initialized. Type `help' for help.
Nov 27 15:49:17 rockpi-4b sh[1555]: > Shutting down.
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000005593d180c0] [cli] lua interface: Requested shutdown.
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000007f9c002640] main tls client error: cannot resolve www.dropbox.com port 443: System error
Nov 27 15:49:17 rockpi-4b sh[1555]: [0000007f9c0016c0] access stream error: HTTP connection failure
Nov 27 15:49:17 rockpi-4b sudo[1547]: pam_unix(sudo:session): session closed for user rock
Nov 27 15:49:17 rockpi-4b systemd[1]: startup.service: Succeeded.

谁能帮我弄清楚为什么我可以从 CLI 运行 VLC 并使用所需的远程文件,但不能通过服务运行?

有关 Rock Pi 的更多信息:

https://wiki.radxa.com/Rock4/getting_started

谢谢。

答案1

看一下https://www.freedesktop.org/software/systemd/man/[电子邮件保护]

一个简短而简单的解决方案是添加一个

User=%I

之后

[Service]

脚本也应该在没有sh前缀的情况下工作,只要确保它是可执行的即可。

[Unit]
Description=Startup script for %I
After=default.target

[Service]
User=%I
ExecStart=/usr/sbin/startup.sh

[install]
WantedBy=default.target

将您的单元文件重命名为类似以下内容:

/etc/systemd/system/[email protected]

删除sudo脚本里面的。

/usr/sbin/startup.sh

vlc https://dropbox.com/s/<fileID>/<fileName.mp4?raw=1>

现在使用systemctl假设rock是用户的名称。

sytemctl status [email protected]

是否应该打印有关单元文件的一些内容。


然后只需启动它:

sytemctl start [email protected]

enable如果您想在启动时启动它,请不要忘记它。


相关内容