Linux--进程与作业管理

进程概念与进程查看

- pstree
我发现help这个命令简直是个好东西,可以更快地显示出常用参数,可以先使用type xxx 来看下xxx命令的类型,然后再决定用help xxx还是xxx --help
pstree是以树的形式打印出当前全部运行的进程

就拿 pstree -a来说,上面显示加上-a可以现场出命令行参数

- ps

这里在man ps中相关信息:
-f 表示以标准风格显示,即是详细地显示
其中PPID表示父进程的进程号,C表示占用CPU百分比
我们可以使用-o选项来指定上表中要查看的对象,同时还可以用--sort命令进行排序

- pgrep

进程的状态


具体基本进程状态含义看:这里
ps 只是显示一瞬间的进程的状态
top
输入命令 top,我们可以看到如下一段显示

这是top在事实地(应该说是刷新地)显示每一个运行进程的情况
我们可以按h键查看帮助
按q可以退出
会话、进程组、线程组

- 会话


使用ps j命令可以显示出会话Id(SID)
-
进程组
一条命令产生的所有进程为进程组,其中第一个进程为领头进程 -
线程组
一个进程中会有的(操作系统学过)
进程组与作业控制

ps j 就不多解释了:
jobs
加上-l可以看到进程号
jobs可以看到当前会话中的后台进程信息
fg [n] , bg [n] 这里的n是job中的下标,使用方式如下:
这里让xeyes进程回到前台运行
我们有一个方便使进程到后台运行的方法:
kill , killall , pkill 都是杀死指定进程
我们知道,killall和pkill 可以通过进程名来终止掉进程,那么当我们自己写一个脚本的时候,我们运行时,运行这个脚本的进程名是什么?
答案是 当我们写了如 #!/bin/bash 后,进程名是我们的脚本名
没有写时,进程名默认是bash
这里 kill 居然可以作为发送信号用的命令!
kill -STOP(-CONT/-KILL)%1(-p 进程号)
如上使用都可以
killall 具体进程名
上面这个具体进程名是我们调用这个命令的名字,比如我们使用时钟小程序oclock 那么就会有个进程名为oclock
后台进程的输入输出


注销后继续运行进程
通常我们有个需求:我想要当我用户下机后,我某个大型程序还能够运行,而不会应该用户注销而停止运行

nohup可以让我们在执行某个程序的时候,前面加上nohup就可以实现上述要求
但是有时候我最开始执行没有加上nohup,但是程序已经开始运行了,咋办?
进程和信号

我们的内核和进程,进程和进程可以通过信号进行交流
我们可以通过kill -l 查看简约的进程信号有哪些

通过man 7 signal 可以查看信号的详细信息

在这个standard signal这里
常用的信号:
向进程发送信号的方法
kill -9 1111 //向PID为1111的进程发送信号Value为9的信号 9信号即为杀死
kill -KILL 1111 //如9)SIGKILL 写后面的KILL也是可以的
kill -CONT 1111 // 这个是继续运行的信号
查看进程打开的文件

查看文件使用的进程

进程的优先级

我们的进程分为实时进程和默认进程
在实际系统中进程优先级按数值大小是0~139
但是我们在使用工具(ps,top等命令)的时候,进程优先级的数值会不一样,具体映射如上图
下面我们通过ps -el为例子进行讲解:
我们通过命令ps -el可以查看全部进程的信息
其中会出现的两个参数,PRI和NI:

PRI表示我们进程的优先级
我们可以通过设置NI来调整优先级
即PRI=PRI默认值(80)+NI (注意是在ps -el中显示的PRI默认值才为80)
更改进程的优先级

需要注意的是nice是只有进程开始执行的时候进行设置
可以通过renice调整正在运行的进程















浙公网安备 33010602011771号