Linux——服务和进程管理

author:XiaoGua
os:ubuntu6.04
sudo su:/root
一、初始化程序
Linux的内核是由GRUB加载的。而内核会接下来加载Linux的初始化程序(init)。
由初始化程序完成后面的启动程序。
初始化程序是Linux程序启动时的第一个进程,该进程的进程号ID为1,是所有其他的进程的祖先。
在初始化程序的发展过程中,出现了不同的分支,其中主要有System V和BSD这两种类型。
一)、System V利用sbin/init程序进行初始化操作,pstree看出init在所有进程中的地位
二)、目前,绝大部分的Linux发行版都采用了systemd作为初始化程序


Linux——服务和进程管理_第1张图片
by XiaoGua

1、systemd的系统架构


Linux——服务和进程管理_第2张图片
by XiaoGua

在ubuntu6.04中,进程列表
Linux——服务和进程管理_第3张图片
by XiaoGua

2、systemd基本配置文件
systemd的基本配置文件都位于/etc/systemd中,如果配置系统级的服务,修改system.conf
如果配置用户级别的服务,修改user.conf
Linux——服务和进程管理_第4张图片
by XiaoGua

3、systemd单元
systemd可以管理所有的系统资源。不同的资源称为单元。
systemd通过单元来组织和管理任务,每个单元都有相应的配置文件和类型。
1)、systemd的单元并不是独立的,它们之间的可以存在着相互依赖。systemd的依赖就是.wants为扩展名的目录来表示。
2)、.wants为扩展名的目录位于两个地方。分别为/etc/systemd/system和/lib/systemd/system,这两个目录的功能有区别

3)、/lib/systemd/system目录中的.wants是由系统维护的,用户不可以修改
/etc/systemd/system是由用户维护的,用户可以将自己的依赖配置放在这个目录下

Linux——服务和进程管理_第5张图片
by XiaoGua

Linux——服务和进程管理_第6张图片
by XiaoGua

4、列出单元
systemctl可以认为是systemd的大管家
列出当前运行的系统
systemctl list-units


by XiaoGua

输入:q离开

-a :列出当前系统中全部的单元
systemctl -a list_units


Linux——服务和进程管理_第7张图片
by XiaoGua

--state:指定列出的单元的LOAD,SUB以及ACTIVE状态,多状态间逗号相隔。
by XiaoGua

--type:指定类型
Linux——服务和进程管理_第8张图片
by XiaoGua
XiaoGua
5、查看单元状态
systemctl status
Linux——服务和进程管理_第9张图片
by XiaoGua

查看某个服务的状态
systemctl status firewalld.service


by XiaoGua

已知服务的进程号id
systemctl status
Linux——服务和进程管理_第10张图片
by XiaoGua

判断服务是否运行
is-active
by XiaoGua

是否启动失败
is-failed


by XiaoGua

是否开机启用
is-enabled


iby XiaoGua

判断某个单元是否启用,通常是指对应得.wants目录是否建立符号链接

6、单元依赖
在systemd中,各个单元之间可能会存在着依赖关系。
如果A单元依赖着单元B,那么在启动A单元的同时,需要启动B。
当某个单元启动失败,就是依赖单元出现问题。
systemctl list-dependencies sshd


Linux——服务和进程管理_第11张图片
by XiaoGua

绿色表示正在运行,白色表示不在运行
list-dependencies不会展开所有的分支,用户查看更加详细的要加--all


Linux——服务和进程管理_第12张图片
by XiaoGua

7、单元配置文件
systemd中,每个单元都有一个配置文件,告诉systemd怎么开启这个服务。默认情况下,systemd会从/etc/systemd/system,和/lib/systemd/system目录中读取单元配置文件

/etc/的优先级高于/lib
用户自定义的单元配置文件需要在/etc/systemd/system这个目录中建立符号链接,不能直接添加到/lib/systemd/system
实际中,/etc/systemd/system目录中的绝大部分是指向/lib/systemd/system中对应的文件符号链接,而真实的单元配置文件位于/lib/systemd/system

1)、查看系统的单元文件
systemctl list-unit-files


Linux——服务和进程管理_第13张图片
by XiaoGua

2)、systemd单元配置文件的状态

enabled:已经建立启动符号链接。已启用
disabled:没有建立符号链接,已禁用
static:该配置文件没有install部分,无法自己执行,只能作为其他配置文件的依赖。
masked:该配置文件被禁止建立启动符号链接。完全被禁用
generated:该单元由其他的API动态创建
bad:无效的文件
indirect:该单元文件本身没有被启用。但是他的install部分配置了also选项

