`
qindongliang1922
  • 浏览: 2147196 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116320
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124589
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58453
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70349
社区版块
存档分类
最新评论

关于Linux进程的基础知识

阅读更多

### 前言

在计算机里面,一个进程通常指的是一个运行程序的实例,它包含程序代码和其活动。依赖于具体的操作系统,一个进程启动后通常由若干个线程组成,多个线程可以同时并发的执行程序的指令,进程里面第一个启动的线程,通常称为主线程。

### 进程的类型

#### 前台进程

通常也指交互进程,这些进程一般都是通过linux终端会话创建的,换句话说必须有用户连接到系统上,然后开启一个进程,这种进程不会被系统函数或者创建。


#### 后台进程

通常也指非交互进程,不需要连接到终端执行,也不需要用户的输入

### 关于守护进程

守护进程是一种特殊的后台进程,通常由操作系统启动,然后一直保持运行,作为一个永久服务,除非系统关机,否则永远不会死亡。守护进程在linux里面,可以通过init进程控制。

### linux进程的创建

在linux里面,一个新的进程通常由已经存在的进程创建,新的线程一般称为子进程,创建的线程称为父进程,子进程完全拷贝父进程的运行环境,仅仅进程id不一样。

在linux里面有两种创建新的进程的方法:


(1)使用system函数
相对简单,但是不高效其有一定的风险

(2)使用fork和exec函数

相对复杂,相比system函数,提供了更灵活,更快,更安全的创建方式。

### 如何识别进程

因为linux是多用户的操作系统,意味着不同的用户可以运行不同的程序在系统上,每个运行的程序在内核里面必须是唯一的。

这就是process id和parent process id,也称pid和ppid:

父进程指的是在运行期间创建其他进程的进程。

子进程指的是被创建的进程


### 关于init进程

init进程是linux系统里面所有进程的父进程,它是linux系统引导加载的时候执行的第一个程序,它管理所有其他的进程,init进程由内核启动,原则上它没有父进程。此外init进程的pid总是1。


### 进程的状态


NEW:等待被创建的进程

READY:该进程正在等待分配给处理器

RUNNING:正在执行程序指令的进程

WAITTING:进程等待一些事件完成(例如io完成,或者受到signal信号)

TERMINATED:运行结束的进程



特殊的状态Zombie:进程已经死亡,但其仍然在进程表里面,也称僵尸进程。


### 如何查看当前正在运行的进程的状态


(1)ps命令

(2)top命令

(3)htop命令

(4)glances命令

### 终止进程的方式


```
kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

