Linux-->进程管理

2022/9/17 5:17:27

本文主要是介绍Linux-->进程管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

基本介绍

  1. 在Linux中,每个执行程序都称为一个进程。每一个进程都会分配一个ID号(pid,进程号)

  2. 每个进程都可能以俩种方式存在的。分别是前台后台,所谓前台进程就是用户目前可以在屏幕上操作的。后台进程

    就是实际在操作但是屏幕是看不到的。

  3. 一般系统的服务都是以后台进程的方式存在,且常驻在系统中直到关机结束。

程序一旦运行并加载到内存就会产生进程

显示系统执行的进程

  • 基本介绍

ps命令查看目前系统中,有哪些正在执行,以及他们的执行状况。可以不加任何参数

ps -a		显示当前终端所有进程信息
ps -u 		以用户的格式显示进程信息
ps -x		显示后台进程运行的参数

一般来说用法为

ps -aux | more 来查看进程信息
ps -aux | grep xxx  查看有没有sshd服务

ps内的信息解释

image

信息 描述
USER 进程执行用户
PID 进程号
%CPU 当前进程占用cpu百分比(单位kb)
%MEM 占用物理内存的百分比(单位kb)
VSZ 占用虚拟内存的百分比
TTY 终端名称,缩写
STAT 当前运行状态
START 代表进程开始执行的时间点
TIME 表示这个进程占用cpu时间
command 表示启动进程所使用的命令和参数,过长会被截断

关于STAT:

  1. S表示睡眠
  2. s表示该进程是会话的先导进程
  3. N表示进程有比普通优先级更低的优先级
  4. R表示正在运行
  5. D表示短期等待
  6. Z表示僵死进程(程序已经关闭但是内存未释放,需要定时清除)
  7. T表示被跟踪或者被停止

父子进程

在Linux中进程可以生成多个子进程,这个进程就叫父进程。

ps -ef 以全格式显示当前所有的进程。

-e 显示所有进程

-f 全格式

以全格式方式查看sshd的进程信息

ps -ef | grep sshd

image

查看ps -ef的全格式信息

ps -ef | more

image

ps -ef中信息详解

信息 描述
UID 用户ID
PID 进程ID
FPID 父进程ID
C CPU用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会降低。越小表面进程是I/O密集型运算,执行优先级越高
STIME 进程启动的时间
TTY 完整的终端名
TIME CPU时间
CMD 启动进程所用的命令和参数

终止进程kill和killall

  • 介绍:

如果某个进程执行一半需要停止。使用kill命令完成。

  • 基本语法:

通过进程号杀死进程

kill 选项 进程号

通过进程名杀死进程

killall 进程名

killall支持通配符,在系统因负载过大变得很慢时很有用。

kill常用选项

表示强迫进程立刻停止。

kill -9 进程号

案例:

  1. 踢掉某个非法用户
ps -aux | grep sshd 查看非法用户登录的进程号
kill 对应的进程号
  1. 终止远程登录服务sshd,在适当的时候重启sshd服务。
ps -aux | grep 查看sshd中 /user/sbin/sshd -D的进程号
kill sshd对应的进程号
/bin/systemctl start sshd.service 重启sshd服务

重启后进程号会发送变化

终止sshd服务后无法远程登录!

  1. 终止多个gedit
killall gedit

gedit进程代表的是,打开文本编辑器产生的进程,关闭后就相当于强制退出了文本编辑

killall会杀死父进程+子进程

  1. 杀死终端
ps -aux | grep bash		查看终端进程号
kill -9 终端对应的进程号

终端就是相当于cmd命令框

系统会对杀死终端操作认为是误操作,会无视,需要-9才能强制终止

pstree指令

查看进程树,更直观的查看进程的信息。

  • 基本语法
pstree 选项
  • 常用选项

-p 显示进程的PID

-u 显示进程的所属用户

服务管理

  • 介绍

    服务管理本质就是进程,但是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等)

    故我们又称为守护进程。image

service管理指令

service 服务名 [start|stop|restart|reload|status]

status是查看状态

在CentOS7.0后很多服务不再使用service而是systemctl了

还继续使用service管理的指令可在 /etc/init.d 目录中中查看

  • 查看服务名

    setup
    

    其中[*]代表会随着系统自启

    按q进去确定与取消选项处

服务的运行级别(runlevel)

  • Linux系统有7中运行级别(runlevel)常用的是3和5

    运行级别 说明
    0 系统停机状态,默认运行级别不能设置为0,否则无法正常启动。
    1 单用户工作状态,root权限,用于系统维护,禁止远程登录。
    2 多用户状态(无NFS),不支持网络。
    3 完全多用户状态,支持网络,登录后进入命令行模式。
    4 系统未使用,保留。
    5 X11控制台,登录后进入GUI模式
    6 系统正常关闭并重启,默认不能设置为6,否则无法正常启动。
  • 开机流程

开机--->BIOS-->/boot--->systemd进程1-->运行级别--->运行级别对应的服务

运行级别的指令

在/etc/inittab下可以设置运行级别,或者使用指令设置运行级别。

查看当前运行级别

systemctl get-default

设置运行级别

systemctl set-default 运行级别.target

multi-user.target 是level 3

graphical.target是

chkconfig指令

  • 介绍:
    1. 通过chkconfig 命令可以给服务器的各个运行级别设置 自动启动/关闭。
    2. chkconfig 指令管理的服务在 /etc/init.d 查看
    3. 在Centos7.0之后,多数服务使用systemctl管理了
  • chkconfig基本语法

查看全部服务在每个运行级别下的状态

chkconfig --list

查看具体服务在哪些运行级别是打开的哪些是关闭的

chkconfig 服务名 --list

设置服务在0~5的运行级别的状态是打开还是关闭

chkconfig --level n 服务名 on/off

每一个服务都有0~5六个运行级别,打开了对应的运行级别之后,他就会在对应的运行级别自启动并生效。

chkconfig设置后需要重启才能生效。

服务管理(2)

systemctl管理指令

基本语法(临时生效,重启就恢复)

systemctl [start | stop | restart | status ] 服务名

systemctl指令管理的服务在 /usr/lib/systemd/system中查看

systemctl设置服务的自启动状态

  1. 查看服务的开机启动状态(可以用grep过滤)
systemctl list-unit-files [| grep 服务名]
  1. 设置服务开机启动(永久生效)
systemctl enable 服务名
  1. 关闭服务开机启动(永久生效)
systemctl disable 服务名
  1. 查询某个服务是否自启动
systemctl is-enabled 服务名字

举例:查看当前防火墙状态

  1. 查看防火墙的服务名
ls -l /usr/lib/systemd/system | grep fire
  1. 查询防火墙服务当前状态
systemctl list-unit-files | grep firewalld
  1. 全名是firewalld.service,设置不能写一半fire必须写齐firewalld

  2. 关闭,启动,防火墙后,会立即生效

  3. 这种方式只是零时的生效,重启后还是会复原

  4. 如果希望永久生效要使用 systemctl enable|disable 服务名而不是systemctl start 服务名

防火墙可以简单理解为在监听端口前建立了一个墙。

外来程序要先访问防火墙才能进入端口。

如果防火墙没有打开对应端口就无法访问。

大概如图:

image

打开或关闭指定端口(firewall指令)

在真正的生产环境,防火墙必须是开启,故需要了解如何打开和关闭对应的端口。

打开端口

firewall-cmd --permanent --add-port=端口号/协议

关闭端口

firewall-cmd --permanent --remove-port=端口号/协议

打开或关闭后需要重载才能生效

重载

firewall-cmd --reload

查询端口是否开放

firewall-cmd --query-port=端口/协议

查看端口绑定的协议

netstat -anp | more

端口在 /etc/services中,可以自己设置或者进去查看

动态监控进程(top)

  • 介绍

top和ps命令类似,都是用来显示正在运行的进程。

与ps不同的是top可以在执行一段时间就更新正在运行的进程。

基本语法

top 选项
  • 选项说明
选项 功能
-d 秒数 指定top指令每隔几秒更新,默认3s
-i 让top不显示任何闲置或者僵死的进程
-p 进程号 通过指定监控进程id来仅仅监控某个进程状态

top指令下内容详解

image

选项 解释
PID 进程号
USER 哪个用户在执行
%CPU 进程执行占cpu百分比
%MEM 占用物理内存的百分比(单位kb)
TIME+ 进程在何时启动
COMMAND 启动进程所用的命令和参数
  1. 第一行

    • top - 12:37:57代表当前系统时间

    • 34 min是系统运行时间

    • 2 users代表系统用户数量

    • load average : 0.02,0.06,0.05 负载值,0.02+0.06+0.05三个值加起来 除 3 < 0.7 就没问题,> 0.7 就负载过大

  2. 第二行

    • Tasks:324 total ,1 running,323 sleeping 0 stopped 0 zombie

      • 代表系统的任务数量有324个其中1个在运行,323个在休眠,0个停止了,0个在僵死状态
  3. 第三行

  • %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  • 0.0 us 代表 用户占用cpu为0.0,0.2 sy是系统占用cpu 0.2 ,99.7 id是空闲cpu
  1. 第四行
  • KiB Mem : 2028116 total, 541176 free, 819908 used, 667032 buff/cache
  • Mem是内存占用情况,总体大约2G,大约0.5G在空闲,大约0.8个G在使用,buff用了0.6G
  1. 第五行
  • KiB Swap: 2097148 total, 2097148 free, 0 used. 965996 avail Mem
  • SWAP分区,共2G,空闲2G,使用0G,可获取0.9G

top指令的交互操作

在执行完top 选项指令后可以在键盘上按对应的键对top显示的内容进行交互操作。

操作 功能
P 以CPU使用率排序,默认此项
M 以内存使用率排序
N 以PID排序
q 退出top
按u回车,然后输入用户 监控指定用户
按k再回车,输入要结束的进程号,回车 终止指定进程

监控网络状态(netstat)

  • 查看系统网络状态netstat

语法

netstat 选项

常用选项

netstat -an 按一定顺序排序输出
netstat -p   显示进程名和基础号

常用方法:

netstat -anp | more或grep 指定进程

netstat内容详解

image

选项 解释
Proto 协议
Local Address 本地地址
Foreign Address 外部地址
State 状态,ESTABLISHED代表建立连接,LISTEN代表正在监听,TIME_WAIT代表超时等待
Recv-Q 接受到数据
Send-Q 发生的数据

Local Address和 Foreign Address的关系

image

检测主机连接命令(ping)

主要是检测远程主机是否正常,或俩部主机之间的网卡。

基本语法

ping 对方ip


这篇关于Linux-->进程管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程