【发布时间】:2011-08-09 06:15:20
【问题描述】:
我正在使用 org-mode 并希望将我的议程 (example of an agenda) 导出到一个文本文件,以便我可以用 conky 显示它。 org-mode manual 提供了这个命令行示例来执行此操作:
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
我已经这样修改了:
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "e")' \
> ~/org/aux/agenda-export.txt
我将此设置为每 5 分钟运行一次的 cron 作业。除非我真的打开了 emacs,否则它工作得很好。然后我注意到文件agenda-export.txt 是空的。在从 coammand 行与通过 cron 手动运行时,我收到此错误(或类似的错误,具体取决于我打开的文件):
...~/org/file.org locked by jwhendy (pid 10935): (s, q, p, ?)?
我打算编写一个脚本来导出到agenda-export-test.txt,然后可能会检查一个空文件或没有行(wc -l == 0 也许?)。如果为真,请保留现有文件并删除agenda-export-test.txt。如果不是,则将agenda-export-test.txt 移至agenda-export.txt。
但是...当我尝试运行这样的脚本时,我遇到了同样的 emacs 询问,询问是窃取锁、继续还是退出。我可以继续进行,因为我认为 org-agenda 不会对文件做任何事情,因此它不会损害任何东西......但我不知道如何告诉 emacs“强制”或选择“继续” “如果遇到问题。我需要一些非交互式的东西。
所以,总而言之,我的想法是尝试:
- 传递 --force 选项或类似于 emacs 以使其在暂停时继续进行
- 查看导出的tmp文件是否有行并相应处理
- 告诉 emacs 以“只读模式”运行(但我认为它不存在)
主要问题是,对于 cron,我不是在那里告诉进程要做什么,所以它只是制作一个空文件作为导出的结果。如何使用无法响应的 cron 之类的“盲”进程来处理这种锁定的文件业务?
我也试过询问邮件列表,但没有工作结果。 [1] 我想知道这里是否有人有想法。
[1]http://www.mail-archive.com/emacs-orgmode@gnu.org/msg45056.html
【问题讨论】:
-
关于使用
wc -l测试空文件的无用的切线评论。man test(特别是test -s)或者grep,如果你想查找非空行之类的。 -
@tripleee:谢谢。无论如何,我都不是 bash 专家。感谢您的提示!
标签: emacs command-line org-mode