我使用 geany 文本编辑器,它有一个命令行选项可以列出所有打开的文档。从命令行运行时,以下命令可以正常工作:
/usr/bin/geany --list-documents > /home/myname/geanylist.txt
我想在 cron 中定期运行这个,但它不起作用。我尝试过:
- 将上述命令直接放入我的 crontab
- 将上述命令包装在 bash 脚本中,然后在我的 crontab 中调用它
- 在脚本中定义所有正常路径和其他环境变量
- 将 .bashrc 的全部内容复制到脚本中
- 将 stderr 和 stdout 重定向到日志文件(无帮助)
无论我做什么,当 crontab 运行时,~/geanylist.txt 都不会包含 的输出geany --list-documents
,尽管它会包含脚本生成的任何其他输出。我不知所措。我该如何让它工作?除了 cron 之外,还有其他系统实用程序可以让我做到这一点吗?
我能想到的最好的解决方案是创建一个带有循环的脚本,该脚本运行命令然后休眠 24 小时 - 肯定有更好的方法吗?
编辑:
/usr/bin/geany --list-documents
从 CL 运行时,的结果是标准输出上文件(通常是 ascii txt)的完整路径列表,每行一个。- 当将命令或脚本添加到我的 crontab 时,我使用
crontab -e
,并将$EDITOR
设置为nano
。这与我向 crontab 添加许多其他命令的方式相同,所有这些命令都正常工作(这些其他命令都不会geany
以任何方式尝试运行)。
答案1
猜测:从 cron 运行的 geany 无法访问你的 DISPLAY;尝试添加DISPLAY=:0
答案2
解决方案在这里找到:https://sourceforge.net/p/geany/bugs/999/
* * * * * /usr/bin/geany --display=:0.0 --list-documents > /home/myname/geany_files.txt