14 Linux系统的服务管理
原创
©著作权归作者所有:来自51CTO博客作者行走的皮卡丘的原创作品,请联系作者获取转载授权,否则将追究法律责任
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