进程管理
0.进程状态
#R(TAKS_RUNNING) ##可执行态(running,ready)
#S(TASK_INTRRUPTABLE) ##可唤醒休眠
#D(TASK_UNINTRRUPTABLE) ##不可唤醒休眠
#T(TASK_STOP) ##暂停状态
#Z(EXIT_ZOMBIE) ##僵死态
1.进程查看
ps
a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)
x 与终端无关相关的进程
u 用户信息归类的查看方式
f 进程层级关系
o 显示指定参数
-e 显示所有进程
-f 显示信息的完整格式
-H 显示进程的层级结构
-o 显示指定参数
使用less可以从头向后翻阅
ps ax | less
ps axu | less
-o指定想要显示的内容
ps ax -o comm,pid,nice,pri,%cpu,%mem,state
--sort进行排序
ps ax --sort=%mem -o %mem,comm
ps ax --sort=-%mem -o %mem,comm
查看cpu占用在前5的进程的pid
watch -n 1 "ps ax -o pid --sort=%cpu | tail -n 5 | tac"
进程过滤
pgrep
-u uid 显示指定用户进程
-U user 显示指定用户进程
-t tty 显示指定终端进程
-l 显示进程名称
-a 显示进程的完整名称
-P 进程的子进程
已知命令名,查看pid
pidof如果没有运行则没有输入
例如
pidof vim
top
外部命令
-d 指定刷新频率
-b 以批次方式显示
-n 指定显示的批次数量
内部命令
P cpu排序
M 内存排序
T 累计占用cpu时间排序
l 关闭/开启uptime信息
t 关闭/开启cpu&task
s 指定刷新频率
k 操作进程
u 查看指定用户进程
2.更改进程优先级
renice -n 越小优先级越高 pid
[root@alexw-device mnt]# ps -o nice,pid,comm
NI PID COMMAND
0 26776 su
0 26782 bash
0 57993 su
0 58282 su
0 58286 bash
0 70967 ps
[root@alexw-device mnt]# renice -n -5 26782
26782 (process ID) old priority 0, new priority -5
[root@alexw-device mnt]# ps -o nice,pid,comm
NI PID COMMAND
0 26776 su
-5 26782 bash
0 57993 su
0 58282 su
0 58286 bash
0 70977 ps
进程优先级
进程状态:
S #sleeping
< #优先级高
s #顶级进程
T #stop
N #优先级底
R #running
+ #运行在前台
[root@alexw-device mnt]# ps -o nice,pid,comm,stat
NI PID COMMAND STAT
0 26776 su S
-5 26782 bash S<
0 57993 su S
0 58282 su S
0 58286 bash S
0 71069 ps R+
3.shell中引起阻塞的进程的挂起和调回
- bg将一个在后台暂停的命令,变成继续执行
- fg将后台中的命令调至前台继续运行
- jobs查看当前有多少在后台运行的命令
[root@alexw-device mnt]# vi
按Ctrl+z就可以挂起当前进程
[2]+ Stopped vi
[root@alexw-device mnt]# jobs
[1]- Stopped vim
[2]+ Stopped vi
[root@alexw-device mnt]# fg 2
vi
[2]+ Stopped vi
[root@alexw-device mnt]# bg 1 bg
[1]- vim &
[1]+ Stopped vim
[root@alexw-device mnt]# jobs
[1]+ Stopped vim
[2]- Stopped vi
4.进程信息号
man 7 signal
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating-point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers; see pipe(7)
SIGALRM 14 Term Timer signal from alarm(2)
SIGTERM 15 Term Termination signal
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or terminated
SIGCONT 19,18,25 Cont Continue if stopped
SIGSTOP 17,19,23 Stop Stop process
SIGTSTP 18,20,24 Stop Stop typed at terminal
SIGTTIN 21,21,26 Stop Terminal input for background process
SIGTTOU 22,22,27 Stop Terminal output for background process
进程信号控制命令
1 #重新加在系统配置文件(source)
2 #清空内存中的进程数据
3 #清空内存中的鼠标(ctrl+\)
9 #强行结束进程(不能被阻塞)
15 #正常关闭进程(会被阻塞)
18 #运行被暂停的进程
19 #暂停进程(不会被阻塞)
20 #暂停进程(会被阻塞的)
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件