找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

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

2014-03-13 10:29    评论: 16 收藏: 5    

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] 6891

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

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

我在多执行一些 job:

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

#2: 列出当前的作业

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

$ jobs
$ jobs -l

输出如下:

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

简要描述如下:

字段描述示例
1 [1] jobIDJOB_SPEC - 工作号要与fg, bg, wait, kill和其他shell命令一起使用。你必须在工作号前缀添加一个百分号:(%)。
加号 (+) 标识着默认的或是现在的作业。
减号 (-) 标识着前一个作业。
%1
fg %1
kill %2
2 9379 进程 ID - 系统自动为每个进程创建并分配地独有的身份标志号。 kill 9379
3 Running 状态 - 关于作业的状态:
Running - 该 作业正在运行,还没有被外部信号挂起。
Stopped - 该作业已经被挂起。
N/A
4 xeyes & command - 由shell给出的命令。 script &
firefox url&

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

$ ps

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

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

kill -s stop PID

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

Animated gif 01: 挂起 ping 命令作业

123下一页
查看其它分页:

最新评论

我也要发表评论

微博评论 2014-03-14 14:03 回复
@我的印象笔记
—— 2014-3-14 13:40
微博评论 2014-03-14 14:03 回复
转发微博
—— 2014-3-14 13:08
微博评论 2014-03-14 14:03 回复
//@朱海明Ed: //@唐方成:转发微博
—— 2014-3-14 11:31
微博评论 2014-03-13 20:59 回复
转发微博
—— 2014-3-13 18:40
微博评论 2014-03-13 20:59 回复
转发微博
—— 2014-3-13 14:51
微博评论 2014-03-13 13:33 回复
Repost
—— 2014-3-13 13:12
微博评论 2014-03-13 13:33 回复
//@唐方成:转发微博
—— 2014-3-13 13:10
微博评论 2014-03-13 13:33 回复
@有道云笔记收藏
—— 2014-3-13 13:02
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 12:42
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 12:16
微博评论 2014-03-13 12:43 回复
[疑问]
—— 2014-3-13 12:05
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 11:39
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 11:14
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 11:14
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 11:04
微博评论 2014-03-13 12:43 回复
转发微博
—— 2014-3-13 10:59

LCTT 译者

Luoxcat 🌟 🌟 🌟
共计翻译: 39 篇 | 共计贡献: 277
贡献时间:2013-10-10 -> 2014-07-14
访问我的 LCTT 主页 | 在 GitHub 上关注我

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。