Linux进程管理
可以理解为在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