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: $?"
相關文章
相關標籤/搜索