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

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

1、前言

    在Ubuntu中有的程序启动须要执行改程序./bin目录下的文件,而且启动以后这个shell就不能使用和关闭了,很是的麻烦,所以就有了相应的命令来解决这个问题。shell

2、nohup和&

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

      所以咱们须要使用nohup命令来解决问题。spa

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 & 3d

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

3、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: $?"
相关文章
相关标签/搜索