zoukankan      html  css  js  c++  java
  • Linux 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
      • 如果当前进程原本有一个控制终端,则它失去这个控制终端,成为一个没有控制终端的进程。
  • 相关阅读:
    生产者消费者模型
    进程对象及其他方法、僵尸进程与孤儿进程(了解)、互斥锁、进程间通信、IPC机制、生产者消费者模型
    并发编程总结
    京东618一元抢宝系统的架构优化读后感
    阿里游戏高可用架构设计实践 ------读后感
    以《淘宝网》为例,描绘质量属性的六个常见属性场景
    余额宝技术架构及演进-----读后感
    《架构漫谈》---读后感
    心理小程序开发进度七
    心理小程序开发进度九
  • 原文地址:https://www.cnblogs.com/xhqhome/p/5554286.html
Copyright © 2011-2022 走看看