什么是进程?
一个程序被加载到内存中运行,那么在内存内的那个数据就被称为进程(process)。进程就是一个正在运行中的程序。
进程的查看
利用静态的ps或动态的top命令
ps aux #使用BSD语法(没有破折号)查看系统上的所有进程
ps -ef #使用标准语法(有破折号)来查看系统上的所有进程
ps axjf #打印进程树
ps -l #查看当前用户bash进程
选项与参数:
-e :显示所有进程
-f :显示UID、PPIP、C、STIME栏位
-l :显示进程的详细信息
a :显示所有的终端进程,包括其他用户的终端
u :以用户为主的格式来显示进程状况
x :显示所有进程,不以终端机来区分
f :用ASCII字符显示树状结构,表达进程间的相互关系
j :用任务格式来显示进程
top [-d 数字] | top [-bnp]
选项与参数:
-d :后面可以接秒数,就是整个程序画面升级的秒数。默认是 5 秒;
-b :以批量的方式运行 top ,还有更多的参数可以使用喔!
通常会搭配数据流重导向来将批量的结果输出成为文件。
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p :指定某些个 PID 来进行观察监测而已。
在 top 运行过程当中可以使用的按键命令:
? :显示在 top 当中可以输入的按键命令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用资源排序显示;
N :以 PID 来排序喔!
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k :给予某个 PID 一个讯号 (signal)
r :给予某个 PID 重新制订一个 nice 值。
q :离开 top 软件的按键。
#将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt
top -b -n 2 > /tmp/top.txt
进程的管理
进程是如何互相管理的呢?其实是透过给予该进程一个信号 (signal) 去告知该进程你想要让它作什么!
代号 | 名称 | 内容 |
---|---|---|
1 | SIGHUP | 启动被终止的程序,可让该 PID 重新读取自己的配置文件,类似重新启动 |
9 | SIGKILL | 代表强制中断一个进程的进行,如果该进程进行到一半, 那么尚未完成的部分可能会有‘半成品’产生,类似 vim会有 .filename.swp 保留下来 |
15 | SIGTERM | 以正常的结束进程来终止该进程。由于是正常的终止, 所以后续的动作会将他完成。不过,如果该进程已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的 |
kill 可以帮我们将这个 signal 传送给某个工作 (%jobnumber) 或者是某个 PID (直接输入数字)。
使用命令格式:kill -signal PID
kill -9 123 #强制结束PID为123的进程
也可以直接使用killall杀掉某个命令的进程
使用命令格式:killall -signal 命令名称
yum install -y psmisc #安装killall命令
killall -9 httpd #强制结束httpd进程
查看Linux打开的port
netstat -tunp #查看已建立连接的port
netstat -tunpl #查看正在监听的port
netstat -tunpa #查看所有port
参数说明:
-t (tcp)仅显示TCP传输协议的连线状况
-u (udp)仅显示UDP传输协议的连线状况
-n (numeric)直接使用IP地址,而不通过域名服务器,能加快输出速度
-p (programs)显示建立相关连线的程序名和PID
-l (listening)仅显示Listen的连线状况
-a (all)显示所有选项。默认只显示ESTABLISHED