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

原创 2015年07月08日 11:24:54

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.

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

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

 

如何让你的linux程序在后台静默执行?

最近写了个工具, 需要在后台静默执行, 即使关闭了当前linux命令行窗口, 也不会有影响, 我们来戏说。 1. 写main.cpp, 生成可执行的二进制文件main (要注意权...
  • stpeace
  • stpeace
  • 2016年12月24日 08:54
  • 5991

最好的shell入门教程

原文地址:http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序...
  • weinianjie1
  • weinianjie1
  • 2013年06月21日 16:13
  • 22523

bash 作业控制

作业控制是指以选择性地停止(暂停)的进程的执行和继续的能力(恢复)在稍后的点其执行。用户通常通过由操作系统内核的终端驱动和bash共同提供一个交互式接口使用这个设施。shell与相关联的每个管道的工作...
  • aixiaoxiaoyu
  • aixiaoxiaoyu
  • 2016年05月27日 19:44
  • 257

Linux Shell 作业控制命令

 命令                      作用-------------------------------------------------------------------------...
  • ProgBelief
  • ProgBelief
  • 2010年12月08日 15:08
  • 1206

Extjs4教程一之入门教学

最近刚到一家新公司
  • qq_17522839
  • qq_17522839
  • 2014年08月14日 08:47
  • 860

shell编程入门之正则表达式

主要介绍下正则表达式的使用
  • haishuitian1
  • haishuitian1
  • 2015年01月29日 22:23
  • 254

《UNIX环境高级编程》笔记--作业控制

作业控制允许在一个终端上启动多个作业(进程组),它控制哪一个作业可以访问该终端,以及哪些作业在后台运行,作业 控制要求下面三种形式的支持: 1.支持作业控制的shell。 2.内核中的终端驱动程...
  • TODD911
  • TODD911
  • 2013年12月01日 11:42
  • 1730

虚幻4引擎快速入门视频教程

虚幻4快速入门指导教程,本人亲自录制。:)
  • Neil3D
  • Neil3D
  • 2015年10月12日 10:24
  • 32595

linux的作业控制(job control)

引用:http://blog.chinaunix.net/u2/68904/showart_1803789.html1.把作业放到后台运行:‘ & ’举个简单的例子, 我们要将 /etc/ 整个备...
  • tsingyee
  • tsingyee
  • 2011年01月04日 20:59
  • 1595

shell入门教程(1)-shell基础

简单脚本文件 过程执行 IO重定向 文件名称替换 命令替换 波浪号替换
  • justkk
  • justkk
  • 2015年02月13日 16:07
  • 2488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell入门教程(4)-作业控制
举报原因:
原因补充:

(最多只允许输入30个字)