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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值