来自无头服务器上的www-data cron的ssconvert失败并出现各种错误

时间:2014-12-19 04:22:36

标签: linux bash ubuntu cron crontab

我正在尝试从crontab运行Gnumeric实用程序ssconvert,作为处理电子表格文件的作业的一部分。它从我的桌面完美运行。它甚至可以在我的无头服务器上运行,但是当我尝试在无头服务器上从cron运行它时,它会返回错误:

  

(ssconvert:27858):GLib-GObject-WARNING **:无效(NULL)指针实例
  (ssconvert:27858):GLib-GObject-CRITICAL **:g_signal_connect_data:断言'G_TYPE_CHECK_INSTANCE(实例)'失败
  (ssconvert:27858):Gtk-CRITICAL **:无法创建用户数据目录'/var/www/.local/share'来存储最近使用的文件列表:权限被拒绝** Gtk:错误:/ build / buildd / gtk + 3.0-3.10.8 /./ gtk / gtkrecentmanager.c:617:gtk_recent_manager_set_filename:断言失败:(priv-> filename!= NULL)Aborted(core dumped)找不到有效数据。

我假设这个错误是cron的一些权限问题的结果。 cron作业在Ubuntu上以www-data角色运行。但是,如果我尝试用以下方法模拟这个:

sudo -u www-data bash -c "myscript.sh"

运行正常。并且myscript.sh进行简单的调用,如:

ssconvert oldfile.xls newfile.csv

我的www-data crontab很简单,看起来像:

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
* * * * * bash -c "myscript.sh"

我做错了什么?为什么我可以使用www-data用户来运行脚本但cron不能?

1 个答案:

答案 0 :(得分:4)

  

Unable to create user data directory '/var/www/.local/share' for storing the recently used files list: Permission denied

这看起来像错误消息的相关部分。我假设(1)如果您在ssconvert手动运行/var/www,则可以重现错误; (2)如果您使用足够的权限创建此目录,则可以解决问题。

我进一步假设它已存在于您成功运行它的目录中。