cronjob中的同步进化通过caldav / arddav同步ubuntu手机

我想将我的联系人和日历从我的Ubuntu手机同步到自托管的owncloud服务器。 由于还没有开箱即用的支持,我尝试了这个解释。 但是,这只能在ubuntu手机的终端内使用。 如果我试试

syncevolution --sync slow owncloud calendar 

从adb或cronjob,我得到

 creating source registry: Cannot autolaunch D-Bus without X11 $DISPLAY 

谁能帮帮我吗?

我已经明白“syncevolution –sync slow owncloud calendar”应该只用于第一次同步。

之后你应该使用:

 syncevolution owncloud calendar 

做一个cron工作,我遇到了同样的问题。 一个对我有用的解决方案是:

方法1:

 export DISPLAY=:0.0 && export DBUS_SESSION_BUS_ADDRESS=Yourdbussessioadress && /usr/bin/syncevolution owncloud calendar 

获得Yourdbussessioadress:

 echo $DBUS_SESSION_BUS_ADDRESS 

方法2:我将这些命令放在syncevolution.sh脚本中:

 #!/bin/sh # Synchronisation des calendriers syncevolution export DISPLAY=:0.0 export DBUS_SESSION_BUS_ADDRESS=Yourdbussessioadress syncevolution owncloud calendar exit 0 

我已将此脚本放在/ home / phablet / bin中,使其可执行并在crontab -e中执行此操作

 @daily sh /home/phablet/bin/synccalendar.sh 

我仍然坚持一件事。 在重新启动ubuntu时,$ DBUS_SESSION_BUS_ADDRESS值正在更改。 我在互联网上有另一个脚本(使用命令sed)将$ DBUS_SESSION_BUS_ADDRESS的好值放在syncevolution.sh脚本中。 我把这个脚本放在/etc/rc.local中来完成重启ubuntu的工作。 但它对我不起作用(就像$ DBUS_SESSION_BUS_ADDRESS刚刚重启后为空)

如果有人可以帮助更多。

更新22/04/15:

用这些命令替换“export DBUS_SESSION_BUS_ADDRESS = Yourdbussessioadress”:

 export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35) 

它对我来说就像一个魅力(使用方法2使用sh脚本进行测试,其中“phablet”是ubuntu touch的默认用户)。 感谢KDE论坛,我找到了这些命令行。

(下一步 :

  1. 使用ssh找到一种使用rsync在个人服务器上备份照片的方法,为什么不在备份SMS&MMS,一些配置文件,……之后

  2. 在ubuntu touch上安装sftp服务器)