现在的位置: 首页 > 算法 > 正文

Linux前后台作业是什么? Linux前后台作业有哪些常用命令

2020年05月25日 算法 ⁄ 共 3299字 ⁄ 字号 评论关闭

  Linuxbashshell单一终端界面下,我们经常需要管理或同时完成多个作业,如一边执行编译,一边实现数据备份,以及执行SQL查询等其他的任务。所有的上述的这些工作我们可以在一个bash内实现,也就是说在同一个终端窗口完成。下面学步园小编来讲解下Linux前后台作业是什么?Linux前后台作业有哪些常用命令?

  Linux前后台作业是什么

  前后台作业实际上对应的也就是前后台进程,因此也就有对应的pid。在这里我们统称为作业。

  无论是前台作业还是后台作业,两者都来自当前的shell,是当前shell的子程序。

  下面是两者的定义。

  前台作业:可以由用户参与交互及控制的作业我们称之为前台作业。

  后台作业:在内存可以自运行的作业,用户无法参与交互以及使用[ctrl]+c来终止,只能通过bg或fg来调用该作业。

  Linux前后台作业有哪些常用命令

  a、command&直接让作业进入后台运行

  b、[ctrl]+z将当前作业切换到后台

  c、jobs查看后台作业状态

  d、fg%n让后台运行的作业n切换到前台来

  d、bg%n让指定的作业n在后台运行

  e、kill%n移除指定的作业n

  "n"为jobs命令查看到的job编号,不是进程id。

  每一个job会有一个对应的job编号,编号在当前的终端从1开始分配。

  job编号的使用样式为[n],后面可能会跟有"+"号或者"-"号,或者什么也不跟。

  "+"号表示最近的一个job,"-"号表示倒数第二个被执行的Job。注,"+"号与"-"号会随着作业的完成或添加而动态发生变化。

  通过jobs方式来管理作业,当前终端的作业在其他终端不可见。

  3、演示后台作业命令

  a、直接将作业放入到后台(附加&符号)

  robin@SZDB:/tmp>tar-czvftemp.tar.gztempSYBO2SZ.dbf&

  [1]12500

  robin@SZDB:/tmp>tempSYBO2SZ.dbf

  robin@SZDB:/tmp>#此时可进行其它操作,作业一旦完成,会弹出如下的提示

  [1]+Donetar-czvftemp.tar.gztempSYBO2SZ.dbf

  robin@SZDB:/tmp>ls-hltrtemp*

  -rwxr-xr-x1robinoinstall490M2013-05-0217:48tempSYBO2SZ.dbf

  -rw-r--r--1robinoinstall174M2013-05-0217:50temp.tar.gz

  b、已经开始执行,但需要放入后台(使用[ctrl]+z)

  robin@SZDB:/tmp>tar-czvftemp2.tar.gztempSYBO2SZ.dbf

  tempSYBO2SZ.dbf

  [1]+Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  robin@SZDB:/tmp>jobs

  [1]+Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  #下面同时发布两个作业,并且在中途按下[ctrl]+z以便将当前作业提交到后台

  robin@SZDB:/tmp>find/u02-typef-size+100000k

  robin@SZDB:/tmp>find/-typef-size+100000k

  #再次查看当前的jobs时,jobs管理器里出现了3个处于stopp状态的job

  robin@SZDB:/tmp>jobs

  [1]Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  [2]-Stoppedfind/-typef-size+100000k

  [3]+Stoppedfind/u02-typef-size+100000k

  robin@SZDB:/tmp>jobs-l#使用-l参数查看当前shell下所有的作业以及对应的jobnumber,进程pid

  [1]32682Stoppedtar-czvftemp2.tar.gztempSYBO2SZ.dbf

  [2]-32687Stoppedfind/u02-typef-size+100000k

  [3]+32707Stoppedfind/-typef-size+100000k

  #下面通过pid可以查看到对应的进程信息

  robin@SZDB:/tmp>ps-ef|grep32707|grep-vgrep

  robin3270732095009:48pts/100:00:00find/-typef-size+100000

  robin@SZDB:/tmp>tty#当前终端的信息为pts/1

  /dev/pts/1

  #打开另外一个终端

  robin@SZDB:~>tty

  /dev/pts/3

  robin@SZDB:~>jobs#此时可以看到jobs命令无任何返回

  robin@SZDB:~>ps-ef|grep32707|grep-vgrep#仅仅根据进程id可以找到对应的作业

  robin3270732095009:48pts/100:00:00find/-typef-size+100000

  #由上可知,对于当前shell下的jobs,仅当前shell(终端)可见

  c、将后台作业切换到前台(fg命令)

  robin@SZDB:/tmp>fg#省略Jobnumber的情形,则将缺省的job切换到前台

  find/-typef-size+100000k

  /u02/database/old/CNMMBOBK/undo/undotbsCNMMBOBK.dbf

  ......

  [ctrl]+z

  robin@SZDB:/tmp>fg%1

  tar-czvftemp2.tar.gztempSYBO2SZ.dbf

  robin@SZDB:/tmp>jobs

  [2]-Stoppedfind/u02-typef-size+100000k

  [3]+Stoppedfind/-typef-size+100000k

  d、运行后台中暂停的作业(bg命令)

  #前面有2个job处于stopped状态,现在我们让其在后台运行,直接输入bg命令则缺省的job继续运行,否则输入job编号,运行指定的job

  robin@SZDB:/tmp>bg2#输入bg2之后,可以看到原来的命令后被追加了&

  [2]-find/u02-typef-size+100000k&

  robin@SZDB:/tmp>jobs

  [2]-Runningfind/u02-typef-size+100000k&

  [3]+Stoppedfind/-typef-size+100000k

  e、移除指定的作业n(kill)

  robin@SZDB:/tmp>jobs

  [3]+Stoppedfind/-typef-size+100000k

  robin@SZDB:/tmp>kill-9%3#强制终止job3,注意,此处的%不可省略

  robin@SZDB:/tmp>jobs

  [3]+Killedfind/-typef-size+100000k

  robin@SZDB:/tmp>jobs

  #kill-9表明强制终止指定的Job,-15则表明是正常终止指定的job。kill-l则列出kill能够使用的所有信号

  #对于上述命令的详细帮助,使用mancommand来获取帮助信息

  f、带参shell脚本的后台处理

  #下面是一个测试用的shell脚本

  robin@SZDB:~/dba_scripts/custom/bin>moreecho_time.sh

  #!/bin/bash

  以上就是关于“Linux前后台作业是什么?Linux前后台作业有哪些常用命令”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.