Linux 中的作业命令允许用户直接与当前 shell 中的进程交互。
作业在 Linux 中具有三种可能的状态:前台、后台和已停止。
这意味着什么? 我稍后会解释更多。 首先让我们看一下 Jobs 命令中内置的一些工具。
作业控制有几个不同的功能。 每个都可以独立运行。 这是与作业控制相关的命令表。
命令 | 描述 |
---|---|
工作 | 列出当前 shell 中的作业 |
%n | 将进程发送到后台 |
fg %n | 将进程置于前台 |
在表中, n 表示对应作业ID的编号。
了解 Linux 中的作业控制
究竟什么是工作? 工作、流程和任务是经常互换使用的词。
实际上有一些小的差异对于清楚起见很重要。
差异可以归结为哪个实体正在处理任务。 用户拥有工作,而 核心 拥有流程。
在 Linux 中,一个作业可以是单个进程,也可以有许多子进程或子进程。
一个 example 这可能是一项具有多个管道命令的工作,如下所示:
cat file1 | sort | uniq
它解析文件的输出并使用 sort 和 uniq 命令的组合对 uniq 值进行排序。
在个人计算中,操作系统自动处理大多数进程。 这通常针对系统需求或特定任务的优先级进行优化。 这些进程由内核完成并被赋予一个进程 ID (PID)。
如何在 Linux 中控制作业
当你打开一个新的 shell 时,你就有能力创造你自己的工作。 事实上,当您在终端中输入任何命令(或一系列命令)时,就会发生这种情况。
在用户级别 – 从 shell,您可以手动发送作业以在后台工作、将它们带到前台或暂停它们(使用 Ctrl+z)。
因此,让我们通过几个示例将您到目前为止所学的知识付诸实践。
示例 1:将作业发送到后台
将作业发送到后台工作很容易。 你只需要在你的命令后面加上一个 & (和号)符号。
[email protected]:~$ nano Linux_Handbook &
[1] 2860
您可以看到此命令在括号中返回作业编号。 下面的数字是内核使用的进程ID。
示例 2:查看作业
如果您尝试键入作业命令,您可能会感到困惑,似乎什么也没发生。 这是因为 shell 中没有活动的作业。 现在您有一个作业正在运行,您可以成功运行作业命令。
[email protected]:~$ jobs
[1]+ Stopped nano Linux_Handbook
PID 编号未在此处列出,但您不需要它。 您可以使用特定于用户/shell 的作业 ID 来控制作业。
示例 3:将作业带到前台
您可以使用该作业 ID 将您的实例 纳米 到前台。
[email protected]:~$ fg %1
如果您一直在关注,这应该会带您进入 Nano 并使用名为 Linux 手册的文件。
示例 4:使用 Ctrl+z 停止作业
您可以使用 Ctrl+z 停止打开的作业。 这是一个屏幕截图,显示了如何将它与 top 一起使用。
在截屏视频中,您可以观看我打开顶部,使用 Ctrl+z 暂停它,在我的工作列表中查看它,然后在关闭它之前将它带回前台。
示例 5:使用 bg 运行后台作业
虽然您可以使用 & 符号将作业发送到后台,但最好有一个替代方案。 在截屏视频中,您看到我使用 ctrl+z 停止工作。 我把工作带回了外壳和前景 fg %n 命令。 您可以使用 bg.
我将使用 GUI 应用程序来进行切换。 您过去可能已经注意到,当您从终端打开 GUI 时,如果您 close 终端,GUI 将 close 也。 希望本文已经为您阐明了为什么会发生这种情况。
所以,让我们使用 Gedit。 我将执行以下操作:
- 启动 Gedit
- 返回到 Shell 和 Ctrl+z
- 使用 bg 将其发送到后台运行
- 检查我的作业列表以验证它是否正在运行
- 返回前台并使用 Ctrl+c 发送系统中断以终止它
[email protected]:~$ gedit
^Z
[1]+ Stopped gedit
[email protected]:~$ bg %1
[1]+ gedit &
[email protected]:~$ jobs
[1]+ Stopped gedit
[email protected]:~$ fg %1
gedit
^C
Linux 中终止工作的额外提示
我们中的许多人习惯于使用 ctrl+c 来终止 shell 中的作业。 还有另一种方法可以结合您的新工作控制知识。
[email protected]:~$ fg %1
gedit
^Z
[1]+ Stopped gedit
[email protected]:~$ kill %1
没错,kill 命令也可以与作业 ID 一起使用来终止作业。
结论
学习 Linux 命令行使我们更接近我们最喜欢的操作系统的内部工作原理。 学习作业控制使我们能够同时处理多个作业。
我希望您在这篇文章中发现了一些新的东西可以探索。 如果您喜欢它,请在下面的评论部分告诉我们,或使用链接在社交媒体上分享。