```

一般比较熟悉的暴力停止:kill -9 pid。
这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。
危害导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。

立即把进程无条件的杀掉

还有比较温和的kill -15:

友好告诉进程退出,进程先保存好数据,再正常退出。
给父进程发送一个 TERM 信号,试图杀死它和它的子进程。
请求彻底终止某项执行操作.它期望接收进程清除自给的状态并退出

其他的如果是在一个前台进程的中:

中断命令:Ctrl-c(SIGINT 2) 发送SIGINT信号给前台进程组中的所有进程,强制终止程序的执行;

挂起命令:Ctrl—z(SIGTSTP 20) 前台进程的挂起

退出命令:Ctrl-d (SIGQUIT 3)一个特殊的二进制值,表示EOF,作用相当于在终端中输入exit后回车;

除了kill指定pid,还可以指定应用程序的名字进行kill:

如:
```
killall firefox
```


### 进程的PCB信息

每个进程都有一个进程控制块,包含有关进程的所有信息。它是一种数据结构,包含以下内容:

(1)进程的状态

(2)进程的id或者父id

(3)cpu寄存器和程序计数器

(4)cpu调度信息,例如一个优先级信息

(5)内存管理信息,例如page表和segment表

(6)账户信息,例如内核cpu时间,账户计数等

(7)io状态信息,设备分配或者打开的文件表等





### 总结


本文主要介绍了Liunx里面关于进程相关的信息,进程是正在运行程序的实例,也是操作系统资源分配的基本单位,线程是cpu调度的基本单位。此外,进程的PCB记录了每个进程详细的描述信息,通过这个数据块,我们可以详细的了解当前进程的执行状态。



有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs) 关注公众号的朋友,可以加入我们的:攻城师互助交流群,一起学习!






0
0
分享到:
评论

相关推荐

    linux进程管理pdf文件

    关于Linux的进程管理的一些讲解和基础知识!

    Linux相关基础知识培训.pptx

    原创Linux基础知识培训,面向零基础受众,讲解文件系统、用户权限、进程等基础知识,讲解如何使用VMware Workstation安装Linux,以及相应的Linux基础命令与操作,最后总结了Linux的学习方法与推荐书籍。

    Linux基础知识培训

    介绍linux基础知识,主要包括进程管理,文件系统,numa等知识点

    Linux基础知识(10-10)-进程管理.pdf

    Linux基础知识(10_10)-进程管理

    linux文件系统基础知识

    linux文件系统基础知识 详细介绍Linux文件系统的知识。 文件系统类型: ext2 : 早期linux中常用的文件系统 ext3 : ext2的升级版,带日志功能 RAMFS : 内存文件系统,速度很快 NFS : 网络文件系统,由SUN...

    Linux网络操作系统基础:进程管理.pptx

    1;进程介绍;进程的生命周期;进程的状态;进程的优先级 (1);进程的优先级 (2);调整进程的优先级;8;前台与后台进程;控制前台与后台进程;查看进程;查看进程 - ps、top;管理进程 - 信号;管理进程

    Linux基础知识学习笔记(markdown格式)

    Linux基础知识学习笔记(markdown格式) 包括:基础指令、yum、日期、时区、固定IP、ping、wget、vurl、nmap、nestat、进程管理、主机状态监控、磁盘信息监控、网络状态监控、上传、下载、用户、权限、解压、压缩、...

    Linux虚拟机基础知识用法

    https://blog.csdn.net/weixin_51911075/article/details/128022926?spm=1001.2014.3001.5501此篇文章是描述Linux信号知识,有概念描述、举例例证、截图示意......信号是进程间通信的一种手段;是一种事件触发机制...

    \嵌入式linux开发教程之进程与线程--千锋培训

    基础知识:线程和进程,二.Linux 2.4内核中的轻量进程实现,三.LinuxThread的线程机制,1.线程描述数据结构及实现限制,2.嵌入式linux开发教程:管理线程,3.嵌入式linux开发教程:线程栈,4.嵌入式linux开发教程:...

    Linux网络编程

    内容包含Linux系统概述、Linux编程环境、Linux文件系统简介、Linux下的进程和线程、TCP/IP协议族、应用层网络服务程序、TCP编程、主机信息获取、数据IO复用、UDP编程、高级套接字、套接字选项、原始套接字、服务器...

    linux下C语言基础

    1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序...

    linux-进程和线程

    在Linux环境下进行C编程时,经常会面临一个问题,即需要同时处理多个任务。那么,在这种情况下,我们应该如何设计...本文旨在分享进程和线程编程基础知识,并与大家探讨在C语言中使用进程和线程以及互斥处理的方法。

    嵌入式Linux C语言基础与实例进阶 视频 源程序 PPT

    分别介绍了嵌入式系统基础知识、linux环境下c语言的开发、bootloader、linux环境下c语言编程基础、linux shell编程、创建嵌入式系统开发环境、c程序基础、嵌入式gui技术、嵌入式文件系统与存储技术、嵌入式linux设备...

    linux程序设计入门

    关于Linux程序设计的知识 Linux程序设计基础知识 进程介绍 文件操作 时间概念 信号处理 线程 网络编程

    Linux应用基础教程

    该ppt非常详尽的讲解了linux的相关应用知识,包括系统的启动与关闭,账户管理,文件系统管理,磁盘和目录管理,包管理,进程管理,shell变成,网络应用等

    程序员必知必会linux基础知识

    linux常用命令,如基础命令,用户管理,进程管理,软件包管理,shell编程,等等

    Linux下C语言编程教程

    第一章基础知识 ……………………………………………………………………………4 第二章进程介绍 …………………………………………………………………………10 第三章文件操作 …………………………………………...

    Linux 基础课程课件

    1.1 计算机基础知识 1.2 操作系统的功能 1.3 Linux系统的历史、现状和特点 1.4 Linux系统安装 1.5 安装工具软件和开发软件 1.6 Linux图形环境 第2章 Linux常用命令 2.1 使用命令 2.2 简单命令 2.3 文件概念...

    linux基础进程通信

    本文介绍了linux通信进程的基础知识,可以为初学者提供参考。

    关于linux内核学习 linux内核学习

    1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线、内存的关系(很...

Global site tag (gtag.js) - Google Analytics