Linux命令之nohup詳解

nohup

  • 什麼是nohuphtml

    nohup 全稱:no hang up(不掛起)。也就是說,當前交互命令行退出的時候,程序還在運行。linux

  • 語法android

    nohup Command [Arg...] [ &]
    最後的" &":表示後臺運行,不霸佔交互命令行
    若是不將 nohup 命令的輸出重定向,輸出將附加到當前目錄的 nohup.out 文件中。
    若是當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。
    若是沒有文件能建立或打開以用於追加,那麼 Command 參數指定的命令不可調用。
    若是標準錯誤是一個終端,那麼把指定的命令寫給標準錯誤的全部輸出做爲標準輸出重定向到相同的文件描述符。
    
    nohup命令提交做業時,指定輸出文件:
    
    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文件中。
    
    如:./startup.sh 2>&1 | tee startup.log
    表示將執行startup.sh腳本後到標準輸出和標準錯誤輸出內容寫入到startup.log文件中。tee 默認是覆蓋的方式寫入文件中,加-a表示追加。
    
    最終解釋:表示命令執行後退出交互命令行也不掛起,經過最後一個 &,表示後臺運行,不霸佔交互命令行,同時將標準輸出和標準錯誤輸出合併到myout.file文件中。
    複製代碼
  • 怎麼關閉此進程git

    ps -ef |grep 關鍵字  |awk '{print $2}'|xargs kill -9
    
    |grep 關鍵字:經過關鍵字過濾
    |awk 'print $2' :以默認分隔符(空格)分割每行的列,只輸入每行第二列的內容,即進程ID
    |xargs:將全部行數據轉爲單行,並以空格分開,而後做爲kill的參數
    kill -9:完全殺死進程,進程參數爲|xargs拼接的。
    
    舉例:
    一、使用命令:"ps -ef" 獲取全部進程
    二、經過管道結合grep命令實現關鍵字過濾,如獲取包含關鍵字"goole"進程:
    命令:ps -ef |grep google
    結果:
        501   370     1   0 五09下午 ??         0:00.13 /Applications/Google Chrome.app/Contents/Versions/73.0.3683.103/Google Chrome Framework.framework/Helpers/crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --database=/Users/hejunbin/Library/Application Support/Google/Chrome/Crashpad --metrics-dir=/Users/hejunbin/Library/Application Support/Google/Chrome --url=https://clients2.google.com/cr/report --annotation=channel= --annotation=plat=OS X --annotation=prod=Chrome_Mac --annotation=ver=73.0.3683.103 --handshake-fd=8
        501 28410 28409   0 10:39下午 ??         0:04.32 /Users/hejunbin/Library/Android/sdk/emulator/emulator64-crash-service -pipe com.google.AndroidEmulator.CrashService.28409 -ppid 28409 -data-dir /tmp/android-hejunbin/c40cfa4e-4abb-4b7a-8790-77cbdfd5ddb0
        501 35764 34208   0  1:34下午 ttys005    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn google
    三、經過管道加awk命令只顯示進程的ID:
    命令:ps -ef |grep google |awk '{print $2}'
    結果:
        370
        28410
        35798
    四、經過管道加xargs命令將這些進程ID轉爲ps的進程ID集。
    命令:ps -ef |grep google |awk '{print $2}' |xargs
    結果:370 28410 35900
    五、利用xargs命令調用ps命令,完全殺死指定的進程
    命令:ps -ef |grep google |awk '{print $2}' |xargs ps -9
    複製代碼
  • ps命令:列出進程shell

    參數以下:
    -e 顯示全部進程。
    -f 全格式。
    -h 不顯示標題。
    -l 長格式。
    -w 寬輸出。
    複製代碼
  • awk命令:文本處理工具數組

    awk支持對記錄和字段的處理,其中對字段的處理是grep和sed不能實現的,這也是awk優於兩者的緣由之一。
    在awk中,缺省的狀況下老是將文本文件中的一行視爲一個記錄,而將一行中的某一部分做爲記錄中的一個字段。
    爲了操做這些不一樣的字段,awk借用shell的方法,用1,2,3...這樣的方式來順序地表示行(記錄)中的不一樣字段。
    特殊地,awk用0表示整個行(記錄)。
    
    不一樣的字段之間是用稱做分隔符的字符分隔開的。系統默認的分隔符是空格。
    awk容許在命令行中用-F re的形式來改變這個分隔符。
    
    事實上,awk用一個內置的變量RS來記憶這個分隔符。
    awk中有好幾個這樣的內置變量,例如:
        記錄分隔符變量RS
        當前工做的記錄數NR
    
    這些內置的變量能夠在awk程序中引用或修改,例如,你能夠利用NR變量在模式匹配中指定工做範圍,也能夠經過修改記錄分隔符RS讓一個特殊字符而不是換行符做爲記錄的分隔符。
    
    例:顯示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段:
    awk -F % 'NR>=7,NR<=15 {print $1 $3 $7}' myfile
    
    awk提供了有不少內置變量,其中ARG相關變量是文本處理中比較經常使用的。
    ARGC:命令行參數個數(不包括awk的選項和awk的程序內容)。
    ARGIND:當前正在處理的ARGV中的文件的索引值(同時處理多個文件時會用到)。
    ARGV:命令行參數序列數組,下標從0開始。
    複製代碼
  • xargs命令:xargs 是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。bash

    xargs 能夠將管道或標準輸入(stdin)數據轉換成命令行參數,也可以從文件的輸出中讀取數據。
    
    xargs 也能夠將單行或多行文本輸入轉換爲其餘格式,例如多行變單行,單行變多行。
    
    xargs 默認的命令是 echo,這意味着經過管道傳遞給 xargs 的輸入將會包含換行和空白,不過經過 xargs 的處理,換行和空白將被空格取代。
    
    xargs 是一個強有力的命令,它可以捕獲一個命令的輸出,而後傳遞給另一個命令。
    
    之因此能用到這個命令,關鍵是因爲不少命令不支持|管道來傳遞參數,而平常工做中有有這個必要,因此就有了 xargs 命令,例如:
    
    find /sbin -perm +700 |ls -l       #這個命令是錯誤的
    find /sbin -perm +700 |xargs ls -l   #這樣纔是正確的
    xargs 通常是和管道一塊兒使用。
    
    命令格式:
    
    somecommand |xargs -item  command
    參數:
    
    -a file 從文件中讀入做爲sdtin
    -e flag ,注意有的時候可能會是-E,flag必須是一個以空格分隔的標誌,當xargs分析到含有flag這個標誌的時候就中止。
    -p 當每次執行一個argument的時候詢問一次用戶。
    -n num 後面加次數,表示命令在執行的時候一次用的argument的個數,默認是用全部的。
    -t 表示先打印命令,而後再執行。
    -i 或者是-I,這得看linux支持了,將xargs的每項名稱,通常是一行一行賦值給 {},能夠用 {} 代替。
    -r no-run-if-empty 當xargs的輸入爲空的時候則中止xargs,不用再去執行了。
    -s num 命令行的最大字符數,指的是 xargs 後面那個命令的最大命令行字符數。
    -L num 從標準輸入一次讀取 num 行送給 command 命令。
    -l 同 -L。
    -d delim 分隔符,默認的xargs分隔符是回車,argument的分隔符是空格,這裏修改的是xargs的分隔符。
    -x exit的意思,主要是配合-s使用。。
    -P 修改最大的進程數,默認是1,爲0時候爲as many as it can ,這個例子我沒有想到,應該平時都用不到的吧。
    複製代碼
  • kill命令:殺掉進程app

    kill [-s signal_name] pid ...
    kill -l [exit_status]
    kill -signal_name pid ...
    kill -signal_number pid ...
    
    signal_number 經常使用參數:
    Some of the more commonly used signals:
    
    1       HUP (hang up)
    2       INT (interrupt)
    3       QUIT (quit)
    6       ABRT (abort)
    9       KILL (non-catchable, non-ignorable kill) 完全殺死進程
    14      ALRM (alarm clock)
    15      TERM (software termination signal)
    
    實例:kill -9 123456  (完全殺死進程ID爲123456的進程)
    複製代碼

參考文檔

www.runoob.com/linux/linux…svn

相關文章
相關標籤/搜索