您现在的位置是:首页 >学无止境 >Linux---systemctl网站首页学无止境

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中,需要遵循以下步骤:

  1. 创建一个 systemd 服务配置文件:在 /etc/systemd/system/ 目录下创建一个自定义的服务配置文件,例如 my-service.service 。

  2. 编辑服务配置文件:编辑刚才创建的服务配置文件,配置服务的运行参数。一个简单的服务配置文件示例如下:

    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(比如启动一个脚本、运行一个命令、调用一个二进制文件),指定了它的工作目录,指定了它的启动命令,并指定了它启动失败时应该执行的操作。

  3. 重新加载systemctl配置文件:执行命令systemctl daemonj-reload重新加载systemctl配置文件,使得新创建的服务配置文件生效。

  4. 启动服务:执行命令systemctl start my-service启动服务。

  5. 验证服务:执行命令systemctl status my-service查看服务的状态以及是否已经在系统中注册成功。

  6. 设置开机自启动:执行命令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,指定环境变量

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。