后台运行 命令_Linux 命令行 整理(四)

上篇主要浅析多用户有关的权限问题,本篇主要介绍与多任务有关的进程基础知识。

一般而言,操作系统都支持多任务,意味着操作系统需要在一个执行中的程序和另一个程序 之间频繁快速地切换,而这种切换造成一种系统能同时段并行处理的错觉。Linux 内核通过使用进程来管理多任务。所谓进程,就是 Linux 给正在等待使用 CPU 的各种程序进行一定形式的组织安排。

启动程序时,偶尔遇到卡顿、等待响应等情况,可以借助一些工具查看程序的运行状态,并及时处理掉“失控”的进程。

常用命令如下:

ps – 报告当前进程快照

top – 显示任务

jobs – 列出活跃的任务

bg – 把一个任务放到后台执行

fg – 把一个任务放到前台执行

kill – 给一个进程发送信号

kill all – 杀死指定名字的进程

shutdown – 关机或重启系统

Ubuntu系统启动时,内核先把一些它自己的活动初始化为进程,然后运行一个叫做 init 的程 序。init,依次运行一系列shell脚本(位于/etc),可以启动所有的系统服务。其中许多系统服务以守护(daemon)程序的形式实现,守护程序仅在后台运行,没有任何用户接口 (User Interface)。

在进程方案中,一个程序可以启动另一个程序,专业的讲,是一个父进程可以产生一个子进程。 内核对各进程总体维护,保证进程有序运转——具体来说,系统分配给每个进程一个数字,这 个数字叫做进程 (process) ID 或 PID。PID 号按升序分配,init 进程的PID总是1。内核也对分配给每个进程的内存和就绪状态进行跟踪以便继续执行这个进程。像文件一样,进程也有所有者和用户ID,有效用户ID,等等。

ps 查看进程

ps 全称process status,默认情况下,使用ps 不会显示很多进程信息,如下所示:

[me@YangtianM4000s~]$ ps PID TTY TIME CMD 5448 pts/2 00:00:00 bash 5575 pts/2 00:00:00 ps

显示两个命令bash 和ps 。TTY 是 “Teletype”(直译为电传打字机) 的简写,指进程的控制终端。TIME 字段表示进程所消耗的 CPU 时间数量。ps 加上 “x” 选项,可以展示所有进程,不管它们由什么终端(如果有的话)控制。在 TTY 一栏中出现的 “?” ,表示没有控制终端。

top – 显示任务

虽然 ps 命令能够展示许多计算机运行状态的信息,但是它只是提供 ps 命令执行时刻的机器状态。为了看到更多动态的信息,使用 top 命令,top 程序以进程活动顺序显示连续更新的系统进程列表(默认3s刷新一次)。top 显示结果由两部分组 成:最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。

830bb5a9a468765b28d2de2ecd63f6d5.png
top显示-系统概要

7ea39417dcb24f6a78984356ae41d33b.png
top显示-进程列表

其中系统概要包含许多有用信息。

行号字段含义
1top程序名
17:40:21当前时间
up 7days计算机从上次启动到现在所
运行的时间。系统已经运行了7天
1 user有一个用户登录系统
load average加载平均值,指等待运行的进程数目,也就是说,处
于可以运行状态并共享 CPU 的进程个数。这里展示
了三个数值,每个数值对应不同的时间段。第一个是
最后 60 秒的平均值,下一个是前 5 分钟的平均值,最
后一个是前 15 分钟的平均值。若平均值低于 1.0,则
指示计算机工作不忙碌。
2Tasks统计了进程数目和这些进程的各种状态。
3Cpu(s)描述了 CPU 正在进行的活动的特性
0.3%us0.3% 的 CPU 被用于用户进程。这意味着进程在内核
之外。
0.3%sy0.3% 的 CPU 被用于系统(内核)进程。
0.0%ni0.0% 的 CPU 被用于”nice”(低优先级)进程。
99.3%id99.3% 的 CPU 是空闲的。
0.1%wa有0.1 % 的 CPU 用于等待 I/O
0.0%hi硬件中断占用CPU百分比0.0%
4Mem展示物理内存的使用情况
Swap展示交换分区(虚拟内存)的使用情况

进程的控制

  • 终止进程:使用命令‘Ctrl + c’
  • 把一个进程放置到后台(background)执行:

