Linux实操篇-服务管理

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

不懂点Linux,都不好意思和别人说自己是开发,所以一些基础的必须掌握,同样的也是面试高频。

以下文章不定时更新…
Linux基础篇
Linux实操篇
Linux定制篇

一、服务管理概念

service/systemctl
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务级别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有点类似设置开机启动

chkconfig实例
在这里插入图片描述
在这里插入图片描述

二、服务管理实战

在 Linux 系统中,服务(也叫守护进程)是指在系统后台运行的进程,通常用于提供某种系统功能或服务,如 Web 服务器、数据库、日志守护进程等。服务管理是操作系统管理这些后台进程的过程,包括启动、停止、重启、状态检查等操作。

在现代 Linux 系统(如 Ubuntu 16.04 及更高版本、CentOS 7 及更高版本)中,systemd 是默认的服务管理工具。systemd 提供了一种统一的方式来管理系统服务和进程。

1. systemd 服务管理

systemd 是一种初始化系统和服务管理器,它控制系统启动过程中的所有服务。与传统的 SysV init 脚本相比,systemd 提供了更高效、更灵活的服务管理机制。

1.1 启动服务

要启动一个服务,使用 systemctl 命令:

sudo systemctl start <服务名称>

例如,启动 Apache HTTP 服务器:

sudo systemctl start apache2   # Debian/Ubuntu
sudo systemctl start httpd     # CentOS/RHEL
1.2 停止服务

停止一个正在运行的服务:

sudo systemctl stop <服务名称>

例如,停止 Apache HTTP 服务器:

sudo systemctl stop apache2   # Debian/Ubuntu
sudo systemctl stop httpd     # CentOS/RHEL
1.3 重启服务

重启服务(例如在更改配置文件后重新加载服务):

sudo systemctl restart <服务名称>

例如,重启 Apache HTTP 服务器:

sudo systemctl restart apache2   # Debian/Ubuntu
sudo systemctl restart httpd     # CentOS/RHEL
1.4 查看服务状态

查看服务的当前状态:

sudo systemctl status <服务名称>

例如,查看 Apache HTTP 服务器的状态:

sudo systemctl status apache2   # Debian/Ubuntu
sudo systemctl status httpd     # CentOS/RHEL

状态输出包括服务是否正在运行、加载情况以及日志信息。

1.5 启用和禁用服务开机启动
  • 启用服务开机启动:将服务设置为在系统启动时自动启动。

    sudo systemctl enable <服务名称>
    

    例如:

    sudo systemctl enable apache2   # Debian/Ubuntu
    sudo systemctl enable httpd     # CentOS/RHEL
    
  • 禁用服务开机启动:取消服务的自动启动。

    sudo systemctl disable <服务名称>
    

    例如:

    sudo systemctl disable apache2   # Debian/Ubuntu
    sudo systemctl disable httpd     # CentOS/RHEL
    
1.6 查看服务列表

列出所有活动的服务:

sudo systemctl list-units --type=service

列出所有服务(包括非活动服务):

sudo systemctl list-units --type=service --all
1.7 查看系统日志

systemd 使用 journalctl 工具来记录日志。查看服务的日志:

sudo journalctl -u <服务名称>

例如,查看 Apache HTTP 服务器的日志:

sudo journalctl -u apache2   # Debian/Ubuntu
sudo journalctl -u httpd     # CentOS/RHEL

查看最新的日志信息:

sudo journalctl -u <服务名称> -n 50  # 查看最近 50 行日志

2. 其他相关命令

2.1 service 命令(旧版 SysV 初始化系统)

虽然大多数现代 Linux 发行版都使用 systemd 作为服务管理工具,但在某些旧版系统或为了兼容性,service 命令仍然有效。它可以用来启动、停止、重启和检查服务状态。

  • 启动服务:

    sudo service <服务名称> start
    
  • 停止服务:

    sudo service <服务名称> stop
    
  • 重启服务:

    sudo service <服务名称> restart
    
  • 查看服务状态:

    sudo service <服务名称> status
    
2.2 chkconfig 命令(在基于 RHEL 的系统上)

在一些较旧的基于 RHEL(如 CentOS 6 及之前版本)系统上,chkconfig 用于管理服务的开机启动。

  • 启用服务:

    sudo chkconfig <服务名称> on
    
  • 禁用服务:

    sudo chkconfig <服务名称> off
    

3. 创建和管理自定义服务

如果你需要为自定义程序创建服务,可以通过创建 systemd 单元文件来管理。以下是创建服务的基本步骤:

3.1 创建服务单元文件

/etc/systemd/system/ 目录下创建一个 .service 文件。例如,创建一个名为 myservice.service 的文件:

sudo nano /etc/systemd/system/myservice.service

在文件中定义服务内容,例如:

[Unit]
Description=My Custom Service
After=network.target

[Service]
ExecStart=/path/to/your/command
Restart=always

[Install]
WantedBy=multi-user.target
  • ExecStart:指定启动命令。
  • Restart:设置服务崩溃后是否自动重启。
  • WantedBy:定义服务在多用户模式下启用。
3.2 重新加载 systemd 配置

在创建或修改服务单元文件后,重新加载 systemd 配置:

sudo systemctl daemon-reload
3.3 启用和启动自定义服务

启用并启动新创建的服务:

sudo systemctl enable myservice.service
sudo systemctl start myservice.service
3.4 查看自定义服务状态
sudo systemctl status myservice.service
3.5 停止和禁用自定义服务

停止并禁用服务:

sudo systemctl stop myservice.service
sudo systemctl disable myservice.service

4. 服务状态和依赖关系

systemd 支持复杂的服务依赖关系。你可以定义服务在其他服务启动后启动,或在服务失败时自动重新启动。

4.1 查看服务依赖关系

使用 systemctl 查看服务之间的依赖关系:

systemctl list-dependencies <服务名称>

例如,查看 Apache HTTP 服务器的依赖关系:

systemctl list-dependencies apache2   # Debian/Ubuntu
systemctl list-dependencies httpd     # CentOS/RHEL
4.2 定义服务依赖关系

在服务的单元文件中,使用 AfterRequires 指定依赖关系。例如,确保某个服务在 network.target 启动后再启动:

[Unit]
Description=My Custom Service
After=network.target

总结

Linux 系统中服务管理是系统管理员的重要任务,systemd 是现代 Linux 系统中管理服务的标准工具,提供了强大的功能来启动、停止、重启、启用、禁用服务以及管理服务的依赖关系。理解并熟练使用 systemctl 命令能帮助你高效地管理服务。

常用命令总结:

  • 启动服务sudo systemctl start <服务名称>
  • 停止服务sudo systemctl stop <服务名称>
  • 重启服务sudo systemctl restart <服务名称>
  • 查看服务状态sudo systemctl status <服务名称>
  • 启用服务开机启动sudo systemctl enable <服务名称>
  • 禁用服务开机启动sudo systemctl disable <服务名称>
  • 查看服务日志sudo journalctl -u <服务名称>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝影铁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值