Linux进程管理

TOC

可以理解为在cpu及内存中运行的代码程序,也就是动态执行的代码,进程可以分为父、子进程
注意:一个程序可以创建一个或者多个进程

一、查看进程

ps命令(静态查看进程)

ps -aux

ps -aux

选项解释:

  • a : 显示终端上的所有进程,包括其他用户的进程
  • u : 表示列出进程的用户
  • x : 显示所有终端的进程

显示终端各项的解释:
USER :进程的用户
PID :进程的ID
%CPU :进程占用的CPU百分比
%MEM :进程占用的内存百分比
VSZ :进程占用的虚拟内尺量(KB)
RSS :进程占用的物理内存量(KB)
TTY :启动进程的终端名,不是从终端启动的进程则显示?


STAT : (进程状态)
D:不可中断的休眠状态
R:正在运行的状态
S:处于休眠状态,可被唤醒
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态
Z:僵尸进程,进程已经终止,但是部分程序还在内存当中

START:进程被触发启动时间
TIME:进程实际使用cpu运行时间
COMMAND:进程的启动命令

ps -elf

ps -elf

选项解释:

  • -e:显示系统内的所有进程信息
  • -l:使用长格式显示进程信息
  • -f:使用完整的格式显示进程信息

显示终端各项的解释:
F : 内核分配给进程的系统标记
S : 进程的状态
UID : 启动这些进程的用户
PID: 进程的进程ID
PPID : 父进程的进程号(如果该进程是由另一个进程启动的)
C :进程生命周期中的CPU利用率
PRI: 进程的优先级(越大的数字代表优先级越低)
NI:谦让度值用来参与决定优先级
ADDR: 进程的内存地址/td>
SZ:假如进程被换出,所需交换空间的大致大小
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
STIME :进程启动时的系统时间
TTY :进程启动时的终端设备
TIME: 运行进程需要的累计CPU时间
CMD : 进程的启动命令

根据资源进行排序

根据CPU使用率进行排序

# 以下列出前十名的进程,如果不需要则不要|管道符号后面的操作
ps -eo pid,comm,%cpu,%mem --sort=-%cpu |head -10

根据Memory内存使用率进行排序

# 以下列出前十名的进程,如果不需要则不要|管道符号后面的操作
ps -eo pid,comm,%cpu,%mem --sort=-%mem |head -10

top命令(动态查看进程)

top

选项解释:
P键:按CPU占用情况进行排序
M键:按内存占用情况进行排序
N键:启动时间
c键:切换显示命令名称和完整命令行
h键:可以获得top程序的在线帮助信息
k键:根据提示输入指定进程的PID号并按Enter键终止对应的进程
q键:退出 空格键:强制更新
数字1:显示CPU个数和状态

显示终端各项的解释:
PID:进程ID
USER:进程所有者的用户名
PR:优先级
NI:谦让值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存大小,单位kb
RES:进程使用的物理内存大小,单位kb
SHR:共享内存大小,单位kb
S:进程状态
%CPU:上次更新时间到现在的CPU占用百分比
-%MEM-:-进程使用的物理内存百分比-
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:命令名/命令行

其他查看

pgrep:按条件查询进度

pstree:查看进程树

-a : 显示完整信息
-u : 列出对应用户名
-p : 列出对应PID号

pstree -aup

netstat:查看开启的端口号

-u:udp端口采用tcp协议
-t:端口采用tcp协议

netstat -anput

lsof:查看相关端口号

-i:显示与网络连接(互联网套接字)相关的文件

lsof -i:80

二、结束进程

kill:对进程号杀死(格式跟PID号)
killall:杀死一批进程
pkill:按指定条件杀死进程
-U:指定用户
-t:指定tty
-9:强制终止进程

三、周期性计划任务

1.crontab:周期性计划任务

文件目录:/etc/init.d/crond
命令:crontab
-e:进入vim样式界面进行编辑计划   -l:查看周期性计划列表
-r:全部删除   -u:指定所管理的计划属于哪个用户
格式:分,时,天,月,星期(顺序不能改)   run_command/任务命令
时间表示:
“*”:表示默认所有,每   “,”:时间隔断,比如星期135(1,3,5)
“-”:表示一个区间范围“1-5”
“/”表示时间的间隔频率“0-23/2”表示每两个小时执行一次
例如(每月30号9点30执行a.sh脚本):

30 9 30 * *     /bin/bash  sh a.sh

2.写进/ect/crontab文件

这种形式可以任何用户使用crontab -l无法查看列表

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
0 0 * * *   root   date