Linux shell中运行命令后加上字符“&”的作用

上午登录服务器编译运行服务端程序的时候,学到了在命令后加上字符“&”后,退出shell,运行的命令可以继续运行。不解原因,并到网上搜索了以下,明白了点!

以下是搜索到的片段:

& 放在启动参数后面表示设置此进程为后台进程

默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个‘&‘实现这个目的。

如:

tianfang > run &
    [1] 11319
tianfang > ./game.e 1 &

进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319。切换到后台的进程,仍然可以用ps命令查看。

前后台间切换

可以通过bg (background)和fg(foreground)命令将其在前后台间状态切换。

守护进程

如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程。守护进程值得是系统长期运行的后台进 程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。

tianfang > ps xj
     PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
     953 1190 1190 1190 ? -1 Ss 1000 0:00 /bin/sh /usr/bin/startkde
     1 1490 1482 1482 ? -1 Sl 1000 0:00 /usr/bin/VBoxClient –seamless
     1 1491 1477 1477 ? -1 Sl 1000 0:00 /usr/bin/VBoxClient –display

创建守护进程最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader。成功调用该函数的结果是:

  • 创建一个新的Session,当前进程成为Session Leader,当前进程的id就是Session的id
  • 创建一个新的进程组,当前进程成为进程组的Leader,当前进程的id就是进程组的id
  • 如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端的进程。

更多请参考:http://www.cnblogs.com/TianFang/archive/2013/01/23/2872645.html

转自 http://blog.sina.com.cn/s/blog_963453200102uya7.html

时间: 2024-12-30 03:13:39

Linux shell中运行命令后加上字符“&”的作用的相关文章

Linux shell中运行命令后加上字符“&”的作用(转)

原文链接为:http://blog.sina.com.cn/s/blog_963453200102uya7.html & 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的. 如: tianfang > run & [1] 11319 tianfang > ./game.e 1 & 进程切换到

Linux shell中getopts命令学习--实现一个添加yum源的脚本

getopts是bash shell的内建命令,作用是在shell脚本中解析命令行传递.传递给函数或传递给另一个调用的shell脚本的位置参数(选项或参数,后面会讲解,getopts只支持短选项,若要解析长选项请参考getopt). getopts命令语法: getopts optstring name [arg] 相关的术语: 选项(option):GNU风格的命令选项,如:-x,-y等减号加上单个字母的为短选项:--help为长选项: 选项的参数:某些选项之后必须尾随参数,如:-f xxx.

linux shell中的$0,$?,$!和<<'END'

变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以"$1 $2 - $n"的形式输出所有参数. [email protected] 所有参数列表.如"[email protected]"用「"」括起来的情况.以"$1

linux shell中'',""和``的区别

今天学习一个bash脚本,看到有一条:bin=`dirname "$0"` (dirname filename是输出该文件所在的目录,$0是该bash文件的文件名,在bash中一般使用cd `dirname $0`进入该脚本所在的目录中) 我尝试着cat $bin 输出是:. 然后我将反引号``去掉:bin=dirname "$0" 在运行cat $bin后报错. 网上查了一些bash的单引号'',双引号""和反引号``的区别. 单引号''和双引

(linux shell)第二章--命令之乐(一)

文章来自于我的个人博客:(linux shell)第二章--命令之乐(一)    上一章我们描写叙述了一些linux shell中须要注意的一些语法.接下来我们開始了解linux shell的经常使用命令.let's go... cat 命令: cat本身表示拼接(concatenate).cat命令有一些经常使用參数,像-n,-s等,我们以下逐一介绍: 假设你想高速查看一个文本文件内容.就能够使用cat命令: cat file 假设你想一次查看多个文件内容.也是在后面加上文件路径就可以 cat

Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2        ;; *) 默认执行的命令序列     ;; esac Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)_linux shell_脚本之家 在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些

[转帖]Linux shell中2>&1的含义解释 (全网最全,看完就懂)

Linux shell中2>&1的含义解释 (全网最全,看完就懂) https://blog.csdn.net/zhaominpro/article/details/82630528 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhaominpro/article/details/82630528 A.首先了解下1和2在Linux中代表什么 在Linux系统中0 1 2是一个文件描述符 名称 代码 操作符 Java中表示 Linux 下文

Linux Shell中‘$‘符号的N种用法

在Shell中$是一个特殊的字符,在不同场景中有不同的用法. 引用变量 使用$直接引用变量,包括循环变量. 123 [email protected]:~# x=1[email protected]:~# echo $x1 双引号"括起来的字符串支持变量插值. 123 [email protected]:~# x=1[email protected]:~# echo "x = $x"x = 1 使用${}作为单词边界. 123 [email protected]:/var/l

linux shell中的比较符号与特殊符号介绍

shell字符串比较.判断是否为数字  二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.  整数比较  -eq 等于,如:if [ "$a" -eq "$b" ]  -ne  不等于,如:if [ "$a" -ne "$b" ]  -gt 大于,如:if [ "$a" -gt "$b" ]  -ge 大于等于,如:if [  "$a" -ge "