Linux进程管理及相关命令

一些概念

终端

也叫终端设备,早期因为计算机比较昂贵,所以一个主机会有多个终端,这些终端本身不具备计算能力,仅仅承担信息的输入与输出工作,运算和处理均由主机来完成。
现在个人计算机也可以运行终端仿真程序来模拟一个终端来工作。
随着计算机的发展,移动终端也有了广泛应用,不仅有可以进行输入输出的工作,也可以进行一定的运算,实现部分系统的功能。

进程的权限

参看Linux下进程权限分析
一般进程有3个uid,分别为ruid(真实用户ID),euid(有效用户ID),suid(保存用户ID)
setuid(uid)
当你是root时,可以用这个函数把自己变成ID为uid的用户,并且不可以返回再成为root。即你是root时,使用这个函数你的ruid,euid,suid都变了
seteuid(euid)
但是你用这个函数时,你的ruid,suid还是0,改变的只是你的euid。这样你可以返回成为root。

另外有一个设置用户ID(set uid),这个是对应的档案的9个权限中第三个字段。如果一个二进制档案设置设置用户ID,那么如果非该档案所有者具有该档案的x权限,且要执行这个档案,那么执行时生成的进程的euid就是该档案的所有者

权限的继承
当使用fork子进程的时候,子进程全部继承父进程四个uid,和父进程uid相同;当使用exec系列函数时候,会把suid置为euid。

例子说明:
比如登录时,不同的用户获取bash shell时,生成的shell是不同的。会根据用户的身份信息来生成具有不同权限的shell。

系统或网络服务

常驻在内存中的进程。也叫daemon。

工作管理

进行工作管理时,每个工作都是目前bash的子程序。也就是说不同的终端之间是不可以互相管理的。每个bash只能管理自己的工作,而不可以去管理其他的bash的工作。

概念

前台:就是出现提示字符让你操作的环境
后台:背着你执行的环境,这里的工作是不可以通过ctrl+c来打断的,也就是说你不可以互动的与后台中的工作交互。

job control管理

后台中的job的状态:
在后台里面的工作,他的状态一般有Stop,Running。

如何讲一个job放到后台处理
1.
可以在指令的最末尾加上 &来将工作添加到后台去处理。
比如:
这里写图片描述
注意
[1] 8400
这里1是工作的job ID,用来标识一个工作。
8400这是这个工作对应的进程的PID

2.
对于当前正在处理的工作可以使用ctrl+z来把当前的工作放到后台。

jobs命令

用途:
观察目前后台中job的状态
这里写图片描述
注意这里
[1]- 10314
[2]+ 10833

+:表示的是最近放到后台的job ID
-:最近最后第二个被放到后台的job ID

fg指令

用途:
将后台的工作放到前台来

fg %jobID

bg指令

用途:
让工作在背景下的状态变为工作中。因为有的job在后台是Stopped,我们可以用这个指令来让你Run起来。

bg %jobID

脱机管理job

注意在后台的job是在终端模式下的,并不是在系统的后台中。即若我们是远程连接到Linux主机的,当我们脱机之后,在后台的工作都会被中断。所以为了避免这个情况,我们可以使用nohup指令。

nohup [指令与参数] & /* 将指令放到系统后台去 */
nohup [指令与参数]   /* 将指令放在前台中执行 */

进程管理

进程观察指令

ps指令
这里写图片描述

例子:

ps -l /* 只是看自己bash中的任务 */

这里写图片描述
F:process flag,说明这个进程的总结权限。

  • 若为4表示该进程权限为root
  • 若为1表示此子进程仅仅使用了fork而没有执行exec

S:表示这个进程的状态,主要有

  • R:运行
  • S:睡眠,可以被唤醒
  • D:不可以被唤醒的睡眠
  • T:停止
  • Z:僵尸状态

UID/PID/PPID

C:cpu使用率,单位为百分比

PRI/NI:优先级

PRI(new) = PRI(old) + nice
PRI越低说明优先级越高。

ADDR/SZ/WCHAN:

  • ADDR:指出该进程在内存中的哪个部分
  • SZ:代表这个进程用掉了多少内存
  • WCHAN:表示目前进程是否运行中

TTY:登入者的终端机的位置,若是远程则为(pts/n)

TIME:使用掉的CPU时间

CMD:造成这个进程触发的指令是什么

ps aux

这里写图片描述

top指令
动态观察程序的变换

这里写图片描述

例子:
这里写图片描述

第一行(top)显示的信息分别是:

  • 目前时间
  • 开机到目前所经过的时间
  • 已经登录到系统的用户个数
  • 系统在1,5,15分钟的平均负载。

第二行(Tasks)显示的信息分别是:
目前进程的总量,与他们分别都是什么状态

第三行(Cpus)显示的信息是CPU的整体负载

第四行与第五行:表示的是目前的物理与虚拟内存的使用情况。

第六行
这里写图片描述

pstree
形成一个树状的进程关系图。
这里写图片描述

进程的管理

进程之间是可以互相控制的。可以通过kill命令来发送信号。

kill -signal PID
killall -signal 指令名称

进程优先级

nice命令

nice [-n 数字] command

-n :后面接一个数字,数值的范围-20~19
注意一般用户只可以调整自己进程的nice值,范围为0~19,即只会把自己进程的优先级调低。
command:因为执行一个command就当于启动了一个子进程,所以这里nice就是相当于给这个子进程设置nice值。

renice命令

reniec [number] PID

调整PID的nice值为number

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值