BoyChai's Blog - 管理 https://blog.boychai.xyz/index.php/tag/%E7%AE%A1%E7%90%86/ SYSTEMCTL-系统服务管理 https://blog.boychai.xyz/index.php/archives/10/ 2022-05-03T06:45:00+00:00 概述systemctl是一个systemd中其中一个工具,主要用于控制systemd系统和各种服务的管理。在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。相关目录目录用处 /usr/lib/systemd/system/每个服务最主要的启动脚本目录 /run/systemd/system/系统所生成的服务脚本目录,优先级比/usr/lib/systemd/system/高 /etc/systemd/system/自己创建的服务启动脚本目录,优先级/run/systemd/system/高服务类型服务类型全称用处service一般服务类型主要是系统服务,包括服务器本身所需要的本机服务以及网络服务,比较经常被使用到的服务大多是这种类型,所以,这也是最常见的类型。socket内部程序数据交换的插槽服务主要是IPC(Inter-processcommunication)的传输信息插槽(socketfile)功能。这种类型的服务通常在监控信息传递的插槽档,当有通过此插槽传递信息请求链接服务的时候,就依据当时的状态将该用户的请求传送到对应的daemon,若daemon尚未启动,则启动该daemon后再传送用户的请求。使用socket类型的服务一般是比较不会被用到的服务,因此在开机时通常会稍微延迟启动的时间。一般用于本机服务比较多,例如我们的图形界面很多的软件都是通过socket来进行本机程序数据交换的行为。target执行环境类型其实是一群unit的集合,例如multi-user.target其实就是一堆服务的集合。mount文件系统挂载相关的服务例如来自网络的自动挂载、NFS文件系统挂载等与文件系统相关性较高的程序管理。path监测特定文件或目录类型某些服务需要监测某些特定的目录来提供序列服务,例如最常见的打印服务,就是通过监测打印序列目录来启动打印功能。这时就得要.path的服务类型支持。timer循环执行的服务这个东西有点类似anacrontab,不过是由systemd主动提供的,比anacrontab更加有弹性服务管理目录使用启动服务systemclt start 服务名关闭服务systemclt stop 服务名重启服务systemclt restart 服务名重载服务systemclt reload 服务名开机自启动服务systemclt enable 服务名开机自关闭服务systemclt disable 服务名禁用服务systemclt mask 服务名取消禁用systemctl unmask 服务名服务状态systemctl status 服务名服务状态[root@localhost ~]# systemctl status firewlald Unit firewlald.service could not be found. [root@localhost ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-05-22 11:01:43 EDT; 7min ago Docs: man:firewalld(1) Main PID: 932 (firewalld) Tasks: 2 (limit: 11208) Memory: 35.0M CGroup: /system.slice/firewalld.service └─932 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid May 22 11:01:42 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon... May 22 11:01:43 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon. May 22 11:01:43 localhost.localdomain firewalld[932]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It >已防火墙firewalld服务为例,Active:后面的就是服务当前的状态状态作用active(running)正有一个或多个程序正在被系统执行active(exited)仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行active(waiting)正在执行当中,不过有需要等待其他的警告才能继续处理inactive服务没有运行dead程序已清除在第二行的vendor preset:的后面有一个值这个值是指当前服务默认的启动方式方式作用enabled开机时自动运行disabled开机时不运行static被关联的服务,不可以被自己启动,但是可以通过某些服务进行唤醒启动mask不允许被启动,被禁用了自定义服务概述自定义服务可以放到/etc/systemd/system/下,后缀名按照service来创建,列如test.service。文件内容分为三个部分,如下下表类作用[Unit]定义服务的说明,信息[UnitType]上面讲了服务类型,这里就是写服务类型的,不同的unit type就得要使用相对应的设置项目,本文只将service类型[Install]关联targetUnit参数作用Description用来写服务的简易说明的Documentation一般用来写官方文档的地址After声明某些服务,当那些服务开启之后自己才能启动,不是强制性的Before声明某些服务,声明的服务开启时服务需要开启自己,也不是强制性的Requires和After一样但是这个是强制性的Wants和Before一样但是这个是强制性的Conflicts声明服务,进行冲突检查,当声明的服务开启则自己不能启动Service参数作用Type启动的方式EnvironmentFile开启服务时的环境配置变量ExecStart开启服务的启动脚本ExecStop关闭服务的停止脚本ExecReload重置服务的重置脚本Restart当Restart=1的时候,当服务自动关闭时它会自动再开启一个服务除非是用 systemctl强制停止服务RemainAfterExit当RemainAfterExit=1的时候,服务停止时会自动启动TimeoutSec要改变服务状态时无法正常更改则会按照TimeoutSec设置的时间之后进入"强制结束"状态RestartSec和Restart差不多,这个可以设置时间,多久进行开启启动方式方式作用simple默认值,使用ExecStart来启动forking理解为做为某个进程的子进程oneshot与simple差不多,不过这个工作完后就结束了,不会常驻在内存中dbus与 simple 差不多,但是必须要活得一个D-Bus的值才可以运行,用这个方式启动的时候还需要设置一个BusName=才行idle要启动的时候必须要所有的工作都顺利执行完后才会执行,一般都是开机器最后运行的东西install参数作用WantedBy一般都是已*.targetunit为后缀的文件,指定这个服务是在某个targetunit下,一般来说,大多的服务性质 unit 都是附挂在multi-user.target下面。Also指出和服务一起安装或者被协助的单元。Alias进行一个链接的别名的意思,当设置开机自启的时候则服务会进行链接文件的创建,命名由Alias来指定