生成 dbus-launch 时出错 - 那是什么?

问题描述 投票:0回答:2

我喜欢运行一个 cron 来为摄像头拍摄快照,如下所示:

* 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

在网络上我找不到干净或好的文档那是什么。你能帮我解决一下吗?

linux ubuntu terminal cron v4l2
2个回答
3
投票

据我所知,您可能需要:

  • 设置显示变量(注意,它可能不是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

0
投票

尝试在需要 root 权限的 bash 脚本中使用通知发送时遇到同样的问题。

添加

export $(dbus-launch)

bash 脚本的开头对我来说很有效。

© www.soinside.com 2019 - 2024. All rights reserved.