Linux系统状态检测及进程控制--1(http://crushlinux.blog.51cto.com/2663646/836481)
4.僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放)
5.停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D不可中断uninterruptiblesleep(usuallyIO)
R运行runnable(onrunqueue)
S中断sleeping
T停止tracedorstopped
Z僵死adefunct(”zombie”)process
名称:ps
使用权限:所有使用者
使用方式:ps[options][--help]
说明:显示瞬间行程(process)的动态
参数:
ps的参数非常多,在此仅列出几个常用的参数并大略介绍含义
-A列出所有的行程
-w显示加宽可以显示较多的资讯
-au显示较详细的资讯
-aux显示所有包含其他使用者的行程
au(x)输出格式:
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
USER:行程拥有者
PID:pid
%CPU:占用的CPU使用率
%MEM:占用的记忆体使用率
VSZ:占用的虚拟记忆体大小
RSS:占用的记忆体大小
TTY:终端的次要装置号码(minordevicenumberoftty)
STAT:该行程的状态:
D:不可中断的静止
R:正在执行中
S:静止状态
T:暂停执行
Z:不存在但暂时无法消除
W:没有足够的记忆体分页可分配
<:高优先序的行程
N:低优先序的行程
L:有记忆体分页分配并锁在记忆体内(即时系统或捱AI/O)
START:行程开始时间
TIME:执行的时间
COMMAND:所执行的指令
范例:
ps
PIDTTYTIMECMD
2791ttyp000:00:00tcsh
3092ttyp000:00:00ps
%ps-A
PIDTTYTIMECMD
1?00:00:03init
2?00:00:00kflushd
3?00:00:00kpiod
4?00:00:00kswapd
5?00:00:00mdrecoveryd
.......%ps-aux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root10.00.71096472?SSep100:03init[3]
root20.00.000?SWSep100:00[kflushd]
root30.00.000?SWSep100:00[kpiod]
root40.00.000?SWSep100:00[kswapd]
具体命令解释如下:
psa显示现行终端机下的所有程序,包括其他用户的程序
"A"参数相同。5)6)
ps指令终端
机下的程序之外。pss采用程序信号的格式显示程序状况。
>指定终端机编号,并列出属于该终端机的程序的
最常用的方法是
,然后再对特定
的进程进行操作。
kill命令详解

1.作用
kill命令用来中止一个进程。
2.格式
kill[-ssignal|-p][-a]pid...
kill-l[signal]
3.参数
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。
4.说明
进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是
内核
如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。
5.应用实例
(1)强行中止(经常使用杀掉)一个进程标识号为324的进程:
#kill-9324
(2)解除Linux系统的死锁
在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即
可。当kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,
如果Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的
PID,然后使用kill命令停止这个程序:
#kill-SIGKILLXXX
其中,XXX是包含有Mozolla浏览器的程序的进程标识号。
(3)使用命令回收内存
我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用(Zombie)的进程,此时可以使用下面命令:
#kill-9XXX
其中,XXX是无用的进程标识号。
然后使用下面命令:
#free
此时会发现可用内存容量增加了。
(4)killall命令
Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:
#killall-HUPinetd
*杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。
首先使用ps-ef命令确定要杀死进程的PID,然后输入以下命令:
#kill-pid
注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。
*确定要杀死进程的PID或PPID
#ps-ef|grephttpd
*以优雅的方式结束进程
#kill-lPID
-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。*TERM信号给父进程发送一个TERM信号,试图杀死它和它的子进程。
#kill-TERMPPID
*killall命令
killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。
#killallhttpd
*停止和重启进程
有时候只想简单的停止和重启进程。如下:
#kill-HUPPID
该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。
*绝杀kill-9PID
同意的kill-sSIGKILL
这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
当使用此命令时,一定要通过ps-ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。
如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了
*killall-9httpd
skill-9root
skill-9pts/2
pkill–uroot
fuser–k/dev/pts/1
进程的优先级
pstree以树形结构显示进程
-20----19(-20优先级最高,19最低)
<表示高优先级
N表示低优先级
nice-n-10updatedb&
updatedb&
topr进程PID优先级(更改优先级)
renice-182222调整优先级
*init是所有进程的父进程
find/-nameaaa&
vi&
jobs查看后台程序
kill%1杀掉第一个
fg%3将后台的进程拿到前台
bg%3让进程在后台运行起来
updated
Ctrl+z暂停并丢入后台
nohupupdated&在shell退出后进程仍然运行,作为系统进程。

本文出自“Crushlinux工作室”博客,谢绝转载!

转载于:https://blog.51cto.com/lytlinux/1308876

