43 | linux 服务管理service 和 systemctl

这里写目录标题

  • 1 systemctl 命令用法
    • 1.1 列出所用可用单元
    • 1.2 列出所有运行的单元
    • 1.3 检查某个单元是否启用
    • 1.4 列出所有服务
    • 1.5 Linux 中如何检查服务状态
    • 1.6 激活服务并启用或禁用服务
    • 1.7 如何屏蔽或显示服务
    • 1.8 杀死服务
  • 2 编写服务
    • 2.1 添加服务文件
    • 2.2 编写.service 文件
      • 2.2.1 Unit
      • 2.2.2 Service
      • 2.2.3 [Install]
    • 2.3 设置开机自启动
    • 2.4 查询服务状态

linux 服务管理的两种方式为 service 和 systemctl。systemd 是 Linux 系统最新的初始化系统 (init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能并发启动更多进程。systemd 对应的进程管理命令是 systemctl。

1 systemctl 命令用法

1.1 列出所用可用单元

systemctl list-unit-files

1.2 列出所有运行的单元

systemctl list-units

1.3 检查某个单元是否启用

eg:cmak.service

systemctl is-enabled cmak.service

1.4 列出所有服务

systemctl list-unit-files ?Ctype=service

1.5 Linux 中如何检查服务状态

eg:cmak.service

systemctl start cmak.service
systemctl restart cmak.service
systemctl stop cmak.service
systemctl reload cmak.service
systemctl status  cmak.service

1.6 激活服务并启用或禁用服务

eg:即系统启动时自动启动 cmak.service 服务

systemctl is-active cmak.service
systemctl enable cmak.service
systemctl disable cmak.service

1.7 如何屏蔽或显示服务

eg: cmak.service

systemctl mask cmak.service
ln -s '/dev/null' '/etc/systemd/system/cmak.service'
systemctl unmask cmak.service
rm '/etc/systemd/system/cmak.service'

1.8 杀死服务

systemctl kill crond

2 编写服务

2.1 添加服务文件

在 /etc/systemd/system/ 文件目录下添加.service 服务文件

2.2 编写.service 文件

[Unit]
Description=test service
ConditionFileIsExecutable=/etc/init.d/test.sh
After=network.service
[Service]
Type=forking
ExecStart=-/etc/init.d/test.sh start
ExecStop=-/etc/init.d/test.sh stop
[Install]
WantedBy=multi-user.target

从上面可以看出.serive 文件包括三个部分:[Unit]、[Service]、[Install]。

2.2.1 Unit

  • Description:对当前服务的简单描述
  • After:指定.serive 在哪些服务之后进行启动
  • Before:指定.serive 在哪些服务之前进行启动
  • Requires:指定服务依赖于哪些服务(强依赖关系,一旦所依赖服务异常,当前服务也随之停止)
  • Wants:指定服务依赖于哪些服务(弱依赖关系,所依赖服务异常不影响当前服务正常运行)

2.2.2 Service

**Type:定义启动类型。可设置:simple,exec,forking,oneshot,dbus,notify,idle **

  • simple:ExecStart 字段启动的进程为该服务的主进程
  • forking:ExecStart 字段的命令将以 fork () 方式启动,此时父进程将会退出,子进程将成为主进程
  • ExecStart:定义启动进程时执行的命令
  • ExecStop:停止服务时执行的命令
  • EnvironmentFile: 环境配置文件,用来指定当前服务启动的环境变量
  • ExecReload:重启服务时执行的命令
  • ExecStartPre:启动服务之前执行的命令
  • ExecStartPost:启动服务之后执行的命令
  • ExecStopPost:停止服务之后执行的命令
  • RemainAfterExit:设为 yes,表示进程退出以后,服务仍然保持执行
  • RestartSec:重启服务之前需要等待的秒数

KillMode:定义 Systemd 如何停止服务,可以设置的值如下

  • control-group(默认值):当前控制组里面的所有子进程,都会被杀掉;
  • process:只杀主进程
  • mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
  • none:没有进程会被杀掉

Restart:定义了退出后,Systemd 的重启方式可以设置的值如下:

  • no(默认值):退出后不会重启
  • on-success:当进程正常退出时(退出状态码为 0),才会重启
  • on-failure:当进程非正常退出时(退出状态码非 0),包括被信号终止和超时,才会重启
  • on-abnormal:当被信号终止和超时,才会重启
  • on-abort:当收到没有捕捉到的信号终止时,才会重启
  • on-watchdog:看门狗超时退出,才会重启
  • always:总是重启

2.2.3 [Install]

Install 一般填为 WantedBy=multi-user.target,表示多用户环境下服务被启用。

2.3 设置开机自启动

systemctl enable cmak.service

2.4 查询服务状态

systemctl status cmak.service

你可能感兴趣的:(#,Linux,linux,运维,服务器)