Error in spawning a dbus-launch - what is that?

15.1k views Asked by At

I like to run a cron that snapshots a cam like this:

* 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

But when the cron runs it just throws an error I don't understand:

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

In the web I find no clean or good documentation what that is. Can you help me figure it out?

2

There are 2 answers

0
powerhouse On

Had the same issue when trying to use notify-send in a bash script that required root privileges.

Adding

export $(dbus-launch)

to the beginning of the bash script did the trick for me.

2
Baa On

From what I can tell, you may need to either:

  • Set the display variable (Note that it might not be 0, could be 1 or even 2):

     export DISPLAY=:0
    
  • Launch a dbus-session:

     dbus-launch
    
  • Set the dbus variable:

     export $(dbus-launch)
    

In your case with a Cron job you can set environment variables like this:

env VARIABLE=VALUE <command>

So for option 1 your job would look like this:

* 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

For option 2 you can separate the two commands using &&, like this:

* 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

Something similar for option 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