Linux上systemctl 和 service 两个命令的区别和联系

systemctlservice 两个命令都是 Linux 系统中用于管理服务的工具,但它们分别关联着不同的初始化系统(init system),并且在功能和使用场景上有所差异。

service 命令

  • 关联的初始化系统service 命令通常与 SysV init 系统相关联,这是一个较早的初始化系统,在很多传统或较老版本的 Linux 发行版中使用。
  • 功能:通过调用 /etc/init.d/ 目录下的服务脚本来管理服务,支持的操作包括启动(start)、停止(stop)、重启(restart)等。
  • 局限性:相比 systemctlservice 提供的功能较为基础,对于服务的状态查询等高级功能支持有限,而且不直接支持 systemd 的一些特性,如.target、sockets等。

systemctl 命令

  • 关联的初始化系统systemctl 是 systemd 初始化系统的组成部分,systemd 在现代 Linux 发行版中广泛使用,如 Fedora、Ubuntu(从 15.04 版本起)、CentOS/RHEL 7 及以后版本等。
  • 功能:提供更强大和灵活的服务管理能力,除了基本的启动、停止、重启之外,还可以查看服务状态、设置开机启动、管理系统目标(targets)、处理日志、管理 sockets 和 timers 等。
  • 状态信息systemctl 能够通过 systemd 的状态管理系统提供更详细和准确的服务状态信息,直接与 systemd 的数据库交互,而不是通过执行脚本获取状态。
  • 集成性:systemd 强调服务之间的依赖管理,以及对整个系统状态的统一控制,systemctl 是这一理念的具体体现,它使得服务管理更加自动化和高效。

它们的关系

  • 兼容性:在使用 systemd 的系统中,为了向后兼容,service 命令通常仍然可用,但它实际上可能只是 systemctl 的一个简单封装,调用 systemctl 来执行操作。
  • 推荐使用:虽然 service 命令在某些情况下仍然可用,但鉴于 systemctl 的强大功能和现代 Linux 发行版普遍采用 systemd,推荐使用 systemctl 进行服务管理。

综上所述,systemctlservice 都服务于管理 Linux 系统服务的目的,但 systemctl 更符合现代 Linux 系统的管理需求,特别是在基于 systemd 的系统中。

systemctl 使用
4.1.查看系统中所有的服务状态:

要查看系统中所有的服务状态,可以运行以下命令:

systemctl list-units --type=service

这将列出所有正在运行的服务以及它们的状态,包括已启动(active)、已停止(inactive)、已禁用(disabled)等。

4.2. 启动和停止服务:

要启动一个服务,可以使用以下命令:

sudo systemctl start <service-name>

要停止一个服务,可以使用以下命令:

sudo systemctl stop <service-name>

替换 <service-name> 为你要启动或停止的服务的名称。

4.3. 重启服务:

要重启一个服务,可以使用以下命令:

sudo systemctl restart <service-name>

4.4. 重新加载服务配置:

如果你修改了一个服务的配置文件,你可以使用以下命令来重新加载服务的配置,以使更改生效:

sudo systemctl reload <service-name>

4.5. 查看服务状态:

要查看特定服务的状态,可以运行以下命令:

systemctl status <service-name>

这将显示服务的详细信息,包括它是否正在运行,以及最近的日志消息。

4.6. 启用和禁用服务:

要在系统启动时自动启动一个服务,可以使用以下命令:

sudo systemctl enable <service-name>

要禁用一个服务,以防止它在系统启动时自动启动,可以使用以下命令:

sudo systemctl disable <service-name>

4.7. 列出所有已启用的服务:

要查看系统中所有已启用的服务,可以运行以下命令:

systemctl list-unit-files --type=service

5. systemctl 添加自定义服务

要添加自定义服务到 Systemd,你需要创建一个 Systemd 服务单元文件,然后通过 systemctl 命令来启用和管理该服务。下面是添加自定义服务的一般步骤:

5.1.创建服务单元文件:

通常,Systemd 服务单元文件存储在 /etc/systemd/system/ 目录中。你可以创建一个新的服务单元文件,例如 my_custom_service.service,使用以下命令:

sudo vim /etc/systemd/system/my_custom_service.service

在这个文件中,你需要定义服务的配置。以下是一个简单的示例:

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

[Service]
ExecStart=/path/to/your/custom/script

[Install]
WantedBy=multi-user.target

  • Description:描述服务的信息。
  • After:指定服务应该在哪个系统目标(target)之后启动。
  • ExecStart:指定要执行的自定义脚本或命令。
  • WantedBy:指定服务应该在哪个系统目标中启用。
5.2.保存并退出编辑器。
5.3.重新加载 Systemd 配置:

在创建或修改服务单元文件后,需要重新加载 Systemd 配置以使更改生效。运行以下命令:

sudo systemctl daemon-reload

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
service 和 systemctlLinux 系统中用于管理系统服务的两个重要指令,它们在功能和使用方式上存在一些区别。 1. serviceservice 是一个用于管理系统服务的命令。它是一个脚本,用于启动、停止、重新启动和查询服务的状态。service 命令通常与服务的启动脚本(位于 /etc/init.d 目录下)配合使用。例如,可以使用以下命令启动一个服务: ``` service serviceName start ``` 使用 service 还可以执行其他操作,如停止服务、重启服务、查看服务状态等。 2. systemctl:systemctl 是一个用于管理系统服务的命令。它是 Systemd 系统和服务管理工具的一部分,被广泛用于现代 Linux 发行版。systemctl 提供了更强大和灵活的服务管理功能。与 service 不同,systemctl 可以同时管理 Systemd 类型和 SysV 类型的服务。 使用 systemctl,可以执行以下操作: - 启动一个服务: ``` systemctl start serviceName ``` - 停止一个服务: ``` systemctl stop serviceName ``` - 重新启动一个服务: ``` systemctl restart serviceName ``` - 查看一个服务的状态: ``` systemctl status serviceName ``` - 设置开机自启动: ``` systemctl enable serviceName ``` - 禁止开机自启动: ``` systemctl disable serviceName ``` 总结来说,service 是一个传统的服务管理命令,适用于 SysV 系统和服务。而 systemctl 是现代 Linux 发行版中使用的更为强大和灵活的服务管理命令,适用于 Systemd 系统和服务。在新的 Linux 发行版中,推荐使用 systemctl 来管理系统服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值