关于Linux使用systemd自启动的一点建议
Closed this issue · 8 comments
使用systemd自启动只有声音没有播放器界面,我怀疑应该需要某些前置服务
但多次尝试后还是不可行,最后换了个简单粗暴的方法,直接延迟10s后启动,成功
~/.config/systemd/user/
[Unit]
Description=embytoplayer
[Service]
ExecStartPre=/bin/sleep 10
ExecStart=/home/rim/embyToLocalPlayer/etlp.sh
[Install]
WantedBy=default.target
还真可以。
要保存到用户目录,刚开始没注意看。
~/.config/systemd/user/
感觉是需要什么wayland/x11之类的先启动,不过是在找不到相关服务
最后还是选择直接延时,能跑就行(
顺带我只在Arch Linux上测试运行,其他OS应该大差不差
我用 Debian_Xfce 测试。
用 ssh systemctl --user status etlp
检查服务完全启动后再登录桌面的话,就会无法弹出播放窗口。
此时,若重启服务,会正常工作。systemctl --user restart etlp
该方案需要在 etlp 服务启动完成前登录桌面,才可以。
对,事实上10s就是给我登录的时间(
我一直怀疑是显卡或者wayland来着,但找不到wayland相关服务(现在发现原来在 --user )
按照桌面环境这个思路我找到一个图形界面服务,graphical-session.target
这可以让 etlp 在图形界面启动后运行
这应该适用于所有使用桌面环境的Linux了
~/.config/systemd/user/etlp.service
[Unit]
Description=etlp
After=graphical-session.target
[Service]
ExecStart=/home/rim/embyToLocalPlayer/etlp.sh
[Install]
WantedBy=graphical-session.target
Debian_Xfce
还是弹不出,但服务启动和登录时间基本上同步,加延迟两秒后成功了。
但如果登录之前,用远程ssh连接上的话,服务就会启动,导致后续登录弹不出播放器。
步骤:不登录图形界面,等30秒左右,用ssh检查服务运行状态,发现服务刚刚运行。
Arch_KDE_Wayland
ssh 连接会让 graphical-session.target 运行?我这里复现不出来
加延迟可以写个注释,按需添加
ssh 连接会让 graphical-session.target 运行?
是的。
后面我用下面这个测试,目前没发现问题
[Unit]
Description=embyToLocalPlayer
After=graphical-session.target
[Service]
ExecStart=/root/etlp/etlp_run.command
ExecStartPre=/bin/bash -c "until loginctl show-session $(loginctl | grep $USER | awk '{print $1}') -p Type | grep -q -e 'x11\|wayland'; do sleep 1; done; sleep 2"
TimeoutStartSec=infinity
[Install]
WantedBy=graphical-session.target
添加 ExecStartPre 的版本我这里测试没有问题