14 Linux系统的服务管理_nginx

14.Linux系统的服务管理

1 systemd简介

  • systemcd是Linux系统的一组基本构建块
  • 它提供了一个系统和服务管理器
  • 它作为PID1运行并启动系统的其余部分进行
  • 控制systemd的主要命令是systemctl

2 systemctl常用命令

systemctl                             #列出所有启动的服务
systemctl status <服务名称> #查看服务状态
systemctl start <服务名称> #启动服务状态
systemctl stop <服务名称> #关闭服务状态
systemctl restart <服务名称> #重启服务状态
systemctl enable <服务名称> #设置开机自启
systemctl enable --now <服务名称> #设置开机自启并启动
systemctl disable <服务名称> #禁止开机自启
systemctl enable <服务名称> #设置开机自启
systemctl is-active <服务名称> #查看是否激活
systemctl is-enabled <服务名称> #查看是否开启自启
systemctl reboot #重启计算机
systemctl poweroff #关闭计算机

2 Unit文件

  • systemd管理服务时会读取对应的配置文件也就是unit文件
  • 读取Unit文件的目录(优先级由高到底)
  • /etc/systemd/system(设置了开机自启的Unit文件)
  • /usr/lib/systemd/system(所有已经安装软件的Unit文件)

2.1 Unit文件语法

语句

描述

Description

描述信息

After

在那个服务之后启动

Before

在那个服务之前启动

type

服务类型,默认为simple

EnvironmentFile

定义变量文件

ExecStart

执行systemctl start 需要启动的进程名称

ExecStop

执行systemctl stop 需要停止的进程名称

ExecReload

执行systemctl reload 需要执行的命令

WantedBy

依赖当前服务的target

2.2 systemd案例:使用systemd管理shell脚本

1 编写脚本

vim test.sh

cat test.sh

#!/bin/bash
while :
do
echo abc
echo 1
done
[root@proxy ~]# chmod +x test.sh

2 编写Unit文件

cp /usr/lib/systemd/system/{crond.service,test.service}
vim /usr/lib/systemd/system/test.service
[Unit]
Description=my test script
After=time-sync.target

[Service]
ExecStart=/root/test.sh
ExecReload=/bin/kill -s QUIT $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

2.3 systemd案例:使用systemd管理Nginx服

1 安装nginx

yum -y install gcc make
./configure
make
make install

2 编写Unit文件

[root@proxy ~]#  vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The Nginx HTTP Server #描述信息
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
#仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT ${MAINPID}
[Install]
WantedBy=multi-user.target

14 Linux系统的服务管理_linux_02


14 Linux系统的服务管理_nginx_03