生成dbus-launch时出现错误 - 这是什么意思?

8

我喜欢运行类似以下的定时任务来对摄像头进行快照:

* 9-17 * * 1-5 vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/foo/tmp/cam --scene-prefix snapshot --scene-format png vlc://quit --run-time=1

但是当cron运行时,它只是抛出一个我不理解的错误:

** Message:
Failed to get session bus:
Error spawning command line 'dbus-launch --autolaunch=55644972b3c91c1d24d83d8252721f00 --binary-syntax --close-stderr':
Child process exited with code 1

在网上我找不到清晰或好的文档来解释这是什么。你能帮我弄清楚吗?

1个回答

2
从我所了解的情况来看,你可能需要做以下两种选择之一:
  • 设置显示变量(注意它可能不是0,可能是1甚至2):

     export DISPLAY=:0
    
  • 启动一个dbus会话:

     dbus-launch
    
  • 设置dbus变量:

     export $(dbus-launch)
    
在您的情况下,使用Cron作业可以这样设置环境变量:
env VARIABLE=VALUE <command>

所以对于选项1,您的工作将如下所示:
* 9-17 * * 1-5 env DISPLAY=:0 vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/foo/tmp/cam --scene-prefix snapshot --scene-format png vlc://quit --run-time=1

对于选项2,您可以使用“&&”来分隔两个命令,就像这样:
* 9-17 * * 1-5 dbus-launch && vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/foo/tmp/cam --scene-prefix snapshot --scene-format png vlc://quit --run-time=1

类似的东西适用于选项3:
* 9-17 * * 1-5 export $(dbus-launch) &&vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path /home/foo/tmp/cam --scene-prefix snapshot --scene-format png vlc://quit --run-time=1

请注意,这会生成两个 dbus 实例,第一个实例将不会被使用。步骤 2 应该已经看起来像步骤 3 - export $(dbus-launch) - Wereii
@Wereii 抱歉,这些不应该被写成步骤,1、2和3是三个独立的解决方案。 - Baa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接