我正在尝试从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不能?
答案 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)如果您使用足够的权限创建此目录,则可以解决问题。
我进一步假设它已存在于您成功运行它的目录中。