linux进程管理

简介:

进程管理 


进程 Process 


某应用程序打开的进程 

PID Process ID

类型: 

用户空间进程 

内核空间进程 



静态查看进程的状态


# ps


[root@localhost ~]# ps >>>>查看本终端的进程 

  PID TTY          TIME CMD

 4206 pts/0    00:00:00 bash

 4378 pts/0    00:00:00 ps



选项的使用方式:

BSD风格:选项没有横线-  ps aux

SysV风格:选项需要带有横线-    ps -elf



BSD风格: 


a 显示与终端相关的进程

u 显示启动进程的用户

x 显示与终端无关的进程

root@localhost ~]# ps a

  PID TTY      STAT   TIME COMMAND

 3303 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2

 3305 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3



[root@localhost ~]# ps u

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root      3303  0.0  0.0   4064   544 tty2     Ss+  09:06   0:00 /sbin/mingetty /dev/tty2

root      3305  0.0  0.0   4064   544 tty3     Ss+  09:06   0:00 /sbin/mingetty /dev/tty3


USER 运行进程的用户 

%CPU 进程所占用的CPU百分比

%MEM 进程所战胜的MEM百分比

VSZ 虚拟内存集,进程独有的内存+共享存在

RSS 进程独有的内存 


STAT 进程的状态


D:不可中断的睡眠 (等待磁盘IO完成)

S:可中断的睡眠(不需要等待磁盘IO完成) 

R:运行或就绪

T:停止

Z:僵死 Zombie

<:高优先级进程 

会被CPU优先执行

会获取更多的CPU执行时间

N:低优先级进程 

+:前台进程组中的进程 

l:多线程进程(Thread)

s:会话进程首进程,某一个连接的父进程 



[root@localhost ~]# ps aux | less 

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0  19364  1536 ?        Ss   09:05   0:00 /sbin/init

root         2  0.0  0.0      0     0 ?        S    09:05   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    09:05   0:00 [migration/0]

root         4  0.0  0.0      0     0 ?        S    09:05   0:00 [ksoftirqd/0]


带有方括号为系统进行(Linux内核启动)

无方括号的(用户进程)


[root@localhost ~]# ps aux | grep vim

root      5550  0.2  0.0 143972  3760 pts/2    S+   10:25   0:00 vim /etc/fstab

root      5564  0.0  0.0 103260   860 pts/0    S+   10:25   0:00 grep --color vim



SysV风格选项:


-e 显示所有进程 

-l  详细信息

-f  以长格式显示(更多字段内容)



[root@localhost ~]# ps -elf | less


F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD

4 S root         1     0  0  80   0 -  4841 poll_s 09:05 ?        00:00:00 /sbin/init

1 S root         2     0  0  80   0 -     0 kthrea 09:05 ?        00:00:00 [kthreadd]

1 S root         3     2  0 -40   - -     0 migrat 09:05 ?        00:00:00 [migration/0]

1 S root         4     2  0  80   0 -     0 ksofti 09:05 ?        00:00:00 [ksoftirqd/0]

1 S root         5     2  0 -40   - -     0 cpu_st 09:05 ?        00:00:00 [stopper/0]

5 S root         6     2  0 -40   - -     0 watchd 09:05 ?        00:00:00 [watchdog/0]

1 S root         7     2  0 -40   - -     0 migrat 09:05 ?        00:00:00 [migration/1]


进程优先级:


0----139

数据越小,越先级越高 


高优先级进程:

获取CPU更多的执行时间

会被CPU优先执行


nice值:


新优先级=旧优先级+NICE值


-20----19 

普通用户仅能够调大nice值,即降低进程优先级

root用户可随意调整nice值


显示进程树 


[root@localhost ~]# pstree

init─┬─abrtd

     ├─acpid

     ├─atd

     ├─auditd───{auditd}

     ├─automount───4*[{automount}]

     ├─bonobo-activati───{bonobo-activat}

     ├─certmonger

     ├─clock-applet

     ├─console-kit-dae───63*[{console-kit-da}]

     ├─crond



显示进程PID  


[root@localhost ~]# pidof vim

5696

[root@localhost ~]# 




动态查看进程的状态 


# top 


