cron 任务不支持 gio 操作

cron 任务不支持 gio 操作

我有一个通过 (Ubuntu 20.04) 添加的任务(脚本)crontab -e。该任务使用 gio 将 /tmp 中的文件(在脚本中之前创建了一行)复制到 Google Drive。在 shell 中运行 gio 命令可以正常工作,但在任务中失败。失败是

gio: file:///tmp/wiki.tar.bz2: Operation not supported

为什么它在 shell 下工作,但在任务下却不行?任务在我的用户下运行(因为我可以在脚本中使用whoamiid,并且创建的文件归我所有)

脚本是

#! /bin/bash

cd ~/
tar jcvf /tmp/wiki.tar.bz2 Wiki
gio copy /tmp/wiki.tar.bz2 google-drive://[email protected]/

答案1

成立这里:Cron 运行在受限环境中,因此 gio 需要的一些变量不存在,具体来说

XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

答案2

我没有代表可以发表评论,以防万一有人遇到此问题并且无法让 @IttayD 建议的解决方案发挥作用。我通过将这些添加到脚本中使用“export”成功了。

crontab -e

0 0 * * * /bin/bash /path/myscript.sh

我的脚本

#!/bin/bash

export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/USER_ID/bus

<your gio script here...>

相关内容