--type:通过单元类型进行筛选


Linux——服务和进程管理_第14张图片
by XiaoGua

以m开头,.service结尾的文件
systemctl list-unit-files m*.service


Linux——服务和进程管理_第15张图片
by XiaoGua

systemctl cat sshd.service
Linux——服务和进程管理_第16张图片
by XiaoGua

8、systemd单元管理
systemd 【管理命令】 服务名

start:启动服务
stop:停止服务
restart:重启服务
reload:重新加载服务
status:查看服务状态
enable : 配置开机自启动
disable:禁止开机自启动
daemon-reload:重新加载配置文件,单元被修改后,重新加载
show:显示服务属性
set-property:设置服务属性

开启后的状态


Linux——服务和进程管理_第17张图片
by XiaoGua

关闭后的状态


Linux——服务和进程管理_第18张图片
by XiaoGua

cat命令查看其他单元文件的配置信息
Linux——服务和进程管理_第19张图片
by XiaoGua

值为:18446744073709551615表示没有任何限制


by XiaoGua

9、常用systemd的命令
1)、hostnamectl命令:
查看或修改命令、
Linux——服务和进程管理_第20张图片
by XiaoGua

修改当前主机名
hostnamectl set-hostname ubuntu-server
Linux——服务和进程管理_第21张图片
by XiaoGua

2)、localectl命令
查看或者修改当前系统的区域和键盘布局


by XiaoGua

LANG为当前系统所采用的默认的区域,当前系统的语言是en_US,编码是UTF-8
修改为zh_CN.UTF-8
Linux——服务和进程管理_第22张图片
by XiaoGua

3)、timedatectl命令
查看或者修改当前系统的时区设置
Linux——服务和进程管理_第23张图片
by XiaoGua

修改为Asia/Chongqing(CST,+0800)
Linux——服务和进程管理_第24张图片
by XiaoGua

3)、systemd-analyze命令
分析系统启动时的性能
systemd-analyze time 输出系统启动时间
by XiaoGua

systemd-analyze blame 按照花费时间从长到短的顺序列出当前系统的正在运行的单元


Linux——服务和进程管理_第25张图片
by XiaoGua

systemd-analyze plot > system.png 输出一个可缩放的SVG矢量图。
4)、loginctl命令
查看当前登录的用户
loginctl
loginctl list-users


Linux——服务和进程管理_第26张图片
by XiaoGua

进一步了解某个用户的详细信息,show-user
loginctl show-user xiaogua


Linux——服务和进程管理_第27张图片
by XiaoGua

loginctl命令列出的仅仅是当前已登录的用户,而非系统的用户
三)、目标
systemd的基本功能是单元。启动计算机的时候,就是需要启动大量的单元。
目标就是一个单元组。目标中包含大量的功能相关的单元。启动目标时,systemd就会启动目标中的所有的单元。
目标与运行级别相似。但是目标更高级。多个目标是可以同时启动的
目标也是一种类型的systemd单元

runlevel0.target : 关闭系统 运行级别是0
runlevel1.target:单用户模式。运行级别是1
runleve2.target:用户自定义运行级别,通常识别为级别3
runlevel3.target:多用户,无图形界面。用户可以通过终端或者网络登录
runlevel4.target:多用户,无图像界面。用户可以通过终端或者网络登录
runlevelr5.target:多用户,图形界面。继承级别3的服务,并启动图形界面服务
runlevlel6.target:重新启动

systemctl list-units --type=target 目标也是一类特殊的单元


Linux——服务和进程管理_第28张图片
by XiaoGua

查看某个目标包含的目标
systemctl list-dependencies multi-user.target


Linux——服务和进程管理_第29张图片
by XiaoGua

systemctl cat multi-user.target


Linux——服务和进程管理_第30张图片
by XiaoGua

查看系统中已经启动的目标
systemctl list-units --state=active --type=target


Linux——服务和进程管理_第31张图片
by XiaoGua

切换目标
systemctl isolate rescue.target
默认目标


by XiaoGua

ls -l /lib/systemd/system/default.target 查看符号链接


by XiaoGua

修改默认的目标
systemctl systemctl set-default multi-user.target

你可能感兴趣的:(Linux——服务和进程管理)