Linux 基础/包管理,进程管理
外观
< Linux 基础
功能:安装应用程序及其组件。
有两种基本格式
- 基于 RPM 的系统(RedHat、CentOS、Fedora、openSUSE)使用 **rpm** 命令进行包管理。它的一个包装器程序是 **dnf**。在 openSUSE 中,**zypper** 用于安装。
- Debian GNU/Linux 的一个包装器程序在 **apt** 包中。最初使用 apt-get,但此后出现了 apt 命令,它是 apt-get 的改进版本。
- apt 代表 *Advanced Packaging Tool*。
- 由于依赖关系,包管理非常困难,因此需要简化。
- 包管理有控制台和图形界面。
进程管理
- 进程是已启动程序的现有副本。
- 操作系统最重要的任务是进程管理。
- PID 0 保留,PID 1 用于 init。(进程标识符)
- 系统中不能同时存在两个相同的 PID。
- 除第一个(init)进程外,每个进程都是由现有进程创建的。我们将以下第一个进程称为父进程(其标识符通常称为 PPID),新创建的进程称为子进程。
- 当然,现实生活中的规则也在这里适用,一个进程可以暂时成为另一个进程的子进程,但它也可以成为父进程,因此可以有许多子进程。
- PPID 为 2 的进程(这对其他 UNIX 和类 UNIX 系统用户来说会很奇怪,因为在其他系统中,系统进程的属性是 PPID=0)是内核的一部分(并且无法使用此文件名找到二进制文件),它们只能作为进程出于管理、调度原因而存在。它们的名字是内核级、内核或系统进程。对系统进程,没有权限管理有效。
- 进程在其生命周期中使用一些 CPU 资源和内存,并加载计算机的 I/O 子系统。进程终止有一个阶段,进程作为系统中的“僵尸”进程存在..
- 我们可以通过 /proc 文件系统直接获取有关进程的信息,也可以通过 **ps** 命令获取。
- 状态
- R:运行
- S:可中断睡眠 → 进程等待事件或资源,可以被信号中断。例如,它等待计数器(睡眠)或任何 I/O 操作。
- D:不可中断睡眠 → 进程等待事件或资源,不能被信号中断。通常,此状态用于等待一些 I/O 设备。
- T:停止 / 跟踪:如果我们在终端中运行进程时按下 CTRL+Z 并将其放到后台,进程就会进入此状态
- X:死亡:此状态不可见
- Z:僵尸进程:已终止,它保留在内存中
- 查看“man ps”
- 第一个实际进程是 **init**,在新系统中是 **systemd**,其标识符为 1。随后启动的进程源于该进程,因此进程在关系上形成了树状结构 → pstree
- “作业”一词:我们可以在终端中使用一个命令执行多个操作/进程,例如
$ cat something.txt | grep apple
- 这里,终端启动了 2 个进程,它们之间是一个管道,因此需要一个新术语来解释启动的进程。
- 以下进程的命令
jobs
- 进程可以在前台和后台运行:FG、BG
- 我们可以在终端中按下 CTRL+C 来终止在前台运行的进程
- 我们可以在终端中按下 CTRL+Z 来终止在前台运行的进程
- 我们希望在后台运行的进程使用 & 字符,例如
sudo apt update &
- 自动连续运行多个命令:使用 && 字符,例如
sudo apt update && sudo apt upgrade
ps
:列出进程及其状态
pstree
:进程结构列表
wait
: [n] → 它等待任意数量的作业/进程,并将给出它们的退出代码
top
、htop
、atop
:它动态列出进程(类似于 Windows 中的任务管理器)
nice
:提高或降低进程的优先级,数字越低表示优先级越高,例如
nice -n 3 program-name
我们可以使用 renice 在程序运行时修改其优先级
renice -n 3 -p PID
- 进程可以通过发送信号从“外部”被挂起。我们可以通过输入 **kill -l** 列出所有信号
- 要终止进程,我们需要 PID 和用户对进程的权限。当然,我们可以使用超级用户权限终止其他用户的进程。
- Killall 命令杀死与主进程关联的所有进程,例如,killall conky 将杀死与 conky 关联的所有进程。
名称 | 编号 | 描述 |
---|---|---|
SIGTSTP | 20 | 暂停,CTRL+Z |
SIGINT | 2 | 立即停止,CTRL+C,但程序可以忽略它 |
SIGQUIT | 3 | 进程停止并清除其文件 |
SIGKILL | 9 | 立即停止,程序不能忽略 kill 命令 |
SIGABRT | 6 | 中止,程序启动它 |
SIGHUP | 1 | 挂起并重新启动(大多数守护进程重新加载其配置) |
SIGTERM | 15 | 停止并释放资源 |
- 它使用一个程序的输出作为另一个程序的输入
- 例如
ifconfig | grep eth0