10个Linux/Unix下Bash和KSH shell的作业控制实例

系统 Linux
Linux 和 Unix 属于多任务的操作系统,也就是说一个系统在同一时间段内能运行多重任务(进程)。本文中将会列出相关的 Linux 和 Unix 作业(job)控制的命令,你可以通过这些命令在 Bash 或 Korn 还有 POSIX shell 下实现执行多重任务。

[[109889]]

Linux 和 Unix 属于多任务的操作系统,也就是说一个系统在同一时间段内能运行多重任务(进程)。在这个新的博客系列,我将会列出相关的 Linux 和 Unix 作业(job)控制的命令,你可以通过这些命令在 Bash 或 Korn 还有 POSIX shell 下实现执行多重任务。

什么是作业控制?

作业控制不只是能够停止/挂起(stop/suspend)正在执行的进程(命令),也可以继续/唤醒(continue/resume)执行你需要的每一个进程。这完全可以用你的操作系统和 bash/ksh 之类的 shell 或 POSIX shell 完成。

谁给作业控制的提供了环境?

Bash / Korn shell,或者是 POSIX shell 提供给了作业控制的环境。

跟作业表打个招呼吧

你的 shell 会留有一张当前作业的表单,称为作业表。当你键入命令时,shell 会给它分配一个 jobID(也称作 JOBSPEC)。一个 jobID 或 JOBSPEC只是很小的整数数值。

#1: 创建你的*** Linux/Unix 作业

我要运行一个名为 xeyes 的命令,它会在屏幕上显示两个椭圆的眼睛,输入: $ xeyes &

输出样例: 

Fig.01: 在后台运行 xeyes 命令

我使用&符号让一个 job 在后台运行。shell 会打印一行信息类似如下:

  1. [1] 6891 

在这个例子中,有两个数字输出,分别表示:

  • 1 : 在后台执行的 xeyes 任务的作业号为 1。
  • 6891 : 作业1的进程ID。

我在多执行一些 job:

  1. ## 启动一个文本编辑器,X 的系统负载显示,和 sleep 命令 ## 
  2. gedit /tmp/hello.c & 
  3. xload & 
  4. sleep 100000 & 

#2: 列出当前的作业

查看当前 shell 的激活的任务状态,输入:

  1. $ jobs 
  2. $ jobs -l 

输出如下:

  1. [1]   9379 Running                 xeyes & 
  2. [2]   9380 Running                 gedit /tmp/hello.c & 
  3. [3]-  9420 Running                 xload & 
  4. [4]+  9421 Running                 sleep 100000 & 

简要描述如下:

你也可以用 ps 命名列出当前系统正在运行的进程:

  1. $ ps 

#3: 停止或挂起正在运行的作业

按下[Ctrl]-[Z]键或使用kill 命令,如下所示:

  1. kill -s stop PID 

举个例子,启动ping 命令,然后用 Ctrl-Z 键来停止 ping 命令作业: 

Animated gif 01: 挂起 ping 命令作业

责任编辑:黄丹 来源: linux.cn
相关推荐

2018-04-04 08:59:22

LinuxUNIXShell

2010-03-23 16:35:31

shell 脚本编程

2018-02-01 17:32:30

LinuxUNIXBash Shell

2023-07-27 17:41:02

BashZshFish

2018-10-12 10:40:45

LinuxBash命令

2021-05-11 07:50:31

BashShell脚本

2012-01-18 09:46:32

Shell

2009-10-23 13:44:03

linux Shell

2010-06-23 15:50:20

2009-09-29 10:45:17

UnixLinuxshell

2010-06-23 17:34:03

Linux Bash

2010-06-23 16:35:50

Linux Bash

2010-06-23 17:37:14

Linux Bash

2010-04-26 13:28:05

Unix Shell

2022-03-24 11:35:30

LinuxXnosh Shel

2010-02-03 14:57:18

Linux shell

2010-11-19 10:01:08

Oracle创建实例

2010-04-26 13:36:33

Unix Shell

2010-06-23 11:09:14

Linux Bash

2023-06-03 20:36:35

ShellLinuxBash
点赞
收藏

51CTO技术栈公众号