centos7重启或关机卡死

这个问题其实是systemd219这个版本的问题(查看systemd版本,请使用systemctl --version)。

由于systemd进程的判断比之前更加严格,如果某些进程不响应SIGTERM信号,可能会导致重启是挂死,该问题和业务进程对SIGTERM信号的处理有关。

解决方法:

1、备份/etc/systemd/system.conf

cp -a /etc/systemd/system.conf /etc/systemd/system.conf_bak

当作为系统实现运行时,systemd将会按照system.conf配置文件以及system.conf.d配置目录中的指令工作,当作为用户实例运行时,systemd将会按照user.conf配置文件以及user.conf.d配置目录中的指令工作。这些配置文件包含了控制systemd行为的设置。

2、修改文件

# sed -i 's/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=30s/g' /etc/systemd/system.conf

用systemd管理进程时,系统复位默认等待时间为90s,如果一个进程不能正常结束,则需要倒计时90s,系统才能复位。修改为30s

3、重新加载

# systemctl daemon-reload

systemd

Linux操作系统的开机过程是这样的,即从bios开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的化工作,为用户提供合适的工作环境。

RHEL、CentOS7等Linux发行系统已经替换了熟悉的初始化进程服务System V init,正式采用全新的systemd初始化进程服务。systemd初始化服务采用了并发启动机制,开机速度得到了不小的提升。

1、systemd概述

systemd即为system daemon,是Linux下的一种init软件,在LGPL 2.1及其后续版本许可下开源发布,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依次实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果。

systemd的优点是功能强大、使用方便,缺点是体系庞大、非常复杂。事实上,现在还有很多我反对使用systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反“keep simple, keep stupid”的Unix哲学。

2、系统管理相关命令

(1)systemctl是systemd是主命令,用于管理系统和服务

重启系统

systemctl reboot

关闭系统,切断电源

systemctl poweroff

CPU停止工作

systemctl halt

暂停系统

systemctl suspend

让系统进入冬眠状态

systemctl hibernate

让系统进入交互式休眠状态

systemctl hybrid-sleep

启动进入救援状态

systemctl rescue

立即启动一个服务

systemctl start httpd.service

立即停止一个服务

systemctl stop httpd.service

立即重启一个服务

systemctl restart httpd.service

杀死一个服务的所有子进程

systemctl kill httpd.service

重新加载一个服务的配置文件

systemctl reload httpd.service

重载所有修改过的配置文件

systemctl daemon-reload

显示某个unit的所有底层参数

systemctl show httpd.service

(2)systemd-analyze命令用于查看启动耗时

查看系统启动耗时

systemd-analyze

查看每个服务的启动耗时

systemd-analyze blame

显示瀑布状的系统启动过程流

systemd-analyze critical-chain

显示指定服务的启动流

systemd-analyze critical-chain atd.service

(3)hostnamectl命令用于查看当前主机的信息

显示当前主机的信息

hostnamectl

设置主机名

hostnamectl set-hostname xuad1

(4)localectl命令用于查看本地化设置

查看本地化设置

localectl

设置本地化参数

localectl set-locale LANG=zh_CN.UTF-8

(5)timedatectl命令用于查看当前系统时区设置

查看当前时区设置

timedatectl

显示所有可用的时区

timedatectl list-timezones

(6)loginctl命令用于查看当前登陆的用户

列出当前session

loginctl list-sessions

列出当前登录用户

loginctl list-users

列出显示指定用户的信息

loginctl show-user root

3、unit相关命令

systemd可以管理所有系统资源,不同的资源统称为Unit(单位),unit一共分成12种。

Service unit:系统服务
Target unit:多个Unit构成的一个组
Device Unit:硬件设备
Mount Unit:文件系统的挂载点
Automount Unit:自动挂载点
Path Unit:文件或路径
Scope Unit:不是由Systemd启动的外部进程
Slice Unit:进程组
Snapshot Unit:Systemd快照,可以切回某个快照
Socket Unit:进程间通信的socket
Swap Unit:swap文件
Timer Unit:定时器

(1)列出已启动的unit

systemctl list-units

列出所有unit,包括没有找到配置文件的或启动失败的

systemctl list-units --all

列出所有没有启动的unit

systemctl list-units --all --state=inactive

列出所有正在运行的、类型为service的unit

systemctl list-units --type=service

(2)systemctl status命令用于查看系统状态和单个unit的状态

显示单个unit的状态

systemctl status httpd.service

猜你喜欢

转载自blog.csdn.net/CHS007chs/article/details/85325153