zoukankan      html  css  js  c++  java
  • Ubuntu中如何使得程序在后台运行

    Ubuntu中如何使得程序在后台运行

    一、前言

        在Ubuntu中有的程序启动需要执行改程序./bin目录下的文件,并且启动之后这个shell就不能使用和关闭了,非常的麻烦,因此就有了相应的命令来解决这个问题。

    二、nohup和&

        一般在执行shell命令的时候我们在命令的后面加上一个‘&’,这样就可以使得该程序在后台运行,但是当程序运行起来之后依旧会再次在shell中输出打印信息,shell依旧被占用,关闭shell则程序退出;这个时候我们可以使用ctrl+z命令,使得这个信息消失,可以做别的事情,但是关闭shell的时候程序依旧会退出,因此这些办法都不能解决问题。

          因此我们需要使用nohup命令来解决问题。

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

          仅仅使用nohup命令能保证程序忽略挂起信号一直运行,但是输出还是会在终端和默认的当前目录的 nohup.out输出,关闭终端的时候不会结束程序,这样不是很优雅,最好的方式是在nohup后面加上&,这样就是最佳的执行方式了。

    nohup和&的区别
    nohup : nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响运行,注意了nohup没有后台运行的意思;&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出。
    结合起来用就是
    nohup COMMAND &
    这样就能使命令永久的在后台执行

         nohup command > myout.file 2>&1 &

    在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。

    三、Linux中的一些系统变量的含义

    1 $# ----传递给程序的总的参数数目  
    2 $? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。 
    3 $* ----传递给程序的所有参数组成的字符串,以("$1 $2...")的形式保存所有输入的命令行参数  
    4 $n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数。。,$0 ----当前程序的名称
    5 $@----以("$1""$2"...)的形式保存所有输入的命令行参数
    6 $$ ----本程序的(进程ID号)PID   
    7 $! ----上一个命令的PID
    8 $0 :保存程序名

    #!/bin/sh
    echo "number:$#"
    echo "scname:$0"
    echo "first :$1"
    echo "second:$2"
    echo "argume:$@"
    echo "show parm list:$*"
    echo "show process id:$$"
    echo "show precomm stat: $?"
  • 相关阅读:
    第1章 数据结构绪论
    收集的名言警句
    Asp.net MVC知识积累
    我的书单
    ASP.NET Web API
    贱人语录
    正则表达式入门
    Lucene 3.0
    Solr之java操作
    Elasticsearch
  • 原文地址:https://www.cnblogs.com/zyrblog/p/11044285.html
Copyright © 2011-2022 走看看