您现在的位置是:首页 >学无止境 >Linux---systemctl网站首页学无止境
Linux---systemctl
1. systemctl命令
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启。
能够被systemctl管理的软件,一般也称之为:服务
语法:systemctl start | stop | status | enable | disable 服务名
start 启动;stop 关闭;status 查看状态;enable 开启开机自启;disable 关闭开机自启
系统内置的服务比较多,比如:
NetworkManager,主网络服务
network,副网络服务
firewalld,防火墙服务
sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制:
yum install -y ntp,安装ntp软件
可以通过ntpd服务名,配合systemctl进行控制
yum install -y httpd,安装apache服务器软件
可以通过httpd服务名,配合systemctl进行控制
2. systemd
Systemd 中 d 是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是守护整个系统。
Systemd 并不是一个命令,而是一组命令,systemctl 是 Systemd 的主命令,用于管理系统。
systemd-analyze命令用于查看启动耗时。
hostnamectl命令用于查看当前主机的信息。
localectl命令用于查看本地化设置。
timedatectl命令用于查看当前时区设置。
loginctl命令用于查看当前登录的用户。
部分软件安装后没有自动集成到systemctl中,需要手动添加。
要将安装好的软件集成到systemctl中,需要遵循以下步骤:
-
创建一个 systemd 服务配置文件:在 /etc/systemd/system/ 目录下创建一个自定义的服务配置文件,例如 my-service.service 。
-
编辑服务配置文件:编辑刚才创建的服务配置文件,配置服务的运行参数。一个简单的服务配置文件示例如下:
vim /etc/systemd/system/my-service.service [Unit] Description=My Service After=network.target [Service] Type=simple WorkingDirectory=/path/to/my/service ExecStart=/path/to/my/service/my-service-command Restart=always [Install] WantedBy=multi-user.target
在上面的示例配置文件中,为服务定义了一个简单的描述,指定了它的启动类型就是simple(比如启动一个脚本、运行一个命令、调用一个二进制文件),指定了它的工作目录,指定了它的启动命令,并指定了它启动失败时应该执行的操作。
-
重新加载systemctl配置文件:执行命令systemctl daemonj-reload重新加载systemctl配置文件,使得新创建的服务配置文件生效。
-
启动服务:执行命令systemctl start my-service启动服务。
-
验证服务:执行命令systemctl status my-service查看服务的状态以及是否已经在系统中注册成功。
-
设置开机自启动:执行命令systemctl enable my-service设置开机自启动。
这些步骤完成之后,服务就已经在systemctl中完成了注册,并且能够在系统启动时自动启动。
其中项的含义:
- Unit
- Description,服务的描述
- Documentation,文档介绍
- After,该服务要在什么服务启动之后启动,比如Mysql需要在network和syslog启动之后再启动
- Install
- WantedBy,值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中
- RequiredBy,它的值是一个或多个Target,当前Unit激活(enable)时,符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中
- Alias,当前Unit可用于启动的别名
- Also,当前Unit激活(enable)时,会被同时激活的其他Unit
- Service
- Type,定义启动时的进程行为。它有以下几种值。
- Type=simple,默认值,执行ExecStart指定的命令,启动主进程
- Type=forking,以 fork 方式从父进程创建子进程,创建后父进程会立即退出
- Type=oneshot,一次性进程,Systemd 会等当前服务退出,再继续往下执行
- Type=dbus,当前服务通过D-Bus启动
- Type=notify,当前服务启动完毕,会通知Systemd,再继续往下执行
- Type=idle,若有其他任务执行完毕,当前服务才会运行
- ExecStart,启动当前服务的命令
- ExecStartPre,启动当前服务之前执行的命令
- ExecStartPost,启动当前服务之后执行的命令
- ExecReload,重启当前服务时执行的命令
- ExecStop,停止当前服务时执行的命令
- ExecStopPost,停止当其服务之后执行的命令
- RestartSec,自动重启当前服务间隔的秒数
- Restart,定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
- TimeoutSec,定义 Systemd 停止当前服务之前等待的秒数
- Environment,指定环境变量