Linux系统管理
Linux进程介绍
## 进程、线程、协程概念 - **进程(process):**,正在运行中的程序的一个副本。进程包括:一段可执行程序代码),打开的文件、挂起的信号、内核内部数据、处理器状态、地址空间及一个或多个执行线程、存放全局变量的数据段。进程的另一个名字是任务(task)。Linux内核通常也把进程叫任务。 - **线程(thread):**是进程中活动的对象。每个线程都有一个独立的程序计数器、进程栈、一组进程寄存器。内核调度的对象是线程,而非进程。 - **协程:**一个协程就相当于一个函数。 - **进程、线程、协程的区别:** 1.线程是程序执行的最小单位,进程是操作系统分配资源的最小单位; 2.一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。线程是程序执行的最小单位。 3.进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间 ## 进程的生命周期  1.当父进程接收到任务调度时,会通过fork派生子进程来处理,那么子进程会集成父进程的衣钵。 2.子进程在处理任务代码时,父进程会进入等待的状态... 3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成了僵尸进程。 4.每个进程都会有自己的PID号,(process id)子进程则PPID ## 进程状态  进程描述符(task_struct)的state域描述了进程的当前状态。每个进程处于这5中状态中的一种。 - **TASK_RUNNING(运行):**进程是可执行的;或正在执行,或在运行队列中等待执行(就绪)。 - **TASK_INTERRUPTIBLE(可中断):**进程正在睡眠(阻塞),等待某些条件达成。一旦达成,内核就会把进程置为运行。进程会因为接收到信号而被提前唤醒并投入运行。 - **TASK_UNINTERRUPTIBLE(不可中断):**除不会因为接收到信号而被唤醒,从而投入运行外,其他与可中断状态相同。通常用于进程必须在等待时不受干扰,或等待时间很快就会出现。 - **TASK_ZOMBIE(僵死):**进程已经终止,但父进程尚未调用wait4()系统调用,资源尚未被回收。 - **TASK_STOPPED(停止):**进程停止执行;没有投入运行,也不能投入运行。通常这种状态发生在接收到信号SIGSTOP、SIGTSTP、SIGTTIN、SIGTTOU等信号的时候。此外,调试期间接收到任何信号,都会使进程进入这种状态。 ## 进程的结构 每个进程都包括5种不同的数据段 - **代码段:**存放可执行文件的操作指令 - **数据段:**存放初始化了的全局变量 - **BSS段:**存放未初始化的全局变量 #Block Started by Symbol”的缩写,意为“以符号开始的块 - **栈:**存放临时变量(比如函数里面使用的变量) #先进后出 队列就是先进先出 - **堆:**存放数组、对象 ## 进程分类 - 操作系统分类: 协作式多任务:一个任务得到cpu后,只有它主动放弃cpu,其他进程才能使用 抢占式多任务:CPU的控制权由操作系统控制(由操作系统分配cpu资源) - 进程类型 守护进程:daemon,计算机启动以后就自动运行,就和终端没关系了。 前台进程:跟终端相关,通过终端启动的进程 ## 进程的优先级  - 系统优先级:0-139, 数字越小,优先级越高 - 实时优先级(realtime): 99-0 值最大优先级最高 - nice值(nice优先级):-20到19,对应系统优先级100-139 #一般进程启动以后,优先级使用nice优先级的0 - top工具显示的优先级是0-39,对应系统优先级的100-139 - 设置和调整进程优先级 静态优先级:100-139 进程默认启动时的nice值为0,优先级为120 只有根用户才能降低nice值(提高优先性) - nice命令 以指定的优先级来启动进程 nice -n number command 例如:#nice -n -10 ping 127.0.0.1 #调整平命令的优先级为-10 ## 常用信号(进程间通信) | 信号代号 | 信号名称 | 说 明 | | ----- | ----- | | 1 | SIGHUP | 该信号让进程立即关闭.然后重新读取配置文件之后重启 | | 2 | SIGINT | 程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键 | | 8 | SIGFPE | 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误 | | 9 | SIGKILL | 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程 | | 14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号 | | 15 | SIGTERM | 正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9 | | 18 | SIGCONT | 该信号可以让暂停的进程恢复执行。本信号不能被阻断 | | 19 | SIGSTOP | 该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断 | - 统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询。 - 我们只介绍了常见的进程信号,其中最重要的就是 "1"、"9"、"15"这三个信号,我们只需要记住这三个信号即可。 - 关于如何把这些信号传递给进程,从而控制这个进程,这就需要使用 kill、killall 以及 pkill 命令了。
顶部
收展
底部
[TOC]
目录
Linux进程介绍
Linux进程管理命令
Linux工作管理
Linux任务调度:循环执行定时任务命令crontab
Linux任务调度:定时执行某次任务命令at
Linux任务调度:重新执行错过的定时任务命令anacron
Linux系统资源监控分析
Linux端口查询:netstat和lsof
相关推荐
Linux文件目录管理
Linux打包压缩
Linux文本处理
Linux软件安装
Linux用户和用户组管理
Linux文件系统管理