我想在启动时(实际上可能是在用户登录时)使用 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。