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


    原文链接为:http://blog.sina.com.cn/s/blog_963453200102uya7.html

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

    默认情况下,进程是前台进程,这时就把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
      • 如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端的进程。
  • 相关阅读:
    Emgu安装配置及使用
    ASP.NET动态网站制作(1)--html
    ASP.NET动态网站制作(0)
    文件自动拆分
    visual studio 常用快捷键
    用vector构造自动扩容的二维数组
    C++中的struct
    Word论文写作如何实现公式居中、编号右对齐
    借助 Filter 生成静态页面缓存问题
    xshell 中解决中文乱码问题
  • 原文地址:https://www.cnblogs.com/hubavyn/p/4350974.html
Copyright © 2020-2023  润新知