我正在使用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
可能?)。如果为true,请保留现有文件并删除agenda-export-test.txt
。如果没有,请将agenda-export-test.txt
移至agenda-export.txt
。
但是......当我尝试运行这样的脚本时,我遇到了关于是否窃取锁定,继续或退出的相同emacs查询。我很好继续,因为我不认为组织议程对文件做任何事情因此它不会伤害任何东西......但我不知道如何告诉emacs“强制”或选择“继续“如果遇到问题。我需要一些非互动的东西。
总而言之,我的想法是尝试:
主要的问题是,使用cron,我不是要告诉进程要做什么,所以它只是将一个空文件作为导出的结果。如何通过像cron那样无法响应的“盲目”过程来处理这个锁定的文件业务?
我也尝试过询问邮件列表而没有工作结果。 [1]我想知道这里的某人是否有想法。
[1] http://www.mail-archive.com/emacs-orgmode@gnu.org/msg45056.html
答案 0 :(得分:1)
您是否尝试过不使用emacs复制文件? 放入你的crontab:
cp ~/org/file.org /tmp/export.org && emacs -batch .... /tmp/export.org ..
常规“cp”命令不应复制emacs锁。当然,如果你在cp命令期间保存议程,偶尔你可能会得到一个损坏的文件,但这不应该太糟糕。