我已经设置了一个运行Ubuntu20.04的服务器,如果由于任何原因电源出现故障或重新启动,我希望能够自动运行脚本,执行以下操作;
sudo systemctl restart ovenmediaengine.service
export DISPLAY=:0 && obs --startstreaming &我不知道为什么在重新启动服务器时需要重新启动ovenmediaengine服务,它在安装时已经被启用为服务。
我研究了如何使用crontab
sudo crontab -e并在行尾加上:
@reboot /path/to/script.sh脚本文件包含上面写的两行,并且它也被设置为可执行文件。我还尝试在脚本的开头添加几秒钟的延迟,因为这阻止了我在另一个项目上重新启动时运行脚本。
我该如何去检查什么可能是错的呢?
有没有更好的方法来做我在这里需要做的事?
编辑:以下是重启前后sudo systemctl status ovenmediaengine.service的输出:
● ovenmediaengine.service - OvenMediaEngine
Loaded: loaded (/lib/systemd/system/ovenmediaengine.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-07-13 08:03:46 BST; 13min ago
Process: 670 ExecStart=/usr/bin/OvenMediaEngine -d (code=exited, status=0/SUCCESS)
Main PID: 750 (OvenMediaEngine)
Tasks: 24 (limit: 4611)
Memory: 23.3M
CGroup: /system.slice/ovenmediaengine.service
└─750 /usr/bin/OvenMediaEngine -d
Jul 13 08:03:40 streambox-PowerEdge-R210-II systemd[1]: Starting OvenMediaEngine...
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.744] W [OvenMediaEngine:750] HLS | hls_publisher.cpp:38 | HLS Publ>
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.744] W [OvenMediaEngine:750] DASH | dash_publisher.cpp:36 | DASH P>
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.745] W [OvenMediaEngine:750] LLDASH | cmaf_publisher.cpp:39 | LLDA>
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.813] W [OvenMediaEngine:750] Thumbnail | thumbnail_publisher.cpp:45 >
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.935] W [OvenMediaEngine:750] Publisher | publisher.cpp:69 | File p>
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.935] W [OvenMediaEngine:750] Publisher | publisher.cpp:69 | MPEGTS>
Jul 13 08:03:45 streambox-PowerEdge-R210-II OvenMediaEngine[750]: [2022-07-13 08:03:45.935] W [OvenMediaEngine:750] Publisher | publisher.cpp:69 | RTMPPu>
Jul 13 08:03:46 streambox-PowerEdge-R210-II systemd[1]: Started OvenMediaEngine.之后:
● ovenmediaengine.service - OvenMediaEngine
Loaded: loaded (/lib/systemd/system/ovenmediaengine.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-07-13 08:19:45 BST; 7s ago
Process: 2293 ExecStart=/usr/bin/OvenMediaEngine -d (code=exited, status=0/SUCCESS)
Main PID: 2294 (OvenMediaEngine)
Tasks: 30 (limit: 4611)
Memory: 7.5M
CGroup: /system.slice/ovenmediaengine.service
└─2294 /usr/bin/OvenMediaEngine -d
Jul 13 08:19:45 streambox-PowerEdge-R210-II systemd[1]: Starting OvenMediaEngine...
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.303] W [OvenMediaEngine:2294] HLS | hls_publisher.cpp:38 | HLS Pu>
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.303] W [OvenMediaEngine:2294] DASH | dash_publisher.cpp:36 | DASH>
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.304] W [OvenMediaEngine:2294] LLDASH | cmaf_publisher.cpp:39 | LL>
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.305] W [OvenMediaEngine:2294] Thumbnail | thumbnail_publisher.cpp:4>
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.312] W [OvenMediaEngine:2294] Publisher | publisher.cpp:69 | File>
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.312] W [OvenMediaEngine:2294] Publisher | publisher.cpp:69 | MPEG>
Jul 13 08:19:45 streambox-PowerEdge-R210-II OvenMediaEngine[2294]: [2022-07-13 08:19:45.312] W [OvenMediaEngine:2294] Publisher | publisher.cpp:69 | RTMP>
Jul 13 08:19:45 streambox-PowerEdge-R210-II systemd[1]: Started OvenMediaEngine.我在sudo crontab -e中添加了以下内容
@reboot /home/streambox4/startupScript.sh >> /var/log/startupScript.log 2>&1
下面是日志文件的输出。这是否意味着,由于顺序事情被初始化,它没有启动,因为它需要等待?
No protocol specified
qt.qpa.xcb: could not connect to display :0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.发布于 2022-07-12 14:27:14
不要在脚本中使用sudo。
我倾向于使用/etc/crontab而不是crontab,因为您可以将用于它的用户添加到cron行中。此外,还应该添加一个日志以进行调试。最大的优势是:所有cron作业都在一个文件中,而不是在不同的用户crontab上。
@reboot root /path/to/{script}.sh >>/var/log/{script}.log 2>&1这样你就能发现错误。
您可以在这里删除sudo,并确保包括设置路径或使用绝对路径名称:
/bin/systemctl restart ovenmediaengine.service
export DISPLAY=:0 && /usr/bin/obs --startstreaming &(在这里猜dir表示obs )
我不知道为什么在重新启动服务器时需要重新启动ovenmediaengine服务,它在安装时已经被启用为服务。
journalctl没有给出线索吗?所有的服务活动都列在那里。包括开始、重新启动、停止、错误、警告和通知。
如果需要,可以将服务添加到问题中,或者针对服务的问题询问新的服务。
发布于 2022-07-14 13:39:45
只将下面的部分放在crontab中,
export DISPLAY=:0 && obs --startstreaming &
我让它跑了。我不知道为什么在/etc/crontab中定义作为根用户运行会给我一个Qt错误,就像在最初的文章中显示的那样。如果我将/etc/crontab中的用户设置为本地用户而不是根用户,那么它将是等效的吗?
https://askubuntu.com/questions/1418384
复制相似问题