我正在尝试在 crontab 中通过 vlc 自动启动和停止 rtps 流:
sudo crontab -e
15 9 * * * vlc -vvv rtsp://user:[email protected]:xxx/stream1
和
nano /etc/crontab
14 9 * * * camera vlc -vvv rtsp://admin:[email protected]:554/stream1
如果我将命令粘贴到终端中,流就会毫无问题地打开,但是当我通过这种方式将其设为 cronjob 并安排在 2 分钟后进行测试时,什么也没有发生。
我做错了什么吗?有人可以帮助我吗?
答案1
这是因为 crontab 作业与您的桌面没有任何关联。crontab 的目的是运行无头作业 —— 没有任何交互式输出或图形显示,只将消息记录到文件中。crontab 与您的图形显示没有任何关联。但是,您可以尝试通过设置环境变量来提供有关显示的信息DISPLAY
。
类似这样的方法可能会有效:
* * * * * DISPLAY=:0.0 vlc -vvv rtsp://your.url 2>&1 > /tmp/vlc.log
请注意,您仍然无法在当前终端中看到 vlc 输出——crontab 运行计划时不需要任何了解您当前的终端或终端仿真器是什么。因此,如果您需要详细内容或日志记录,则应将输出保存到文件中。
附言:Erik 是对的,如果您的命令是由 root 启动的,您还需要处理 XAUTHORITY。但是,如果您从自己的 crontab 启动 vlc,则无需执行此操作。