关闭

shell入门教程(4)-作业控制

标签: shell教程入门作业控制脚本
1002人阅读 评论(0) 收藏 举报
分类:

shell入门教程(1)-shell基础 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/43795131

shell入门教程(2)-变量和参数 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/44081993

shell入门教程(3)-命令编辑 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/44617445

shell入门教程(4)-作业控制 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/46801163

SHELL入门教程(5)-算术运算 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/47025297

SHELL入门教程(6)-环境 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/47025321

SHELL入门教程(7)-编写脚本 - justkk的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/justkk/article/details/47025397

 

 

1、概述

作业控制包括暂停或继续进程的执行,在前台与后台之间切换作业,查看作业运行状态等

前台作业与后台作业的区别:

前台执行的作业受到键盘产生的信号的影响,如 ctrl-c终止,而后台作业不会;

某个时刻只有一个前台执行的作业,可以有多个后台执行的作业;

用户必须等待当前前台执行的作业终止,才能输入下一个命令。

顺便说一下程序与进程的区别:

程序是磁盘上的一个可执行文件;

而程序的每次执行对应系统中的一个进程。

一个作业可能包含多个进程,如:ls |wc -l

 

2、作业控制

前台运行的作业可以通过组合键ctrl-z暂停,示例:

sleep 100

^Z

[1]+  Stopped                 sleep 100

此时作业暂停执行。

fg命令把之前暂停或后台执行的作业放到前台继续执行。

bg命令把之前暂停的作业放到后台执行执行。

fgbg命令不带参数时操作最近一个作业,也可以使用作业编号指定特定的作业,%3表示第三个作业。

 

3、检查作业状态

使用 jobs 命令可以显示所有作业的状态及相关信息。

jobs -l

[19203 Running  sleep 100 &

[2]-  9204 Running  sleep 101 &

[3]+  9205 Running  sleep 102 &

+ 表示当前作业,-表示前一个作业。可以作为fg命令的参数,如fg

杀死作业,示例:kill %1,杀死第一个作业。也可以使用进程号,如:kill 9203
等待作业终止,示例:wait %1,等待第一个作业终止

不带参数时,Shell将等待所有的后台作业执行完毕。

 

4、后台作业与I/O

后台执行的作业尝试读取键盘输入时将被暂停,示例:

# read a &

[1] 5651

# jobs -l

[1]+  5651 Stopped (tty input)    reada

通常,作业的输出信息显示在屏幕上,即使作业在后台执行。这可能不是你希望的,此时可以重定向到文件。

nohup命令也可以重定向后台作业的输出结果,它同时重定向其标准输出与标准错误输出,结果文件命名为nohup.out

nohup的额外作用是在用户注销时避免作业终止,保持作业继续运行,如:

nohup find / -name core -print &

 

5、作业名称

可以使用多种方式引用一个作业,如:作业号、进程号、+-、作业的全部或部分名称。

假定有这些作业:

[16062 Running                 sleep 300 &

[2]-  6063 Running                 sleep 400 &

[3]+  6064 Running                 sleep 500 &

那么下面这些方式都表示 sleep 500这个作业:

%3  %+  $?500

 

6、离开暂停的作业

如果当前有暂停的作业,用户注销时,Shell会提示:

There are stopped jobs.

提示你检查并处理暂停的作业;

如果忽略这个提示,继续注销,那么暂停的作业将被终止。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:49994次
    • 积分:1032
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:5篇
    • 译文:0篇
    • 评论:7条
    文章分类