Linux进程管理

发布时间 2023-11-28 00:00:07作者: 张澜

进程的含义为正在运行的程序,包括这个运行的程序所占用的系统资源。进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。同一个程序,同一时刻被两次运行了,它们就是两个独立的进程。

初识进程

      程序(program)是一个普通文件,是为了完成特定任务而准备好的指令序列与数据的集合,这些指令和数据以“可执行映像”的格式保存在磁盘中。例如:hello.c源程 序文件经过编译后产生a.out程序,其中a.out文件为可执行镜像格式,Linux 的/bin、/sbin、/usr/bin、/usr/sbin目录下保存着诸多的程序文件。

      进程(process)是一个已经开始执行但还没终止的程序实例。Linux系统下使用ps 命令可以查看到当前正在执行的进程。每个进程包含有进程运行环境、内存地址空 间、进程ID、和至少一个被称为线程的执行控制流等资源。同一个程序可以实例化为 多个进程实体。操作系统中所有进程实体共享着计算机系统的CPU、外设等资源。

      线程:操作系统进行运行调度的基本单位

   也就是说进程是程序的动态执行,一旦运行就会有一个进程ID;

   程序是一个静态的普通文件,里面包含为完成特定任务而准备的指令与数据,程序一旦运行结束就会将所占资源释放掉。

   进程是已启动的可执行程序的运行实例。进程有以下组成部分。

  •  已分配内存的地址空间
  •  安全属性,包括所有权凭据和特权
  •  程序代码的一个或多个执行线程
  •  进程状态

    每个进程都有唯一的进程标识PID,一个PID只能标识一个进程,PPID为父进程ID,需要给该进程分配系统资源。

查看进程

Linux 系统提供了一些命令来查看进程。常用的进程查看命令包括:

  • ps:显示当前系统中的所有进程。
  • top:实时显示当前系统中的进程状态。
  • pstree:显示进程的树形结构。

信号控制进程

信号是一种软件中断,可以用来控制进程的运行。Linux 系统支持多种信号,其中常用的信号包括:

  • SIGKILL:终止进程。
  • SIGINT:中断进程。
  • SIGQUIT:终止进程并产生 core 文件。
  • SIGSTOP:停止进程。
  • SIGCONT:恢复进程的运行。

进程优先级

进程优先级用于决定进程的调度顺序。优先级越高的进程越有可能被调度执行。Linux 系统中的进程优先级范围为 -20 到 20。

调整进程优先级

openEuler 中使用 nice 和 renice 调整进程的 nice 值,进而影响进程优先级
nice 命令语法,优先序(adjustment 取值范围 -19 ~ 20):

nice [-n adjustment][command][arg...]]

例如,将 vi 运行的优先级设置为 -18:

nice -n -18 vi &

作业控制

作业是指由一个或多个进程组成的集合。作业控制用于管理多个进程的运行。Linux 系统提供了一些命令来控制作业。常用的作业控制命令包括:

  • bg:将暂停的进程转到后台运行。
  • fg:将后台进程转到前台运行。
  • jobs:列出当前系统中的所有作业。

进程管理示例

以下是一个使用 ps 命令查看进程的示例:

$ ps
  PID TTY TIME CMD
 1234 pts/0 00:00:00 bash
 1235 pts/0 00:00:00 ps

以下是一个使用 kill 命令终止进程的示例:

$ kill -9 1235

以下是一个使用 bg 命令将进程转到后台运行的示例:

$ bg
[1] + 1236 &