Linux service、systemd的作用和用法是什么?

25,707次阅读
没有评论

共计 2644 个字符,预计需要花费 7 分钟才能阅读完成。

service 命令

service 命令是 Redhat Linux 兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

服务 (service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql,sshd,防火墙等),因此我们又称为守护进程。

service 运行指定服务(称之为 System V 初始脚本)时,把大部分环境变量去掉了,只保留 LANG 和 TERM 两个环境变量,并且把当前路径置为 /,也就是说是在一个可以预测的非常干净的环境中运行服务脚本。这种脚本保存在 /etc/init.d 目录中,它至少要支持 start 和 stop 命令。

[root]# uname -a  #当前操作系统内核信息
Linux VM-0-11-centos 3.10.0-1160.62.1.el7.x86_64 #1 SMP Tue Apr 5 16:57:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root]# cat /proc/version  #当前操作系统版本信息
Linux version 3.10.0-1160.62.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Tue Apr 5 16:57:59 UTC 2022
[root]# cat /etc/redhat-release  #当前操作系统发行版信息
CentOS Linux release 7.6.1810 (Core) 

1.service 命令格式

service  选项  服务名  控制命令
  • 选项:显示帮助信息;–status-all:显示所服务的状态。
  • 服务名:自动要控制的服务名,即 /etc/init.d 目录下的脚本文件名;
  • 控制命令:系统服务脚本支持的控制命令,如 启动(start)、停止(stop)、重启(restart)、查看状态(status)等。
# 打印指定服务  的命令行使用帮助。$ service 
# 启动指定的系统服务
$ service  start
# 停止指定的系统服务
$ service  stop
# 重新启动指定的系统服务,即先停止(stop),然后再启动(start)。$ service  restart
# 查看系统服务列表,以及每个服务的运行级别。$ chkconfig --list
# 设置指定服务  开机时自动启动。$ chkconfig  on
# 设置指定服务  开机时不自动启动。$ chkconfig  off
# 以全屏幕文本界面设置服务开机时是否自动启动。$ ntsysv

2.service 的不足

历史上,Linux 的启动一直采用 init 进程。但是 init 进程也存在一些问题:

$ sudo /etc/init.d/apache2 start
# 或者
$ service apache2 start
  • 启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
  • 启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

systemd 命令

Systemd 是 Linux 系统工具,用来启动 守护进程,已成为大多数发行版的标准配置。

Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。根据 Linux 惯例,字母 d 是守护进程(daemon)的缩写。Systemd 这个名字的含义,就是它要守护整个系统。Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

使用了 Systemd,就不需要再用 init 了。Systemd 取代了 initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。

# 查看 systemctl 的版本
$ systemctl --version

Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

1.systemctl

systemctl 是 Systemd 的主命令,用于管理系统。

# 重启系统
$ sudo systemctl reboot

# 关闭系统,切断电源
$ sudo systemctl poweroff

# CPU 停止工作
$ sudo systemctl halt

# 暂停系统
$ sudo systemctl suspend

# 让系统进入冬眠状态
$ sudo systemctl hibernate

# 让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep

# 启动进入救援状态(单用户状态)$ sudo systemctl rescue

2.systemd-analyze

systemd-analyze 命令用于查看启动耗时。

# 查看启动耗时
$ systemd-analyze

# 查看每个服务的启动耗时
$ systemd-analyze blame

# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain

# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service

3.hostnamectl

hostnamectl 命令用于查看当前主机的信息。

# 显示当前主机的信息
$ hostnamectl

# 设置主机名。$ sudo hostnamectl set-hostname rhel7
3.4 localectl
localectl 命令用于查看本地化设置。# 查看本地化设置
$ localectl

# 设置本地化参数。$ sudo localectl set-locale LANG=en_GB.utf8
$ sudo localectl set-keymap en_GB

4.timedatectl

timedatectl 命令用于查看当前时区设置。

# 查看当前时区设置
$ timedatectl

# 显示所有可用的时区
$ timedatectl list-timezones

# 设置当前时区
$ sudo timedatectl set-timezone America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS

5.loginctl

loginctl 命令用于查看当前登录的用户。

# 列出当前 session
$ loginctl list-sessions

# 列出当前登录用户
$ loginctl list-users

# 列出显示指定用户的信息
$ loginctl show-user root

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-10发表,共计2644字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)