系统进程是否响应关闭(系统进程是否响应关闭?如何设置)
上一篇文章简要介绍了使用systemctl管理systemd单元的基础知识。但在阅读相关文档的过程中,我遇到了一些困惑。
像往常一样,每当您在Linux中看到一些新的和奇怪的东西时,您都会调用手册页来查找答案。自从我第一次接触systemctl命令以来,我运行了:
手动系统控制
我发现UnitCommands下有一个启动命令;在单元文件命令下,有一个启用命令。突然我慌了,感觉这几年学的英语都白费了。事实证明,这两个词有不同的含义。
吻完自己后,他仔细看看两者的区别:
开始:
要启用:
口才方面的英语单词有600多个。读完之后,我更加惊慌了。幸运的是,我认识的单词不多,所以我只选择我们认识的单词。
这可能意味着当enable命令运行时,它需要跟上单元文件。如果仅给出单元名称,enable命令将自动搜索各个单元文件的路径以查找与单元名称匹配的文件。或者,也可以给出单元文件的完整路径,其中保存了启用命令以进行一一搜索。但是,如果这个路径不遵循通常的路径并且不在正常的单元文件路径中,则会创建一个特殊的链接,熟悉Windows的朋友可以将其用作快捷方式。将这个奇怪的单元文件连接到单元配置路径。确保当启动命令需要这个文件时,例如,可以找到它。
enable命令还会根据单元文件[Install]部分的内容,包括自动启动的路径,在特定路径下生成一个符号链接(类似于Windows快捷方式文件)。如果在自动启动路径下创建了符号链接,则系统启动后会回到该路径并一一启动符号链接。
好奇心促使我再次查看了nginx和docker的单元文件内容,重点关注了【Install】部分。
分别运行命令:
systemctlcatnginx
systemctl猫docker
nginx和docker的[install]部分的内容是完全一样的:这里出现了一个新的术语叫做multi-user.target,.target实际上是一个单元文件,在后续的文章中会进一步扩展。一般来说,.target类似于我们在快餐店点的东西。该套装包括汉堡、可乐、土豆泥、沙拉、玩具等。那么nginx和docker就相当于汉堡和可乐。Ubuntu启动后,我默认订购了一个multi-user.target包。当你还年轻的时候,我会为你服务。一一启动nginx和docker。这样就实现了启动时自动启动服务的操作。
系统进程是否响应关闭(系统进程是否响应关闭?如何设置)
说了这么多,还是没有提到enable(启用)和start(启动)的区别。
别担心,下面有专门的部分说:不要将启用与启动混淆。看来和我水平一样的人还有很多。
启用和启动是相互独立的。可以启用或禁用一个单元;它可以被启用或禁用。前面我们提到enable会在不同的特定路径下创建演示链接。默认情况下,nginx和docker都会在自启动路径下创建表征链接,因此它们对应的启用行为是在启动时自动启动。除了自动启动之外,还有用于其他目的的特殊路径。例如插入U盘时启动服务的路径。这样enable的行为就是在插入U盘的时候启动某个单元。
启动命令对于服务单元来说,只是生成该服务的一个守护进程。
因此,如果你希望Ubuntu能够在自动启动时启动nginx,你可以运行
sudosystemctl启用nginx
但是如果nginx现在没有运行,即使你运行上面的命令,nginx也不会启动,除非你重新启动计算机。如果你想在启动时自动启动nginx,并且需要nginx现在运行,你可以:
sudosystemctl启用nginx--now