gpt4 book ai didi

emacs - 从命令行运行emacs并处理锁定的文件

转载 作者:行者123 更新时间:2023-12-02 04:07:15 25 4
gpt4 key购买 nike

我使用的是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

我将此设置为cron作业,每5分钟运行一次。除非我实际上没有打开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查询,询问是要窃取锁,继续还是退出。我可以继续进行,因为我认为org-agenda不会对文件做任何事情,因此不会对任何事情造成损害...但是我不知道如何告诉emacs“强制”或选择“进行”如果遇到问题。我需要一些非交互式的东西。

因此,总而言之,我的想法是尝试:
  • 传递--force选项或类似于emacs使其在暂停
  • 处继续进行
  • 查看导出的tmp文件是否有任何行,并进行相应处理
  • 告诉emacs以“只读模式”运行(但我认为它不存在)

  • 主要问题是使用cron时,我无法告诉流程该怎么做,因此它只是将一个空文件作为导出结果。我该如何使用无法响应的cron这样的“盲”流程来处理锁定的文件业务?

    我也尝试过询问邮件列表,但没有任何结果。 [1]我想知道这里是否有人有想法。

    [1] http://www.mail-archive.com/emacs-orgmode@gnu.org/msg45056.html

    最佳答案

    您是否尝试过不使用emacs复制文件?
    放在您的crontab中:

    cp ~/org/file.org /tmp/export.org && emacs -batch .... /tmp/export.org ..

    常规的“cp”命令不应复制emacs锁。当然,如果仅在cp命令期间保存议程,有时可能会得到损坏的文件,但这应该不会太糟。

    关于emacs - 从命令行运行emacs并处理锁定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989132/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com