6

我喜欢运行一个像这样对 cam 进行快照的 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

在网上我找不到干净或好的文档是什么。你能帮我弄清楚吗?

4

1 回答 1

0

据我所知,您可能需要:

  1. 设置显示变量(注意它可能不是 0,可能是 1 甚至是 2):

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

    dbus-launch
    
  3. 设置 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

对于选项 3,您可以使用 && 分隔两个命令,如下所示:

* 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

选项2类似的东西:

* 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
于 2020-06-26T19:12:57.270 回答