`

&命令把作业放到后台执行,不占用终端(屏幕)

阅读更多

(1) &命令
  当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。
  该命令的一般形式为:
  命令&
  为什么要在后台执行命令?因为当在后台执行命令时,可以继续使用你的终端做其他事
  情。适合在后台运行的命令有find、费时的打印作业、费时的排序及一些shell脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
  不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
  command  >out.file 2>&1 &
  在上面的例子中,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。
  
  1.1 向后台提交命令
  现在我们运行一个find命令,查找名为“srm.conf”的文件,并把所有标准输出和错误输出重定向到一个叫作find.dt的文件中:
  $ find /etc -name “srm.conf”- print > find.dt  2>&1 &
  [1] 27015
  在上面的例子中,在我们成功提交该命令之后,系统给出了它的进程号27015。
  当该作业完成时,按任意键(一般是回车键)就会出现一个提示:
  [1] + Done            find  /etc “srm.conf” -print
  这里还有另外一个例子,有一个叫做ps1的脚本,它能够截断和清除所有的日志文件,我把它放到后台去执行:
  $ ps1 &
  [2] 28535
  
  1.2 用ps命令查看进程
  当一个命令在后台执行的时候,可以用提交命令时所得到的进程号来监控它的运行。在前面的例子中,我们可以按照提交ps1时得到的进程号,用ps命令和grep命令列出这个进程:
  $ ps x | grep 28305
  28305 p1 s     0:00        sh /root/ps1
  28305 p1 s     0:00        grep 28305
  如果系统不支持ps x命令,可以用:
  $ ps -ef | grep  28305
  root 28305 21808          0 10:24:39      pts/2              0:00        sh ps1
  root 21356 21808          1 10:24:46      pts/2              0:00        grep 28305
  记住,在用ps命令列出进程时,它无法确定该进程是运行在前台还是后台。
  
  1.3 杀死后台进程
  如果想杀死后台进程可以使用kill命令。当一个进程被放到后台运行时,shell会给出一个进程号,我们可以根据这个进程号,用kill命令杀死该进程。该命令的基本形式为:
  kill -signal  [process_number]
  现在暂且不要考虑其中的各种不同信号;我们会在后面的章节对这一问题进行介绍。在杀进程的时候,执行下面的命令(你的进程号可能会不同)并按回车键。系统将会给出相应的信息告诉用户进程已经被杀死。
  $ kill 28305
  [1] + Terminated         ps1
  如果系统没有给出任何信息,告诉你进程已经被杀死,那么不妨等一会儿,也许系统正在杀该进程,如果还没有回应,就再执行另外一个kill命令,这次带上一个信号选项:
  $ kill -9 28305
  [1] + Killed             ps1  &
  如果用上述方法提交了一个后台进程,那么在退出时该进程将会被终止。为了使后台进程能够在退出后继续运行,可以使用nohup命令,下面我们就介绍这一命令。

 

--使用加后缀 & ,不占用客户端屏幕,但是会立即执行,如何定时执行呢?

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics