一、Linux下的进程
每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。
Linux 给每个进程都打上了运行者的标志,用户可以控制自己的进程:给自己的进程分配不同的优先级,也可以随时终止自己的进程。
- 进程从执行它的用户处继承UID、GID,从而决定对文件系统的存取和访问。
Linux 不可能在一个 CPU 上同时处理多个任务(作业)请求,而是采用 “分时” 技术来处理这些任务请求。
使用PID区分不同的进程
- 系统启动后的第一个进程是init,它的PID是1。init是唯一一个由系统内核直接运行的进程。
- 除了init之外,每个进程都有父进程(PPID标识)
- 每个进程还有四个与用户和组相关的识别号
- 实际用户识别号 (real user ID,RUID)
- 实际组识别号 (real group ID,RGID)
- 有效用户识别号 (effect user ID,EUID)
- 有效组识别号 (effect group ID,EGID)
- RUID和RGID的作用:识别正在运行此进程的用户和组。
- EUID和EGID的作用:确定一个进程对其访问的文件的权限。
进程类型:
- 交互进程
- 由一个Shell启动的进程。
- 交互进程既可以在前台运行,也可以在后台运行。
- 批处理进程
- 不与特定的终端相关联,提交到等待队列种顺序执行的进程。
- 守护进程(Daemon)
- 在Linux在启动时初始化,需要时运行于后台的进程。
进程的启动方式:
- 手工方式:使用操作系统提供的用户接口
- 前台
- 后台 (&)
- 调度方式:按照预先指定的时间执行
- at
- batch
- cron
前台进程:
- 指一个程序控制着标准输入/输出,在程序运行时,shell 被暂时挂起,直到该程序运行结束后,才退回到 shell。在这个过程中,用户不能再执行其它程序
后台进程:
- 用户不必等待程序运行结束就可以执行其它程序。运行后台进程的方法是在命令行最后加上 “&”
进程和作业的区别:
- 进程:操作系统的概念,由操作系统负责管理
- 作业:shell程序的概念,由shell程序负责管理
- 一个操作系统可以启动多个shell程序,shell本身也是一个进程
- 一个作业里至少包含一个进程,也可以包含多个进程作业分前台和后台运行之分
查看进程
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 &
标签:00,优先级,管理,后台,Linux,进程,运行
From: https://www.cnblogs.com/8313tzx/p/17863457.html