Linux学习笔记之进程管理

一、进程基础

  • 当输入一个命令时,shell会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念,而每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的ID,称为进程ID
  • 对进程进行管理必须以进程ID作为对象而非进程名称
  • 每个进程都可能以两种方式存在:前台和后台,前台进程就是用户当前屏幕上操作的进程,而后台进程则是实际上在操作但从屏幕上无法看到的进程,一般来说,系统的服务都是以后台进程的方式存在,而且都会常驻系统中直到关机才结束,这类服务也称为 Deamon

二、显示进程

可以使用 ps 命令(Process Status)显示当前运行的进程,显示的内容如下:

  • PID(Process ID):进程标志
  • TTY(Teletypewritter):登陆终端的编号
  • TIME:此进程消耗的CPU时间
  • CMD:正在执行的命令或进程名称

添加 -l 参数(Long Format)可以显示更详细的信息,显示的内容如下:

  • F(Flag):进程状态标志
  • S(Status):进程状态
  • UID(User ID):进程执行者的ID
  • PPID(Parent Process ID):父进程的ID
  • PRI(Priority):进程执行的优先级
  • NI(Nice):优先级的 Nice 值,负值表示优先级高
  • SZ(Size):进程占用的内存大小,单位为 KB
  • WCHAN(Waiting Channel):进程等待时的地址

添加 -u 参数(User Format)也可以显示更详细的信息,显示的内容如下:

  • USER:进程的执行者

  • %CPU:CPU使用率
  • %MEM:内存使用率
  • VSZ:占用虚拟内存的大小
  • RSS:占用物理内存的大小
  • START:进程开始的时间

三、删除进程

可以先使用 ps 命令查看进程ID,再使用 kill 进程ID 命令终止指定进程

若无法直接使用上述命令删除进程,

  • 可以加上 -9 参数,代表发出 SIGKILL 信号
  • 可以加上 -15 参数,代表发出 SIGTERM 信号

但是要注意的是,通常极难删除的进程大多与系统运行相关联,因此最好不要养成直接使用 -9 和 -15 参数的习惯

四、进程优先级

每个进程执行时都会被赋予使用 CPU 的优先等级,等级越高,系统提供的 CPU使用时间 就会越多,一般地,进程执行时的优先等级范围是 -20~19,其中-20最高,19最低,优先级 -20 ~ -1 只有管理员可以设置,可以使用以下两个命令设置进程优先等级

  • nice 命令:设置进程执行的优先级,如果执行进程时没有使用nice,则默认为0;如果使用nice而没有指定优先级,则默认为10,语法如下:nice -优先级 命令
  • renice 命令:重新调整进程执行时的优先级,语法如下:renice -优先级 进程ID

五、动态显示进程

可以使用 top 命令动态显示进程状态,在 top 命令执行过程中可以结合使用以下指令完成特定的进程操作

  • P:改变进程的排列顺序,按 CPU使用时间 排序
  • M:改变进程的排列顺序,按 内存使用量 排序
  • J:改变进程的排列顺序,按 执行时间 排序
  • u:监视指定用户产生的进程
  • k:删除指定 PID 的进程

六、设置任务调度

任务自动调度是设置系统在某个时间段执行特定的命令或进程,也就是周期性执行任务,Linux 系统中常以 cron 工具进行调度工作

1. 文件调度规则

执行 crond 进行任务调度前,须写一个提供 crond 执行时所需信息的文件,文件中每行需要包含6个字段,每个字段间要以空白隔开,六个字段列举如下:

字段名称 说明 范围
分钟 每小时的第几分钟执行 0~59
小时 每天的第几小时执行 0~23
日期 每月的第几天执行 1~31
月份 每年的第几月执行 1~12
星期 每周的第几天执行 0~6
命令名称 命令名称及参数

说明:

  • 除了最后一个字段为必填项之外,其余字段可视需求决定
  • 不指定的字段输入 * 占位,* 表示全部的意思
  • 可以使用 - 表示范围,如2-5
  • 可以使用 , 表示分隔,如2,3,4,5
  • 如果在执行命令后没有使用输出重定向,则系统会将执行结果以电子邮件的方式传送给执行此进程的用户

2. 设置任务调度

  • 设置系统调度任务:有关 Ubuntu 系统调度任务的记录在 /etc/crontab 文件中,部分环境变量也会定义在 /etc/anacrontab 文件中,如 SHELL、PATH等
  • 设置个人调度任务:

可以使用 vi 编辑器编写任务调度,编写完成并保存文件后需要通过 crontab 文件名 启动任务调度

也可以使用 crontab-e 命令进行编辑,编写完成后默认保存在 /tmp 目录下,接下来系统会将用户的设置内容写入 /var/spool/cron 目录中以每个用户名称命名的文件,同时自动检查并启动任务调度

3. 其他命令

  • crontab -l:查看当前用户的调度任务(显示 /var/spool/cron 目录中以每个用户名称命名的文件的内容)
  • crontab -r:删除所有调度任务

4. cron 访问管理

当用户新增或删除 cron 任务时,系统会寻找 /etc/cron.allow 文件,若文件存在,则包含在其中的用户允许使用 cron,若 /etc/cron.allow 文件不存在,则系统会寻找 /etc/cron.deny 文件,若文件存在,则包含在其中的用户会被禁用 cron,但唯一例外的是root(无论是否在文件中均可使用 cron 服务)

注意在编辑 /etc/cron.allow 和 /etc/cron.deny 文件时,每行只能输入一个用户名称,而且不能包含空格

猜你喜欢

转载自www.cnblogs.com/wsmrzx/p/9692201.html
今日推荐