Linux进程管理

程序:

是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务

进程:

则是运行着的程序,是操作系统执行的基本单位,是程序运行的过程, 动态,有生命周期及运行状态。

程序和进程的区别

程序进程
程序是静态的,它只是一组指令的集合,不具有任何的运行意义而进程是程序运行的动态过程。
进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程。进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程。
进程还具有并发性和交往性而程序却是封闭的 进程和线程的区别。

进程和线程的区别

  1. 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
  2. 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。

linux进程管理工具

Linux进程管理工具
pstree,ps、pgrep, pkill、uptime、top、htop、vmstat、lsof。

pstree

  1. pstree:用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁
 A: 各进程树之间的连接以ASCII码字符来连接
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p:同时列出每个进程的PID
-u: 同时列出每个进程的所属账号名称:

pgrep

  1. pgrep:经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。
    pgrep通过匹配其程序名,找到匹配的进程
-l 同时显示进程名和PID
-o 当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号最大的那个
  1. Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀
    死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而
    killall把这两个过程合二为一,是一个很好用的命令。

kill命令

kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。

常用的7种信号

只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

HUP1终端断线
INT2中断(同 Ctrl + C)
QUIT3退出(同 Ctrl + \)
TERM15终止
KILL15强制终止
CONT18继续(与STOP相反, fg/bg命令)
STOP19暂停(同 Ctrl + Z

lsof命令

 # lsof

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等

1DIR:表示目录
(2CHR:表示字符类型
(3BLK:块设备类型
(4UNIXUNIX 域套接字
(5FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字

DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

语法格式

lsof [options] filename

lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示出以字母 abc 开头进程现在打开的文件
lsof -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gname/gid 显示归属gname或gid的进程情况
lsof -u uname/uid 显示归属uname或uid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况

前台进程和后台进程

前台进程:

在 shell 提示处理打入命令后,创建一个子进程,运行命令, Shell 等待命令退出,然后返回到对用户给出提示符。这条命令与 Shell 异步运行,即在前台运行,用户在它完成之前不能执行别一个命令 。

后台进程:

在 Shell 提示处打入命令,若后随一个 &, Shell 创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。“后台进程必须是非交互式的” 。

进程优先级

nice 值越高: 表示优先级越低
nice 值越低: 表示优先级越高

查看进程的nice级别

NI: 实际nice级别
PR: 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

使用ps查看nice级别

# ps axo pid,command,nice --sort=-nice

1、使用top更改nice级别
r 调整进程的优先级(Nice Level) (-20高) ---0--- (19低)
2、使用shell更改nice级别

# sleep 7000 &
[3] 10089
[root@nebulalinux03 ~]# renice -20 10089

作业控制

一个前台作业可以由多个进程组成,一个后台作业也可以由多个进程组成,Shell可以同时运行一个前台作业和任意多个后台作业,这称为作业控制(Job Control)。

# sleep 3000 & //运行程序(时),让其在后台执行
# sleep 4000 //Ctr+Z,将前台的程序挂起(暂停)到后台
# ps aux |grep sleep //查看被挂起的进程( jobs )
# jobs //查看后台作业
恢复到前台继续运行( fg )
恢复到后台继续运行( bg)
# bg %2 //让作业2在后台运行
# fg %1 //将作业1调回到前台
# kill %1 //kill 1,终止PID为1的进程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值