1. 进程管理相关
1.1 进程管理的常用操作
- 判断服务器健康状态
- 查看系统中所有进程
- “kill”进程
1.2 ps命令查看系统目前的进程状态
-
语法:
ps [-option]
-
参数:
-a
:显示所有进程(表示全部用户的所有进程)
-u
:显示用户名
-x
:显示tty进程
-e
:显示所有进程(表示当前用户的所有进程)
-f
:显示父进程
常用:ps -aux
和ps -ef
-
查看结果说明:
USER
:该进程由那个用户产生PID
:进程ID,唯一%CPU
:占用CPU资源的百分比%MEM
:占用物理内存的百分比VSZ
:该进程占用虚拟机内存的大小,单位kbRSS
:该进程占用实际物理内存的大小,单位kbTTY
:该进程是在那个中断中运行的,其中TTY1-TTY6代表本地控制台终端,TTY2-6是本地字符界面终端,TTY1是图形终端,PTS/0-255代表虚拟终端,如果是“?”,则表示该进程是由内核直接产生,而不是任何终端产生的。STAT
:进程状态,常见的有:
R
:运行,CPU和内存不断变化
S
:睡眠,CPU和内存不变,但有可能转入运行态
T
:停止,进程处于暂停状态,如果不人为干预,一直处于该状态
s
:包含子进程,比如一个httpd进程fork出很多个httpd子进程,进程状态后面有一个s表名该进程有子进程
+
:位于后台
START
:进程的启动时间
TIME
:该进程占用CPU的运算时间,注意不是系统时间
COMMAND
:产生此进程的命令名
实例:
1.3 top命令查看系统进程动态
-
语法:
top [-options]
-
选项:
-d
:表示刷新时间,比如top -d 3
表示每隔3秒刷新一次屏幕上的进程信息。 -
在使用top命令进入查看状态后,常用的有以下操作:
P
:按P(大写P)键表示按照CPU使用率由高到底显示进程信息?
或h
:显示交互模式的帮助,如下图:
M
:按下M键(大写M)表示按照内存使用率从高到底显示进程N
:按下N键(大写N)表示按照PID从大到小显示进程q
:按下q键退出top交互式状态,即退出top
-
top命令输出结果说明,如下图,每个元素表示的意思分别如下:
-
第一行是任务队列消息,各列表示的意思如下:
17:24:55
:系统当前时间,该数字表示系统当前时间为17点24分55秒;
up 17:55
:表示系统已经运行了17个小时55分钟;
1 user
:表示当前系统登录的用户数,这里表示有一个用户登录了系统;
load average
:系统在之前1分钟,5分钟以及15分钟的平均负载,一般认为小于1时负载较小。如果大于1,系统已经超出负荷,如图中所示,系统在这三个时间点的负载分别为0.04、0.08、0.02。 -
第二行是进程信息,格列表示的意思如下:
344 total
:系统中的进程总数,当前系统中总共有344个进程
2 runing
:正在运行的进程数,当前系统中正在运行的进程数为2个
342 sleeping
:睡眠的进程,当前系统中处于sleeping状态的有342个进程
0 stopped
:正在停止的进程,当前系统中有0个进程正在停止
0 zombie
:僵尸进程,如果不是0,需要手工检查僵尸进程,无法杀死的进程被称为僵尸进程,当前系统中有0个僵尸进程 -
第三行是CPu当前状态/信息,格列含义如下:
0.8 us
:用户模式占用的CPU百分比,当前系统中占用CPU的百分比为0.8%
0.6 sy
:系统模式占用的CPU百分比,当前系统中占用CPU的百分比为0.6%
0.0 ni
:改变过优先级的用户进程占用的CPU百分比,当前系统中没有占用CPU的改变优先级的进程
98.0 id
:空闲CPU的CPU百分比,当前系统中cpu空闲占比98.0%
0.0 wa
:等待输入/输出的进程的占用CPU百分比,当前系统中等待输入/输出进程占CPU百分比为0.0%
0.1 hi
:硬件中断请求服务占用的CPU百分比,当前系统中硬件中断请求服务占cpu百分比为0.1%
0.5 si
:软中断请求服务占用的CPU百分比,当前系统中软中断请求服务占用cpu百分比为0.5%
0.0 st
:st(steal time),虚拟时间百分比,Steal time是虚拟机监控程序为另一个虚拟处理器提供服务时,虚拟CPU等待真实CPU的时间百分比。当前系统是0.0% -
第四行表示内存信息,各列含义如下:
3917.5 total
:物理内存的总量,单位Mb,当前系统总共有3917.5Mb
1808.2 free
:空闲的物理内存的容量,单位MB,当前系统剩余空闲内存1802.2Mb
1319.8 used
:已经使用的物理内存数量,单位Mb,当前系统已使用1319.8Mb内存
789.5 buff/cache
:作为缓冲的内存容量,当前系统有789.5MB内存被用作缓冲 -
第五行是交换分区(swap)信息,各列含义如下:
4048.0 total
:交换分区的总大小,单位Mb,
4048.0 free
:空闲交换分区的大小,单位Mb
0.0 used
:已经使用的交互式分区的大小,单位Mb
2343.4 avail Mem
:作为缓存的交换分区的大小,单位Mb
-
1.4 pstree命令查看进程树
- 语法:
ps tree [-option]
- 参数:
-p
:显示进程id - 优点:可以清晰的看到父进程和子进程之间的关系,在服务管理中用的比较多。
1.5 kill命令相关
-
语法:
kill [-option] PID(或者%任务号)
-
参数:
-l
:查看所有进程信号,实例如下:
-
常用信号说明:
- SIGHUP
代号:1
含义:让进程立即关闭,然后重新读取配置文件后重启 - SIGINT
代号:2
含义:程序终止信号,用户终止前台进程,相当于输出ctrl+c快捷键 - SIGKILL
代号:9
含义:用来立即结束程序的执行,本信号不能被阻塞、忽略。一般用于强制终止进程 - SIGTERM
代号:15
含义:正在结束进程的信号,kill命令的默认信号,有时如果进程已经发生问题,这个信号无法正常终止进程,这时就需要使用信号9来完成 - SIGCONT
代号:18
含义:信号可以让暂停的进程恢复执行,本信号不能被阻断 - SIGSTOP
代号:19
含义:该信号可以暂停前台进程,相当于输入ctrl+z快捷键,本信号不能被阻断
- SIGHUP
1.6 killall命令
用法和kill一样,不过可以根据名字杀死进程
1.7 pkill命令
- 格式:
pkill [-option] name
- 常用参数:
-f
:后面加上进程名,可以根据名字杀死进程
-t
:表示终端,后面加上终端名就可以直接让该终端的用户处于登出状态
2. 作业调度相关
2.1 作业简介
作业的本质仍是进程,不过是以shell作为单位进行调度的,一个shell的作业不会被另一个shell看到,但是可以看到该作业对应的进程。
2.2 前台与后台进程
- 前台进程:运行在用户眼前的进程就是前台进程,当用户眼前运行一个前台进程时,如果用户想要运行其他进程,就需要关掉该进程或者将该进程转到后台执行
- 后台进程:后台进程不会影响用户当前shell执行其他进程
附: 可以通过在命令后面加&
符号将该命令转到后台运行,例如top &
命令就是将top命令转到后台运行,不会影响用户执行其他进程。
2.3 作业调度相关命令
2.3.1 jobs命令
- 语法:
jobs
- 功能:查看后台的任务,在Linux中,可以使用ctrl+z快捷键将正在进行的任务最小化(或者说切换到后台),而jobs则可以查看相关的任务
2.3.2 fg命令
- 语法:
fg %任务号
- 功能:将最小化的任务切换到前台来,与jobs通常一起使用,使用jobs查出任务编号,然后用fg进行切换
2.3.3 bg命令
- 语法:
bg %id
- 功能:让进程转至后台运行,即让后台的进程继续运行,相当于发出了18信号、
2.4 调整进程的优先级
调整进程的优先级有两种方法,一种是在运行命令时设置,一种是在运行中设置,两种方法分别如下:
- 在运行命令时使用nice命令设置优先级:
- 格式:
nice 优先级 命令名
- 示例:
nice -10 cat ./test.txt
可将命令cat的优先级调整到10
- 格式:
- 在进程运行中可以使用renice命令设置进程的优先级,具体如下:
- 格式:
renice -n nice_value PID
- 示例:
renice -n 10 1000
表示将进程ID为1000的进程NI值设置为10
- 格式:
用top命令查看进程信息时,有一列名为PR,该列就是进程的优先级,其中PR的值减去renice或者nice设置的NI的值一定为20,而这两个命令也就是通过设置NI的值来间接的设置进程的优先级,PR的值为越小(最小为0)时,进程的优先级越高,即NI的值越小,进程的优先级越高。
附: lscpu
命令可以查看电脑的cpu信息。
3. 内存相关的命令
1. free
- 语法:
free [-option]
- 参数:
-k:缺省参数,表示存储单位为kb
-m:表示存储单位为mb
-t:显示总计 - 功能:查看内存的使用情况
4. 硬盘容量相关命令
1. df
- 语法:
df [-option]
- 功能:查看整个磁盘使用情况
- 参数:
-k:缺省参数,表示存储单位为kb
-m:表示存储单位为mb
-h:人类可阅读的方式,即将存储数值的单位显示出来
(上述参数同时出现时,结果以k为准,后两个同时出现时,结果以出现的顺序为准)
2. du
- 语法:
du [-option] 目录名或文件名
- 功能:查看某个目录、文件所占磁盘的情况
- 参数:
-k:缺省参数,表示存储单位为kb
-m:表示存储单位为mb
-h:人类可阅读的方式,即将存储数值的单位显示出来
5. 帮助命令
1. man
语法:```man 命令名```
功能:查看内部命令信息
2. help
语法:```命令名 --help```
功能:查看外部命令信息
3. info
语法:```info 命令名```
5. Linux命令行中各种颜色代表的含义:
- 蓝色 ---- 目录
- 灰色 ---- 普通文本文件
- 红色 ---- 压缩文件/损坏的软链接
- 黄色 ---- 和设备相关的文件
- 绿色 ---- 可执行文件
- 浅蓝色 – 软链接文件
6. Linux服务相关
6.1 Linux服务简介
服务就是进程、进程不一定是服务,服务是具备一定功能的进程,那么就可以运用管理进程的方式管理服务,Linux中的第一个进程是整个系统的父进程,第一个进程非常重要,因为第一个进程要负责后面所有进程的启动,后面其他进程能不能正常启动决定系统能否正常启动。
并且在RHEL6及以前的版本中,采用的是init(Sys V(Sys 5))进程,但是init进程启动后续服务的方式是串行启动,这种方法效率较低;在RHEL7及以后的版本中,采用的是systemd进程,其启动后续进程采用的是并行启动的方式,效率更高。而在Centos6中,Upstart和Sys V init是共存的(Upstart是对Sys V)的改进,其将服务分组,组内顺序启动、组间并行启动。
6.2 Linux启动顺序
先通过MBR或者UEFI加载GRUB,然后启动内核,内核启动服务,然后开始对外服务,上面提到的init、systemd主要是解决服务引导管理的问题。凡是由systemd管理的进程都是服务。
6.3 systemd管理服务
使用systemd管理服务主要是通过systemctl
命令实现的,不过需要注意的是systemctl命令管理的是unit,而服务只是unit中的一部分。需要注意的是,新服务一般都支持使用systemd进行管理,但旧服务可能还是需要通过service等命令进行管理。
6.3.1 systemd查看可管理的内容
- 命令格式:
systemctl list-
+ 两下tab键
含义:列出所有systemd管理的内容,如下所示:
这里只讲解service和target两种管理内容。
6.3.2 查看服务状态
- 命令格式:
systemctl status 服务名
- 实例:
systemctl satus NetWorkManage.service
,结果如下:
6.3.3 停止服务
- 命令格式:
systemctl stop 服务名
- 实例:
6.3.4 让指定服务重新加载配置文件
- 命令格式:
systemctl reload 服务名
- 实例:
6.3.5 重启服务
- 命令格式:
systemctl restart 服务名
- 实例:
6.3.6 启动服务
- 命令格式:
systemctl start 服务名
- 实例:
6.3.7 关闭开启自启
- 命令格式:
systemctl disable 服务名
- 实例:
6.3.8 开启开机自启服务
- 命令格式:
systemctl enable 服务名
- 实例:
6.3.9 查看服务的开启状态
- 命令格式:
systemctl is-active 服务名
- 实例:
- 命令格式:
systemctl is-enabled 服务名
- 实例:
6.3.10 查看和设置时区
- 命令格式:
timdatectl [operate 参数]
- 实例:
6.4 systemd管理target
6.4.1 target简介
- 简介:target就是一个盒子,其里面就是放的service,可以将服务进行分组,然后放到target中,方便对服务进行管理;与target相似的还有runlevel,在rhel6及以前的版本中,都是通过runlevel来管理启动服务的,更老的是通过init管理的。而更新的是通过target来管理的
- 作用:target只是由一些服务组成的启动目标,systemd可以设置启动目标,如果systemd指定了一个target作为启动目录,那么下次系统启动的时候就会启动target中的所有服务。
6.4.2 查看target
- 命令格式:
systemctl list-units | grep target
- 含义:查看系统中所有的target
6.4.3 常用target
- multi-user.target
- 含义:字符界面的linux系统
- 命令:
systemctl isolate multi-user.target
,将图形界面临时切换到字符界面
- graphical.target
- 含义:图形界面的Linux系统
- 命令:
systemctl isolate graphical.target
,将字符界面临时切换到图形界面
附: 当使用上述命令从图形界面切换到字符界面后,按ctrl+alt+F7
需要等待一段时间才可以切换到图形界面
6.4.4 查看下次开机启动的target
- 命令格式:
systemctl get-default
- 实例:
6.4.5 将target设置为下次开机启动
- 命令格式:
systemctl set-default target_name
- 实例,将启动方式设置为图形界面启动: