zoukankan      html  css  js  c++  java
  • 【Linux命令】nohup和&差异,查看进程和终止进程!

    最近在开发dueros的技能,官方提供的PHPSDK中有多个实力,而运行实例的命令如下是

    nohup php -S 0.0.0.0:8029 myindex.php &

    从命令来看,肯定是在8029启动了一个服务,因为之前从来没有用过这个Linux命令,所以对这个命令很好奇。比如,这个命令的标准格式是什么,参数是什么,如何查看这个进程以及如何结束这个进程。后面还有一个&,不知道又是什么功效?

    语法:nohup Command [ Arg … ] [ & ]
    
    用途:不挂断地运行命令。
    
      无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
    
      如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
    
      如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
    
    退出状态:该命令返回下列出口值:   
      126 可以查找但不能调用 Command 参数指定的命令。   
      127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
      否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

    从网络资料可知,nohup命令格式,用法说如如上。   最后的&代表用途是让进程在“后台运行”。 一般情况下nohup和&都是组合使用。

    下面就举个例子。

    1. 用nohup和&创建进程

    nohup php -S 0.0.0.0:8029 myindex.php &
    [1] 5701
    [root@AY140716152350Z ~]# nohup: ignoring input and appending output to `nohup.out'

    执行命令后会返回进程ID:5701,在当前目录创建一个nohup.out文件。

    2. 查看这个进程。

    [root@AY140716152350Z ~]# jobs -l
    [1]+  5701 Running                 nohup php -S 0.0.0.0:8029 myindex.php &

    Jobs -l  jobs命令只看当前终端生效的,关闭终端后,其他终端就无效了

    [root@AY140716152350Z ~]# ps -aux|grep index.php
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      5701  0.0  0.5 195876 10284 pts/0    S    11:34   0:00 php -S 0.0.0.0:8029 myindex.php
    root      5982  0.0  0.0 103188   880 pts/0    S+   11:39   0:00 grep index.php
    [root@AY140716152350Z ~]# ps -aux|grep index.php|grep -v grep
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      5701  0.0  0.5 195876 10284 pts/0    S    11:34   0:00 php -S 0.0.0.0:8029 myindex.php
    

      

    如果你断开终端之后,再次登录,可以使用 ps -aux命

    a:显示所有程序 
    u:以用户为主的格式来显示 
    x:显示所有程序,不以终端机来区分

    通过添加 |grep -v grep 可以排除自身进程。

    3. 结束进程

    [root@AY140716152350Z ~]# kill -9 5701
    

      

    如果需要结束进程,只需用kill命令,参数就是进程号。这个创建的时候可以知道。通过,第二部的命令也可以获取。

    -9 是kill命令的一个参数,可以理解为“强杀”,比起不带参数杀伤力更强。

    4.扩展内容

    使用awk命令获得进程ID

    [root@AY140716152350Z ~]# ps -aux|grep index.php|grep -v grep| awk '{print $2}'
    5701

    print $2 代表取第二个列。从上面ps的结果中可以看到,第二列就是进程ID。

    使用 lsof 查看端口使用情况

    [root@AY140716152350Z ~]# lsof -i:8029
    COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
    php     6736 root    4u  IPv4 49611460      0t0  TCP *:8029 (LISTEN)
    

      

    在启动某个服务的时候我们常常会遇到端口被占用的情况,此时,我们非常希望知道是什么命令占用了这个端口,就可以用这个命令。

    好了,这么一圈下来,nohup和&应该大致有个了解了吧。

  • 相关阅读:
    sp2010 升级sp2013 用户无法打开网站
    powerviot install in sharepoint 2013
    can not connect cube in performancce dashboard
    westrac server security configure user info
    添加报表服务在多服务器场
    sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
    delete job definition
    目前付款申请单内网打开慢的问题
    item style edit in sharepoint 2013
    Could not load file or assembly '$SharePoint.Project.AssemblyFullName$'
  • 原文地址:https://www.cnblogs.com/wangpg/p/10041400.html
Copyright © 2011-2022 走看看