上一文章简要介l了(jin)使用systemctl理systemd单元的基知识。但在阅ȝx的q程中,我遇C(jin)一些困惑?/span>
像往怸P每当(zhn)在Linux中看C些新的和奇怪的东西Ӟ(zhn)都?x)调用手册页来查扄案。自从我W一ơ接触systemctl命o(h)以来Q我q行?jin)?x)
手动pȝ控制
我发现UnitCommands下有一个启动命令;在单元文件命令下Q有一个启用命令。突然我慌了(jin)Q感觉这几年学的p都白费了(jin)。事实证明,q两个词有不同的含义?/span>
d自己后,他仔l看看两者的区别Q?/span>
开始:(x)
要启用:(x)
口才斚w的英语单词有600多个。读完之后,我更加惊慌了(jin)。幸q的是,我认识的单词不多Q所以我只选择我们认识的单词?/span>
q可能意味着当enable命o(h)q行Ӟ它需要跟上单元文件。如果仅l出单元名称Qenable命o(h)自动搜索各个单元文件的路径以查找与单元名称匚w的文件。或者,也可以给出单元文件的完整路径Q其中保存了(jin)启用命o(h)以进行一一搜烦(ch)。但是,如果q个路径不遵循通常的\径ƈ且不在正常的单元文g路径中,则会(x)创徏一个特D的链接Q熟(zhn)Windows的朋友可以将其用作快h式。将q个奇怪的单元文gq接到单元配|\径。确保当启动命o(h)需要这个文件时Q例如,可以扑ֈ它?/span>
enable命o(h)q会(x)Ҏ(gu)单元文g[Install]部分的内容,包括自动启动的\径,在特定\径下生成一个符号链接(cM于Windows快捷方式文gQ。如果在自动启动路径下创Z(jin)W号链接Q则pȝ启动后会(x)回到该\径ƈ一一启动W号链接?/span>
好奇?j)?j)使我再次查看?jin)nginx和docker的单元文件内容,重点x?jin)【Install】部分?/span>
分别q行命o(h)Q?/span>
systemctlcatnginx
systemctl猫docker
nginx和docker的[install]部分的内Ҏ(gu)完全一L(fng)Q这里出C(jin)一个新的术语叫做multi-user.targetQ?target实际上是一个单元文Ӟ在后l的文章中会(x)q一步扩展。一般来_(d).targetcM于我们在快餐店点的东ѝ该套装包括汉堡、可乐、土豆惔、沙拉、玩L(fng)。那么nginx和dockerq当于汉堡和可乐。Ubuntu启动后,我默认订购了(jin)一个multi-user.target包。当你还q轻的时候,我会(x)Z服务。一一启动nginx和docker。这样就实现?jin)启动时自动启动服务的操作?/span>
pȝq程是否响应关闭Q系l进E是否响应关闭?如何讄Q?/span>
说了(jin)q么多,q是没有提到enableQ启用)(j)和startQ启动)(j)的区别?/span>
别担?j),下面有专门的部分_(d)(x)不要启用与启动h。看来和我水q一L(fng)有很多?/span>
启用和启动是怺独立的。可以启用或用一个单元;它可以被启用或禁用。前面我们提到enable?x)在不同的特定\径下创徏演示链接。默认情况下Qnginx和docker都会(x)在自启动路径下创征链接,因此它们对应的启用行为是在启动时自动启动。除?jin)自动启动之外,q有用于其他目的的特D\径。例如插入U盘时启动服务的\径。这样enable的行为就是在插入U盘的时候启动某个单元?/span>
启动命o(h)对于服务单元来说Q只是生成该服务的一个守护进E?/span>
因此Q如果你希望Ubuntu能够在自动启动时启动nginxQ你可以q行
sudosystemctl启用nginx
但是如果nginx现在没有q行Q即使你q行上面的命令,nginx也不?x)启动,除非你重新启动计机。如果你惛_启动时自动启动nginxQƈ且需要nginx现在q行Q你可以Q?/span>
sudosystemctl启用nginx--now