systemctl使用
# Linux 服务管理:systemctl
与 service
的比较及自定义服务
systemctl
是一个用于管理和控制系统服务的命令,是 systemd
初始化系统的主要工具。它可以启动、停止、重启、启用或禁用服务,并查询服务的状态。此外,我们将探讨传统的 service
命令与 systemctl
的区别,并介绍如何创建自定义服务和常用的系统自带服务操作。
# systemctl
命令详解
# 基本用法
systemctl [OPTION] [COMMAND] [NAME]
# 主要命令
start
: 启动服务stop
: 停止服务restart
: 重启服务reload
: 重新加载服务配置status
: 显示服务状态enable
: 设置服务为开机自启disable
: 取消服务的开机自启is-active
: 检查服务是否正在运行is-enabled
: 检查服务是否设置为开机自启list-units
: 列出所有服务单元show
: 显示单元的属性mask
: 禁用服务(阻止其启动)unmask
: 解除服务的禁用状态
# 各个选项详解
# 启动和停止服务
systemctl start <service_name>
systemctl stop <service_name>
2
示例: 启动 nginx
服务
systemctl start nginx
# 重启和重新加载服务
systemctl restart <service_name>
systemctl reload <service_name>
2
示例: 重启 nginx
服务
systemctl restart nginx
# 查询服务状态
systemctl status <service_name>
示例: 查询 nginx
服务状态
systemctl status nginx
# 设置服务开机自启
systemctl enable <service_name>
systemctl disable <service_name>
2
示例: 设置 nginx
服务开机自启
systemctl enable nginx
# 检查服务状态
systemctl is-active <service_name>
systemctl is-enabled <service_name>
2
示例: 检查 nginx
服务是否正在运行
systemctl is-active nginx
# 列出所有服务单元
systemctl list-units --type=service
示例: 列出当前正在运行的服务
systemctl list-units --type=service
# 显示服务属性
systemctl show <service_name>
示例: 显示 nginx
服务的详细属性
systemctl show nginx
# 禁用和解除禁用服务
systemctl mask <service_name>
systemctl unmask <service_name>
2
示例: 禁用 nginx
服务
systemctl mask nginx
# 使用案例
# 1. 启动和停止服务
启动数据库服务并检查状态:
systemctl start mysql
systemctl status mysql
2
停止数据库服务:
systemctl stop mysql
# 2. 设置开机自启
设置 ssh
服务开机自启:
systemctl enable ssh
# 3. 重启服务
在配置文件修改后,重启 nginx
服务以应用更改:
systemctl restart nginx
# 4. 列出所有服务
列出所有服务并过滤出正在运行的服务:
systemctl list-units --type=service --state=running
# 5. 监控服务状态
定期监控 httpd
服务状态:
watch systemctl status httpd
# 系统自带服务的常用操作
系统自带服务通常包括 cron
、ssh
、networking
、apache2
、mysql
等。以下是一些常见的操作示例:
# 1. 管理 cron
服务
# 启动和停止 cron
服务
sudo systemctl start cron
sudo systemctl stop cron
2
# 设置 cron
服务开机自启
sudo systemctl enable cron
# 查询 cron
服务状态
sudo systemctl status cron
# 2. 管理 ssh
服务
# 启动和停止 ssh
服务
sudo systemctl start ssh
sudo systemctl stop ssh
2
# 设置 ssh
服务开机自启
sudo systemctl enable ssh
# 查询 ssh
服务状态
sudo systemctl status ssh
# 3. 管理 networking
服务
# 启动和停止网络服务
sudo systemctl start networking
sudo systemctl stop networking
2
# 设置网络服务开机自启
sudo systemctl enable networking
# 查询网络服务状态
sudo systemctl status networking
# 4. 管理 apache2
服务
# 启动和停止 apache2
服务
sudo systemctl start apache2
sudo systemctl stop apache2
2
# 设置 apache2
服务开机自启
sudo systemctl enable apache2
# 查询 apache2
服务状态
sudo systemctl status apache2
# 5. 管理 mysql
服务
# 启动和停止 mysql
服务
sudo systemctl start mysql
sudo systemctl stop mysql
2
# 设置 mysql
服务开机自启
sudo systemctl enable mysql
# 查询 mysql
服务状态
sudo systemctl status mysql
# 6. 管理 firewalld
服务
# 启动和停止 firewalld
服务
sudo systemctl start firewalld
sudo systemctl stop firewalld
2
# 设置 firewalld
服务开机自启
sudo systemctl enable firewalld
# 查询 firewalld
服务状态
sudo systemctl status firewalld
# 7. 管理 docker
服务
# 启动和停止 docker
服务
sudo systemctl start docker
sudo systemctl stop docker
2
# 设置 docker
服务开机自启
sudo systemctl enable docker
# 查询 docker
服务状态
sudo systemctl status docker
# 8. 重新加载服务配置
如果修改了服务的配置文件,需要重新加载配置:
sudo systemctl daemon-reload
# systemctl
和 service
的区别
# 1. 工具背景
systemctl
:- 是
systemd
初始化系统的主要命令行工具,用于管理systemd
及其服务单元。 - 提供更丰富的功能和选项,能够管理各种类型的单元(如服务、套接字、挂载点等)。
- 是
service
:- 是一个传统的命令行工具,用于管理以 SysVinit 或 Upstart 启动的服务。
- 主要用于简化服务的启动、停止和重启操作,适用于较老的 Linux 发行版。
# 2. 命令用法
# systemctl
常用命令
systemctl start <service_name>
systemctl stop <service_name>
systemctl restart <service_name>
systemctl status <service_name>
systemctl enable <service_name>
systemctl disable <service_name>
2
3
4
5
6
# service
常用命令
service <service_name> start
service <service_name> stop
service <service_name> restart
service <service_name> status
chkconfig <service_name> on # 设置开机自启
chkconfig <service_name> off # 取消开机自启
2
3
4
5
6
# 3. 功能特性
systemctl
:- 支持并发启动和管理服务,提供了更好的性能和效率。
- 可以管理更复杂的服务依赖关系,确保按顺序启动和停止服务。
- 提供详细的状态信息和日志功能,帮助调试和监控服务。
- 支持在系统级别和用户级别管理服务。
service
:- 通常只提供基本的服务管理功能,缺乏对服务依赖关系和状态的深入管理。
- 在一些新版本的 Linux 发行版中,可能已被
systemctl
取代。
# 4. 使用案例比较
# 启动服务
使用
systemctl
:sudo systemctl start nginx
1使用
service
:sudo service nginx start
1
# 查询服务状态
使用
systemctl
:sudo systemctl status nginx
1使用
service
:sudo service nginx status
1
# 设置服务开机自启
使用
systemctl
:sudo systemctl enable nginx
1使用
service
:sudo chkconfig nginx on
1
# 自定义服务的步骤
要创建和管理自定义服务,你需要创建一个 .service
文件并将其放在 /etc/systemd/system/
目录中。以下是自定义服务的步骤:
# 步骤 1: 创建服务文件
使用文本编辑器创建一个新的服务文件。例如,创建一个名为 myapp.service
的文件:
sudo nano /etc/systemd/system/myapp.service
# 步骤 2: 编辑服务文件
在文件中添加以下内容:
[Unit]
Description=My Custom Application # 服务描述
After=network.target # 确保网络可用后启动
[Service]
Type=simple # 服务类型为简单
ExecStart=/usr/bin/myapp # 启动命令
Restart=on-failure # 服务失败时自动重启
[Install]
WantedBy=multi-user.target # 定义服务的目标
2
3
4
5
6
7
8
9
10
11
# 步骤 3: 重新加载 systemd
配置
创建或修改服务文件后,重新加载 systemd
配置:
sudo systemctl daemon-reload
# 步骤 4: 启动和启用服务
启动服务并设置为开机自启:
sudo systemctl start myapp
sudo systemctl enable myapp
2
# 步骤 5: 查询服务状态
检查自定义服务的状态:
sudo systemctl status myapp
# 步骤 6: 停止和禁用服务
停止服务并取消开机自启:
sudo systemctl stop myapp
sudo systemctl disable myapp
2
# 总结
systemctl
为 Linux 系统提供了强大的服务管理功能,允许用户轻松地控制和查询服务的状态。与传统的 service
工具相比,systemctl
提供了更丰富的功能和灵活性,尤其适用于现代 Linux 发行版。在创建和管理自定义服务时,推荐使用 systemctl
进行操作,以提高管理效率和可靠性。通过理解这两个工具的区别、常用的系统自带服务操作以及自定义服务的步骤,可以更有效地管理 Linux 系统中的服务,提高系统的可维护性和可靠性。