笔者最近使用的是Dell的电脑,Dell的电脑有一个很大的特点——就是CPU使用率过高的时候,风扇会转得特别快。之前用Windows的时候,一启动风扇就疯狂地转。但是自从换了Linux以后,这种现象就再没发生过(除了我自己用scale=100000的Pi模拟高负载的时候)。然而,前几天在折腾Linux时风扇又开始响了,本来想用Windows下类似任务管理器的工具看看是什么占用了CPU,结果Ctrl+Alt+Delete竟然是注销,Application下倒是有一个叫做“系统监视器”的工具,不过肯定不如命令行来得直接。
目录
·进程概述
一. 什么是程序?什么是进程?什么是服务?什么是网络服务?
- 程序(program):存放在硬盘中的二进制(可执行)程序。
- 进程(process):加载到内存中的程序成为进程。
- 服务(deamon):常驻在内存中的进程成为服务
- 网络服务(Web Deamon):一种特殊的服务,会启动一个负责网络监听的端口,以提供外部客户端的连接请求。
二. Linux下进程的基本知识
当Linux下的程序加载到内存中的时候,操作系统会给你1. PID 2. 调用者的权限
其中,PID是跟你的UID/GID相关的,也就是说,不同的用户,打开相同的bash shell也是不一样的,因为PID不同
三. 子进程与父进程
之前提到我们的shell是一个进程;打开shell我们免不了要执行各种命令,那么这些程序最后也会加载到内存中成为新的进程。那么这两个进程之间有什么关系呢?首先,我们把shell叫做父进程,然后把shell里面输入的各种命令,脚本对应的进程叫做子进程。
子进程的特性:
- 会有一个所谓的PPID(Parent PID):内容是其父进程的PID;
- 只会继承父进程的环境变量,而不会继承父进程的自定义变量。
子进程的产生过程可以用fork-and-exec来解释:
父进程先fork一份与其差不多的中间进程(但是PID和PPID变了)--->中间进程执行新的程序--->中间进程变成最终的子进程。
·任务管理
一. 什么是任务管理?
这个job control实在bash环境下的。通常情况下我们同一个bash下只能干一件事情。比如我要下载一个软件,就必须要等到这个软件完全下载完,才能执行其他任务。虽然我们可以打开多个tty终端,但是有时root可能会限制我们的终端个数,这时候学习多任务管理就非常重要了。
这里vscode中的gdb就是用了任务管理,把gdb丢到后台去运行了。
二. 前台和后台的概念
在尚未接触Linux之前我们也有听闻过前台和后台的概念,这次就让我们来详细了解一下吧!
不妨先从定义讲起:
- 前台:所谓前台就是你在bash中出现提示字符让你操作的环境。老师
- 后台:所谓后台就是不与用户进行交互的环境。
前后台之