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: $?"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM