[root@localhost ~]# jobs
[1]+ Stopped ping www.baidu.com
3)进程的终止
Ctrl+c:终端正在执行的任务
使用 kill和 killall命令
(2)进程优先级
进程优先级决定了在系统资源十分紧张的时候,是否优先保障该进程对CPU的需求。
在Linux中优先级分为两类:
动态优先级(PR):由内核进行调整
静态优先级(NI):由用户进行调整,保障程序的运行。在系统中只有root用户可以降低nice值。
NICE值的取值范围:-20~19,默认值为0,nice值越低优先级越高。
调整优先级
1)调整已经存在的进程优先级
[root@localhost ~]# vim text
[root@localhost ~]# pgrep vim -l
6610 vim
[root@localhost ~]# renice -n -20 6610
6610 (process ID) old priority 0, new priority -20
[root@localhost ~]# ps -o pid,nice,comm -p 6610
PID NI COMMAND
6610 -20 vim
2)在程序启动时指定优先级
[root@localhost ~]# nice -n -19 vim text
[root@localhost ~]# pgrep vim
6737
[root@localhost ~]# ps -o pid,nice,comm -p 6737
PID NI COMMAND
6737 -19 vim
进程管理
一、进程查看
(1)进程的概念
当一个程序运行的时候,就会产生进程。为了区分进程,系统会给进程分配一个唯一的ID号——PID。
这里的唯一是指在程序运行的这一刻这个ID是唯一的。当程序结束运行,系统会收回ID,在其他程序运行的时候会将ID重新分配出去。不表示系统会一直使用这个ID。
(2)进程查看命令
ps
作用:查看进程状态信息
语法:
top
作用:实时查看进程状态
语法:
pgrep
作用:通过程序的名称来查询进程
语法:
pidof
作用:查找准确的进程名的pid
(3)父子进程,孤儿进程,僵尸进程
父子进程
父子进程,就是在一共进程的基础上通过fork()函数创建一共完全独立的进程。这个独立的进程成为子进程,子进程会继承父进程的属性,但运行过程不影响父进程。当一个进程需要做一些危险任务时,父进程会通过子进程进行,来避免自己的进程崩溃。
孤儿进程
当父进程先于子进程退出,子进程就会变成孤儿进程(没有孤儿状态)。当一个子进程成为孤儿进程后,马上会被操作系统的1号进程领养(管理)。
孤儿进程会被系统回收,对系统没有危害。
僵尸进程
当一个子进程运行结束时,会向父进程发生信号,父进程需要主动捕捉这个信号来结束子进程。如果父进程无法接收子进程的退出信号,子进程就会一个存在,久而久之就会造成内存泄漏。
解决方法:
二、进程管理
(1)进程的启动与控制
进程控制
当我们需要去控制进程的时候,可以通过发送不同的信号来实现。当进程接收到信号时,会根据信号的作用来进行对应操作。
我们使用kill命令来手动发送信号。默认发送15的信号。
signal 15——结束进程
signal 9 ——强制结束进程(在生产环境中不推荐使用)
signal 1 ——重新读取配置文件(服务本身要支持重新改读取配置文件)
使用
man 7 signal
可以查看完整的信号列表用法:
进程启动
1)手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令后加入
&
符号,输出信息中包括后台任务序号和PID号。2)进程的前后台调度
Ctrl+Z
:将当前进程挂起,即调入后台并停止执行。fg
命令:将后台进程恢复到前台运行,可指定任务序列号。jobs
命令:查看处于后台的任务列表3)进程的终止
Ctrl+c
:终端正在执行的任务kill
和killall
命令(2)进程优先级
进程优先级决定了在系统资源十分紧张的时候,是否优先保障该进程对CPU的需求。
在Linux中优先级分为两类:
NICE值的取值范围:-20~19,默认值为0,nice值越低优先级越高。
调整优先级
1)调整已经存在的进程优先级
2)在程序启动时指定优先级