1、进程基础

  • 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念
  • 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID,称为进程 ID(PID)
  • 对进程进行管理必须以进程 ID 作为对象,而非进程名称
  • 每个进程都可能以前台或后台两种方式存在,bg 表示后台执行,fg 表示前台执行
  • 在命令后加 & 使进程在后台执行

2、显示进程

可以使用 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:进程开始的时间

3、删除进程

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

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

  • 可以加上 -9 参数,代表发出 KILL 信号,进程不会进行清理和保存工作
  • 可以加上 -15 参数,代表发出 TERM 信号,进程有足够活力接收时才会被终止

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

其它参数的含义如下:

  • -1:发出 HUP 信号,挂起进程
  • -2:发出 INT 信号,效果和直接使用 Ctrl+C 相同
  • -18:发出 CONT 信号,继续运行进程
  • -19:发出 STOP 信号,暂停进程

4、进程优先级

每个进程执行时,都会被赋予使用 CPU 的 优先等级,等级越高,系统提供的 CPU 使用时间 就会越多

一般地,进程执行时的优先等级范围是 -20~19,其中 -20 最高,19 最低,优先级 -20 ~ -1 只有管理员才可以设置

可以使用以下两个命令设置进程优先等级:

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

5、动态显示进程

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

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

6、设置任务调度

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

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.deny 文件

若文件存在,则包含在其中的用户会被禁用 cron,但唯一例外的是 root(无论是否在文件中均可使用 cron)

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

【Linux学习笔记相关文章】

Linux学习笔记(六) 进程管理的更多相关文章

  1. Linux学习笔记(五) 账号管理

    1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...

  2. Linux内核学习笔记-2.进程管理

    原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  3. Linux学习笔记12—磁盘管理

    一.查看磁盘或目录的容量 1.  df命令 作用:查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 参数: -I : 查看inodes使用状况 -h: 使用合适的 ...

  4. Linux学习笔记<六>

    进程与程序 1.子程序与父程序 PID是进程的ID,PPID是其父进程的ID 登录bash之后,就是获取了一个名为bash的PID,在这个环境上所执行的其他命令,就是其子程序 common@commo ...

  5. Linux System Programming 学习笔记(五) 进程管理

    1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity in ...

  6. Linux学习笔记24——进程管道

    一 管道的作用 通常把一个进程的输出通过管道连接到另一个进程的输入. 二 popen和pclose函数 #include <stdio.h> FILE *popen(const char ...

  7. linux —— 学习笔记(用户管理与权限控制)

    目录:1.用户的创建和管理    2.组的创建和管理 3.文件执行权限的控制 4.不用密码执行sudo 1.用户的创建和管理 用户的创建和管理: useradd.usermod . userdel . ...

  8. linux学习笔记之进程

    一.基础知识 1:进程. 1,进程ID: 非负整数,具有唯一性. 1)ID=0的进程:调度进程/交换进程.内核的一部分.不执行任何磁盘上的程序. 2)ID=1的进程:init进程. 1-自举结束时,由 ...

  9. Linux初学笔记---关于进程管理等

    菜鸟初学: 1. 查看进程用的命令: ps 具体用法 ps -A ro ps -e 显示所有进程 ps -u root 显示root 用户的进程 ps -u root -N 显示非root用户的进程 ...

随机推荐

  1. 两道NOIP里的DP题目~

    拦截导弹    来源:NOIP1999(提高组) 第一题 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都 ...

  2. 【推荐】微服务分布式企业框架Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis

              摘要: 主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件.数据权限组件.数据字典组件.核心工具 组件.视图操作组件.工作流组件.代码 ...

  3. 编程细节 —— 按值传递、按引用传递(final、const)

    System.out,out 是 System 类内定义的静态 final PrinterStream 变量: public final class System { ... public final ...

  4. Eclipse导入Java 的jar包的方法

    打开eclipse1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择ja ...

  5. PCB拼板之多款矩形排样算法实现--学习

    参考资料:<一种新型pcb合拼求解过程> 拼版合拼问题描述和求解过程 合拼问题描述 Pcb合拼问题是通过二维矩形组合排样而演化与扩展而形成的一种新拼版问题,把每个零件都看成一个规则的矩形进 ...

  6. P4161 [SCOI2009]游戏

    传送门 首先这题的本质就是把\(n\)分成若干个数的和,求他们的\(lcm\)有多少种情况 然后据说有这么个结论:若\(p_1^{c_1}+p_2^{c_2}+...+p_m^{c_m}\leq n\ ...

  7. TCPClient、TCPListener的用法

    支持Http.Tcp和Udp的类组成了TCP/IP三层模型(请求响应层.应用协议层.传输层)的中间层-应用协议层,该层的类比位于最底层的Socket类提供了更高层次的抽象,它们封装 TCP 和 UDP ...

  8. linux下jdk与tomcat的安装与配置

    Linux中jdk与tomcat的安装与配置 1.搭建环境: (1)Linux环境:CentOS6.1 (2)jdk-1.8 (3)tomcat-9.0 2.在Linux系统上创建目录 在usr/lo ...

  9. XAMPP--Apache服务无法启动问题定位及处理

    一.问题简述: XAMPP 在使用一段时间后,Apache服务无法启动. 二.详细描述: 安装Xampp服务器套件之后,部署使用正常.一段时间未使用,再次打开时,Apache服务无法启动.错误提示如下 ...

  10. Pycharm消除波浪线

    PyCharm使用了较为严格的PEP8检查规则,稍微有点错误就会出现波浪线提示.那么怎么消除这些波浪线呢?一个简单粗暴的方法就是:在编辑器的右下角有个小人形状的按钮,点开之后有个滚动条,将滚动条滑动到 ...