我有一个通过 (Ubuntu 20.04) 添加的任务(脚本)crontab -e
。该任务使用 gio 将 /tmp 中的文件(在脚本中之前创建了一行)复制到 Google Drive。在 shell 中运行 gio 命令可以正常工作,但在任务中失败。失败是
gio: file:///tmp/wiki.tar.bz2: Operation not supported
为什么它在 shell 下工作,但在任务下却不行?任务在我的用户下运行(因为我可以在脚本中使用whoami
和id
,并且创建的文件归我所有)
脚本是
#! /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...>