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 <service>
启动指定的系统服务<service>
$ service <service> start
停止指定的系统服务<service>
$ service <service> stop
重新启动指定的系统服务<service>,即先停止(stop),然后再启动(start)。
$ service <service> restart
查看系统服务列表,以及每个服务的运行级别。
$ chkconfig –list
设置指定服务<service>开机时自动启动。
$ chkconfig <service> on
设置指定服务<service>开机时不自动启动。
$ chkconfig <service> 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