举个例子,运行xlogo程序,并加上“&”字符,

adbff873bcbf8a3066a7bb93a0c4ca91.png

这个 xlogo 窗口出现,并且 shell 提示符返回信息,启动任务号【1】,PID为7886的程序,这是shell的任务控制特性。shell 的任务控制功能给出了一种列出从我们终端中启动了的任务的方法。使用“jobs"命令,可以看到如下信息:

87db556de040175632f28f499862ee4e.png

图中显示我们有一个任务,编号为“1”,正在运行,并且这个任务的命令是 xlogo &。

  • 进程返回到前台:

一个在后台运行的进程对一切来自键盘的输入都免疫,也不能用 Ctrl-c 中断。为了让一个进程返回前台 (foreground),使用 fg 命令,其后跟随着一个百分号和任务序号:

f5f0f70ac2b138e076b548667ee9beb5.png
  • 暂停一个进程:

实际场景中,如果想要暂停一个进程,而不是彻底终止它,即允许前台进程移动到后台。输入 Ctrl-z即可实现。

Kill命令

通常,kill 命令被用来“杀死”程序。当shell 打印出这个后台进程的任务编号 和 PID后,kill加上相应PID后,可终止相关进程。其实, kill 命令不是真的“杀死”程序,而是给程序发送信号(Signal)。信号是操作系统与程序之间进行通信时所采用的几种方式中的一种。当终端接受了其中一个按键组合后,它会给在前台运行的程序发送一个信号。在使用 Ctrl-c 的情况下,会发送一个叫做INT(Interrupt, 中断)的信号;当使用 Ctrl-z 时,则发送一个叫做 TSTP(Terminal Stop, 终端停止)的信号。程序,相应地,监听信号的到来,当程序接到信号之后,则做出响应。

命令形式为:kill [-signal] PID...

就目前开发中,最常用的信号有:

1(HUP)-重新加载进程。

9(KILL)-终止进程。【KILL 信号从不被发送到目标程序,而是内核立即终止这个进程】

15(TERM)-正常停止进程,而非终止。

要获取所有可用信号的列表,只需使用命令:kill -l

未完待续》》》》》》》》》》》》》》》》》》》》》》》》

实现了如下种调度算法的模拟: (1)时间片轮转调度 (2)优先数调度 (3)最短进程优先 (4)最短剩余时间优先 模拟过程使用了JProgressBar作为进程状态条,更为直观地观察到每个进程的执行状态。 程序用户说明: 1、在上图标号1处输入要创建随机进程的个数,仅可输入正数,非正数会有相关提示。然后点击标号2处的“创建进程”按钮,随进创建的进程显示在程序界面的中央窗口,如标号3所示。 2、创建好随机进程后,在标号4的单选框选择将要模拟执行的调度算法,然后点击标号5处的“开始模拟”,程序开始执行。标号3的列表会显示相应的调度变化。 3、模拟过程中,可以继续添加新的进程,操作同上。 4、 一个算法模拟执行完毕之后,可以点击标号6的“复位”按钮,可以重置列表的内容为程序模拟运行前的内容。复位成功后,可以继续选择其他调度算法进行模拟。 5、标号7显示为程序模拟过程中的时间,从1秒开始累计。 6、点击标号8的“清空”按钮,可以清空类别的进程,以便程序的下次执行。 题目要求: 题目 单处理器系统的进程调度 一 、 课 程 设 计 目 的 1. 加深对进程概念的理解, 明确进程和程序的区别。 2. 深入了解系统如何组织进程、 创建进程。 3. 进一步认识如何实现处理器调度。 二 、 课 程 设 计 内 容 编写程序完成单处理器系统中的进程调度, 要求实现时间片轮转、 优先数、 最短进程优 先和最短剩余时间优先种调度算法。 实验具体包括: 首先确定进程控制块的内容, 进程控 制块的组成方式; 然后完成进程创建原语和进程调度原语; 最后编写主函数对所作工作进行 测试。 模拟程序只对你所设置的“ 虚拟 PCB” 进行相应的调度模拟操作, 即每发生“ 调度” 时, 显示出当前运行进程的“ 进程标识符”、“ 优先数”、“ 剩余运行时间” 等, 而不需要对系 统中真正的 PCB 等数据进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值