在 Ubuntu 上使用 systemd 在启动时启动程序

在 Ubuntu 上使用 systemd 在启动时启动程序

我想在启动时(实际上可能是在用户登录时)使用 systemd 运行 Java 后端程序,该程序将使用 X 服务器在内存中创建渲染窗口。渲染窗口由 VTK 创建,用于使用 GPU 进行体积渲染,我将从中获取屏幕截图。

以下是我放入/etc/systemd/system目录中的服务文件。

[Unit]
Description= myservice
After=mysql.service

[Service]
User=root
Environment=DISPLAY=:0
Restart=always
Type=forking
ExecStart=/root/myservice/startup.sh
ExecStop=/root/myservice/shutdown.sh

[Install]
WantedBy=multi-user.target

通过 GUI 登录后,服务没有启动。因此我执行命令xhost +让所有用户访问显示并运行systemctl start myservice以手动启动服务。然后我得到了我想要的结果。

我想知道是否有任何方法可以让 myservice 在登录时自动运行。还有一个问题,可以将所有计算机的环境设置为固定的 DISPLAY 编号吗?

我正在使用 Ubuntu 16.04/18.04。

相关内容