top - 10:53:46 up  1:48,  3 users,  load average: 0.12, 0.19, 0.16

Tasks: 239 total,   2 running, 237 sleeping,   0 stopped,   0 zombie

Cpu(s):  7.6%us,  1.6%sy,  0.0%ni, 90.6%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st

Mem:  16084568k total,  2529012k used, 13555556k free,    70044k buffers

Swap:  8388604k total,        0k used,  8388604k free,   626388k cached


 7.6%us 用户进程占用的CPU

 1.6%sy   系统进程占用的CPU

 0.0%ni 调整过优先级的进程占用的CPU

 90.6%id CPU空闲

 0.0%wa 等待磁盘IO的进程所占用的CPU

Cpu(s):显示所有CPU平均比,按1可显示每颗CPU的使用情况



top交互式指令 :


M:按内存使用排序

P:按CPU使用排序

T:按运行时间排序 

l:是否显示TOP第1行信息

m:是否显示内存使用信息

t:是否显示CPU及任务信息


c:是否显示完整的命令行

q:退出TOP



显示当前时刻CPU的使用情况


[root@localhost ~]# uptime 

 11:00:25 up  1:54,  3 users,  load average: 0.39, 0.26, 0.19



top选项:


-d 1:指定top信息刷新的频率

-b:以批模式显示进程信息

-n 2:共显示两批信息 


# top -d 1 -b -n 2 



查看服务器性能:


1、ps, top 

2、df -hT 

3、free -m 

[root@localhost ~]# uptime 

 11:39:00 up  3:24,  4 users,  load average: 0.00, 0.01, 0.05


# mpstat 查看 CPU 

# vmstat 查看内存 

# iostat 查看磁盘


[root@localhost ~]# rpm -qf /usr/bin/iostat 

sysstat-10.1.5-7.el7.x86_64

[root@localhost ~]# 





进程控制


信号:Signal



查看所有信号 


[root@localhost ~]# kill -l

 1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP

 6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX



常用信号:

1  SIGHUP:让一个进程不用重启,就可以重读其配置文件,并让新配置生效  

2  SIGINT:硬件中断信号,ctrl+c 

9  SIGKILL:杀死一个进程

15 SIGTERM:终止一个进程


如何调用一个信号?


信号号码:kill -9 <PID>

信号名称:kill -SIGKILL <PID>

信号名称简写:kill -KILL <PID>


# kill <PID> 


# killall <PROCESS_NAME>




控制进程的运行方式(前台/后台)


前台: 占用命令提示符 


1) 控制命令在后台运行 


# command & 


[root@localhost ~]# firefox &



2) 查看后台的应用程序 


[root@localhost ~]# jobs -l

[1]+ 12066 Running                 firefox &



3) 将正在运行的指令放入后台,并暂停运行 


ctrl+z 


4) 将后台的程序调回前台继续运行 


# fg <后台任务编号>


[root@localhost ~]# fg 1










本文转自 北冥有大鱼  51CTO博客,原文链接:http://blog.51cto.com/lyw168/1957484,如需转载请自行联系原作者
目录
相关文章
|
4天前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
|
10天前
|
Linux
Linux —— 进程间通信
Linux —— 进程间通信
16 1
|
15天前
|
人工智能 监控 Linux
【Linux】进程控制深度了解(下)
【Linux】进程控制深度了解(下)
31 6
|
15天前
|
Unix Linux
linux进程状态基本语法
linux进程状态基本语法
|
15天前
|
存储 缓存 安全
【Linux】冯诺依曼体系结构与操作系统及其进程
【Linux】冯诺依曼体系结构与操作系统及其进程
125 1
|
22天前
|
小程序 Linux
【编程小实验】利用Linux fork()与文件I/O:父进程与子进程协同实现高效cp命令(前半文件与后半文件并行复制)
这个小程序是在文件IO的基础上去结合父子进程的一个使用,利用父子进程相互独立的特点实现对数据不同的操作
|
22天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
147 1
|
15天前
|
缓存 Linux 编译器
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
30 0
|
15天前
|
存储 Linux 调度
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
34 0
|
15天前
|
存储 NoSQL Unix
【Linux】进程信号(下)
【Linux】进程信号(下)
23 0