gpt4 book ai didi

bash - 使用 emacsclient 运行 cron 作业,但如果当前没有打开服务器,则使用 emacs --batch 模式运行

转载 作者:行者123 更新时间:2023-11-29 09:38:35 26 4
gpt4 key购买 nike

由于 emacs 互锁文件,我想通过 cron 运行 org-mobile 命令,但使用 emacsclient:

emacsclient -nw --eval "(org-mobile-pull)" --eval "(org-mobile-push)"

但是如果没有运行的 emacs 服务器,我希望命令使用 emacs 批处理模式运行:

emacs --batch --eval "(org-mobile-pull)" --eval "(org-mobile-push)"

如果有人有任何想法,我不确定如何实现这一点。

最佳答案

我很好奇您最终想要完成什么?为什么不总是启动一个新的 Emacs 进程?额外的开销将是几分之一秒

在我 2 岁的 MBP 上:

% time emacs --batch --eval nil emacs --batch --eval nil 0.03s user 0.01s system 87% cpu 0.054 total

沿着您当前的路径,您可以从 emacsclient 检查退出代码决定是否应该批量运行

if emacsclient --eval nil >/dev/null 2>&1; then echo "run client"; else echo "run emacs"; fi

编辑:我看到您想编写脚本来回答锁窃取问题。查看出我对此的回答 question使用 ask-user-about-lock 来解决这个问题。

编辑:所以想法是重新定义 ask-user-about-lock 以返回 t。查看文档:

ask-user-about-lock is an autoloaded Lisp function in `userlock.el'.

(ask-user-about-lock FILE OPPONENT)

Ask user what to do when he wants to edit FILE but it is locked by OPPONENT. This function has a choice of three things to do: do (signal 'file-locked (list FILE OPPONENT)) to refrain from editing the file return t (grab the lock on the file) return nil (edit the file even though it is locked). You can redefine this function to choose among those three alternatives in any way you like.

[back]

脚本示例(记得chmod)

#!/usr/bin/env emacs --script

(defun ask-user-about-lock (file opponent)
t)

(org-mobile-pull)
(org-mobile-push)

关于bash - 使用 emacsclient 运行 cron 作业,但如果当前没有打开服务器,则使用 emacs --batch 模式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489846/

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