首页 > 解决方案 > systemctl 调用 emacs 服务器

问题描述

在阅读Emacs Server - GNU Emacs Manual时,
它说明了调用 emacs 服务器的 3 种方法,

  1. 在运行框架内输入 Mx server-start
  2. emacs --守护进程

第三个

如果您的操作系统使用 systemd 来管理启动,您可以在使用提供的 systemd 单元文件登录时以守护程序模式自动启动 Emacs。要激活它:
systemctl --user enable emacs

(如果您的 Emacs 安装在非标准位置,您可能需要将 emacs.service 文件复制到标准目录,例如 ~/.config/systemd/user/。)

emacs 是标准目录

$ which emacs
/usr/bin/emacs

$ systemctl --user enable emacs
Created symlink /home/me.config/systemd/user/default.target.wants/emacs.service → /usr/lib/systemd/user/emacs.service.

检查以上操作后没有服务器运行

 ps -ef |grep emacs | sed "s/$USER/me/g"
me   32251  3018  0 19:21 pts/2    00:00:00 grep --color=auto emacs

运行ystemctl --user enable emacs多次,但发现没有服务器在运行。

启动一个 emacs 实例

$ ps -ef |grep emacs | sed "s/$USER/me/g"
me   32336  3018 47 19:22 pts/2    00:00:03 emacs
me   32379  3018  0 19:22 pts/2    00:00:00 grep --color=auto emacs

仍然没有找到正在运行的服务器。

我使用 systemctl 有什么问题?

标签: emacs

解决方案


systemctl enable不启动任何东西,它只是为将来配置东西,如systemctl 手册页中所述:

启用单元不应与启动(激活)单元混淆,正如start命令所做的那样。启用和启动单元是正交的:单元可以在没有启动的情况下启用,也可以在没有启用的情况下启动。启用只是将设备挂接到建议的各种位置(例如,以便设备在启动时或插入特定类型的硬件时自动启动)。启动实际上会产生守护进程(在服务单元的情况下),或绑定套接字(在套接字单元的情况下),等等。

现在实际启动守护进程,而不是在下次登录时:

将此命令与--now开关结合使用,或稍后使用适当的参数调用start 。


推荐阅读