Linux 进程管理 [screen/ps/kill]

如果Linux系统很忙碌,当整个系统资源快要用完的时候,怎么找到大量占用系统资源的进程,删除该进程,让系统恢复正常

如果由于进程写的不好,导致内存中产生有问题的进程,怎么找到它,然后删除呢?

同时在系统中运行5--6项作业,但其中有一项作业才是最重要的,如何让那一项重要的作业优先执行呢?

我们在操作的时候经常会碰到这样的问题 在同一个登录界面不退出怎么复制文件到另一个文件、不退出当前进程怎么去查看另一个文件,在说进程管理之前说一下 


作业管理(job control):

每个作业都是当前bash的一个子程序,彼此间是有关联的,所以我们无法用管理作业的方式由tty1的环境去管理tty2的bash。在进行bash作业管理时,必须要注意到的限制:

1)程序必须是shell的子程序; 2)程序不能等待terminal/shell 的输入

在bash环境下,“前台”和“后台”我们可以这样理解,前台(foreground)即为 你可以操控的作业 ,后台(background)指在内存中自动运行的进程,无法直接接触,要控制就需要用到作业/系统调用

如何将作业放到后台呢?可以使用“&”

e.g.   我们要将/etc/备份为/tmp/etc.tar.gz 同时,又想进行其他的操作,可以这样做:

tar -xpcf /tmp/etc.tar.gz /etc/ &  

1. screen 屏幕切换

使用ssh远程连接 linux服务器工作的时候,比如需要编译某些程序而这时网络不稳定断线, 工作就白干了, 又的重新连接重复刚才的工作,这时候screen就可以派上用场了。
养成好习惯多用 screen!
 1).安装screen  
---------------------------------
yum install screen
 --------------------------------
 2).运行 screen
--------------------------------
screen
 --------------------------------
 3).用法
Ctrl+a 然后按c 建立一个新的screen 会话
Ctrl+a 然后按n 跳转到下一个screen 会话
Ctrl+a 然后按p 返回到上一个screen 会话
Ctrl+a 然后按d 将当前的screen 会话放在背景执行      // 返回到最开始的工作环境
Ctrl+a 然后按(大写)S 分离一个screen 会话出来,分离后用Ctrl+a 然后按tab键 在分离出来的各screen间跳转。
screen -ls 列出当前所有的screen会话
screen -r 进程号 之前Ctrl+a 然后按d 放在背景执行的会话 呼叫回来。

ssh中如果发生了突然断线 那么你重新登陆后 screen -ls 会发现 有screen的状态是处于(Attached)状态 此刻我们使用 screen -d 将他强行放到背景,然后再用screen -r 进程号将他呼叫回来。
如果 screen -ls 看到有死亡的会话 可以用screen -wipe 进程号 将他杀掉。
 e.g.
#screen -list可以看到正在运行的screen实例
There is a screen on:
80338.ttyp3.chh (Detached)
1 Socket in /tmp/screens/S-chh.
返回screen -r 80338
彻底退出:#exit

2. ctrl+[z]将“当前”作业放到后台“暂停”

3. fg将后台作业拿到前台处理

4. bg将前台作业拿到后台运行

5. &  直接将命令放到后台“执行”

6. jobs观察作业状态

观察进程运行情况:

ps

查看进程:
  ps: process 查看 庞大而古老的一个指令 

参数:

进程相关和进程无关

 后台进程和终端无关 如:打开电脑输出的提示信息  
  跟终端相关的进程:用户的默认SHELL 发起 附属于领头SHELL 进程

-e/A:显示所有进程 能显示有关和无关的进程

a: 跟终端无关的所有进程 a 和 x 是关于BSD的
 x: 跟终端有关
-u: 显示进程是由哪个用户发起
-F: 显示额外信息
j: jobs work
h:进程间的关系 采取缩进的方式
-o:自己定义显示那些字段 用逗号隔开

常见的查看进程组合
e.g.

ps aux                                 // 这命令比较常用
ps axjf                                 // 这两命令比较常用
ps -ef
ps ejh   
ps -eo pid,%cpu,comm    
//分段查看

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23430.html