Linux系统状态检测及进程控制--2相关推荐

  1. 系统状态检测 及进程控制

    查看linux 服务器CPU 两大指导原则 #具有相同的core id的CPU是同一个core的超线程# #具有相同physical id的CPU是同一个CPU封装的线程或核心# cat /proc/ ...

  2. Linux系统编程17:进程控制之进程等待为什么进程需要被等待wait方法和waitpid方法阻塞和非阻塞等待

    文章目录 (1)为什么子进程需要被等待 (2)等待进程的方法 A:wait方法 B:waitpid方法 C:进程非阻塞式等待 前文说过,子进程被创建之后,父子进程究竟谁先运行是由调度器说了算. 但是, ...

  3. Linux系统编程16:进程控制之进程终止以及终止进程的三种情况

    文章目录 (1)进程终止时的三种情况 (2)退出进程的方法 A:正常退出-exit和return的区别 B:异常退出 C:_exit()函数 (3)实践 (1)进程终止时的三种情况 一个进程结束了,无 ...

  4. Linux系统编程15:进程控制之如何创建进程和写时拷贝技术

    文章目录 (1)fork函数回顾 (2)写时拷贝 (1)fork函数回顾 在下面这篇文章我们演示了fork函数以及相关细节 点击跳转 还是借助上文中的程序和效果图片 #include <stdi ...

  5. linux中检测用户信息的命令是,Linux中系统状态检测命令

    1.ifconfig用于获取网卡配置与网络状态等信息,格式为:ifconfig [网络设备] [参数] 2.uname命令用于查看系统内核版本等信息,格式为:uname [-a] 查看系统的内核名称. ...

  6. linux系统状态(磁盘大小、内存、进程、cpu使用率、网络连接)

    分享一下自己做的一个获取Linux系统状态的类(c++)(代码整理后的,在物理机上测试可以,在vm虚拟机上测试,磁盘计算有问题) 头文件 #ifndef LINUXSERVERSTATE_H #def ...

  7. 关于Linux的那些事儿--系统状态检测命令

    关于Linux的那些事儿–系统状态检测命令 1.ifconfig命令:用于获取网卡配置与网络状态等信息.格式:ifconfig [网卡名] [参数]. ether:物理地址 flags=4163< ...

  8. 嵌入式linux系统下简单守护进程(daemon)的编写

    最近公司项目需要,需要在我们的嵌入式linux设备中创建一个守护进程,用于保护系统中的主进程,防止某些不可预期的意外导致主进程异常结束后,系统完全宕机没有任何反应,破坏用户体验感.但是,查阅诸多资料之 ...

  9. linux系统检测硬盘物理损坏,linux系统下检测硬盘上的坏道和坏块

    linux系统下检测硬盘上的坏道和坏块 发布时间:2020-02-28 22:22:57 来源:51CTO 阅读:1127 作者:赤练挚爱 磁盘坏道检测 当磁盘出现以下情况:io wait 无故增高或 ...

最新文章

  1. Kafka:你必须要知道集群内部工作原理的一些事!
  2. arm服务器配置信息,ARM板 web服务器交叉编译及配置
  3. Linux 下 4 种实时监控日志文件的方法,总有一种适合你
  4. js map 只输出key_什么时候适合使用Map而不是Object
  5. linux磁盘管理与分区 转载
  6. Android Bitmap OutOfMemory 解决的方法
  7. 25 PP模块-创建工厂日历报错-请输入年度xxxx和xxxx之间的有效区域
  8. NLP《词汇表示方法(七)BERT》
  9. TightVNC 2.6.4 发布
  10. [枚举] Jzoj P3387 终极武器
  11. vue 获取跳转上一页组件信息
  12. 泛微OA数据库表说明
  13. 数据库一对一、一对多、多对多关系理解(转载)
  14. mysql mpm_部署zabbix监控mysql (三) MPM插件介绍和部署
  15. stbc 多发送天线 matlab,系统天线论文,关于基于STBC的MIMO-OFDM系统误码性能仿真相关参考文献资料-免费论文范文...
  16. 「数商云专辑」服装/服饰电商平台解决方案
  17. CTA认证system_process定位联网未明示问题
  18. jeDate—选择日期后,再点开重新选择时间,日期会被置为今日日期
  19. 手机号码为344格式
  20. Android8.1编译Kil库

热门文章

  1. Day4-Springmvc表单数据
  2. php电商交押金的逻辑,PHP高并发下抢购、秒杀功能的超卖问题
  3. bind函数怎么用JAVA_c++bind函数的用法
  4. 宁夏大学计算机考研论坛,很多人认为宁夏大学考研题普通人都会做,不如一起来做下试试...
  5. Zabbix添加客户端步骤
  6. 使用CDN之后APACHE日志记录中IP地址不正确的解决方案
  7. SoapUI 请求 https 报 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
  8. VS code 的变量设定
  9. C#多线程编程(6)--线程安全2 互锁构造Interlocked
  10. UCenter创始人密码正确但是登录不了