Emacs守护进程正在减慢关闭速度

Emacs守护进程正在减慢关闭速度,emacs,nixos,Emacs,Nixos,最近,我设置了services.emacs.enable=true。我注意到,在关机期间,会出现一个恼人的超时。我看到的是: [ OK ] Stopped X11 Server. [ OK ] Stopped Session 2 of user <myUsername>. Stopping Login Service. Stopping User Manager for UID 1001. [ OK ] Stopped Login Se

最近,我设置了
services.emacs.enable=true配置.nix上的code>。我注意到,在关机期间,会出现一个恼人的超时。我看到的是:

[  OK  ] Stopped X11 Server.
[  OK  ] Stopped Session 2 of user <myUsername>.
         Stopping Login Service.
         Stopping User Manager for UID 1001.
[  OK  ] Stopped Login Service.
[ ***  ] A stop job is running for User Manager for UID 1001 (1min 32s / 2min 3s)
[OK]已停止X11服务器。
[确定]已停止用户的会话2。
正在停止登录服务。
正在停止UID 1001的用户管理器。
[确定]已停止登录服务。
[***]UID 1001的用户管理器正在运行停止作业(1分钟32s/2分钟3s)
我的理解是,创建第二个systemd实例来管理这些服务。查看
top
我可以看到它同时控制
pulseaudio
.emacs-26.3-wra
过程。Emacs服务的nix表达式确实有一个
execStop
属性,但我怀疑Emacs本身有一些
recentf
干扰或其他一些函数提示并防止即时死亡

在启用Emacs服务之前,我从未遇到过这个问题,只要停用它,问题就会消失。我想用暴力迫使我解决问题的一种方法是在选项中的某个地方放置一个
killall-9.emacs-26.3-wra
,但我不确定在哪里(已经在
services.xserver.displayManager.sddm.stopScript上尝试过),但没有用

因此,我的问题是,除了forking
nixpkgs
来更改停止功能,或者在Emacs上执行相同的操作之外,是否有办法确保Emacs进程的即时终止?我已经查看并将
confirm kill Emacs
设置为nil。这是我当前的
配置。nix

。无论如何,我都不是超级用户。因此,非常感谢您的帮助:-)

因此,对于任何偶然发现这个问题的人,我发现了描述相同情况的方法。事实证明这确实是SpaceMac的一个问题,特别是
kill emacs钩子和一些清理代码。在尝试了许多不同的方法之后,唯一对我有效的方法是线程中的方法,将
persp模式
添加到
dotspacemacs排除包

systemd(或任何其他服务管理器)实际上是一个因素吗?如果您尝试手动停止Emacs服务器(使用服务管理器正在使用的相同方法——您需要了解这是什么),它工作吗?您正在使用的配置是否正常?如果是这样,那可能就是要尝试的命令。或者可能使用该命令停止服务(这是我从中找到该配置文件链接的问答)。@phils你能将最后一条评论转化为答案,以便我可以将其标记为正确吗?:-)它修复了这个问题,特别是,
systemctl--user stop emacs
确实强制停止了emacs进程,但在重新启动后它又恢复了活力。我用这个问题更改了kill命令,现在shutdown按预期工作我可能说得太快了,它只在第一次起作用:-(.我一直在尝试,并注意到手动使用systemctl命令时出现了相同的延迟。我现在知道的是,只有在没有打开客户端的情况下,它才会延迟。如果我尝试在没有运行客户端的情况下停止服务,它会延迟,然后如果我打开客户端,我会立即收到提示,提示
Buffer recentf modified,kill?(y或n)
。我不知道为什么会这样,但我将尝试使用此解决方案(在关机前打开客户端),以防万一。