1. 程式人生 > 其它 >linux命令 nohup python -u 12.py > test.txt 2>&1 &

linux命令 nohup python -u 12.py > test.txt 2>&1 &

技術標籤:linux

linux命令 nohup python -u 12.py > test.txt 2>&1 &

nohup

  1. 用途:不掛斷地執行命令
  2. 語法: nohup Command [ Arg … ] [ & ]
    無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。
    如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $HOME/nohup.out 檔案中。
     如果沒有檔案能建立或開啟以用於追加,那麼 Command 引數指定的命令不可呼叫。
  3. 退出狀態:該命令返回下列出口值:
    ① 126 可以查詢但不能呼叫 Command 引數指定的命令。   
    ② 127 nohup 命令發生錯誤或不能查詢由 Command 引數指定的命令。   
    ③ 否則,nohup 命令的退出狀態是 Command 引數指定命令的退出狀態

&

  1. 用途:在後臺執行

    一般nohup 和 & 一起使用
    例如:nohup python -u 12.py > test.txt 2>&1 &
    利用 jobs -l 檢視後臺程序

在這裡插入圖片描述
jobs命令只看當前終端生效的,關閉終端後,在另一個終端jobs已經無法看到後臺跑得程式了,此時利用ps(程序檢視命令)

ps -ef 是用標準的格式顯示程序的、其格式如下
在這裡插入圖片描述

  • UID //使用者ID、但輸出的是使用者名稱
  • PID //程序的ID
  • PPID //父程序ID
  • C //程序佔用CPU的百分比
  • STIME //程序啟動到現在的時間
  • TTY //該程序在那個終端上執行,若與終端無關,則顯示? 若為pts/0等,則表示由網路連線主機程序。
  • CMD //命令的名稱和引數

ps aux 是用BSD的格式來顯示、其格式如下
在這裡插入圖片描述

  • 同ps -ef 不同的如下

  • USER //使用者名稱

  • %CPU //程序佔用的CPU百分比

  • %MEM //佔用記憶體的百分比

  • VSZ //該程序使用的虛擬記憶體量(KB)

  • RSS //該程序佔用的固定記憶體量(KB)(駐留中頁的數量)

  • STAT //程序的狀態

  • START //該程序被觸發啟動時間

  • TIME //該程序實際使用CPU執行的時間

    其中STAT狀態位常見的狀態字元有

    • D //無法中斷的休眠狀態(通常 IO 的程序);
    • R //正在執行可中在佇列中可過行的;
    • S //處於休眠狀態;
    • T //停止或被追蹤;
    • W //進入記憶體交換 (從核心2.6開始無效);
    • X //死掉的程序 (基本很少見);
    • Z //殭屍程序;
    • < //優先順序高的程序
    • N //優先順序較低的程序
    • L //有些頁被鎖進記憶體;
    • s //程序的領導者(在它之下有子程序);
    • l //多執行緒,克隆執行緒(使用 CLONE_THREAD, 類似 NPTL pthreads);
    • + //位於後臺的程序組;

一個命令的執行伴隨著三種輸入輸出

  • 標準輸入(stdin):預設指向鍵盤的輸入,可以通過標準輸入重定向<,讓標準輸入指向檔案輸入
  • 標準輸出(stdout) :指命令產生的正常的輸出,如echo aaa,標準輸出預設指向終端顯示器,可以通過輸出重定向>,讓標準輸出重定向到檔案
  • 標準錯誤輸出(stderr):指命令產生的錯誤資訊的輸出,如執行了不存在的命令t,標準錯誤輸出也預設指向終端顯示器,同樣可以通過輸出重定向>,讓標準錯誤輸出重定向到檔案

所謂的輸出重定向到檔案,是指把預設輸出到終端顯示器的資訊寫入到指定檔案

標準輸入,標準輸出,標準錯誤輸出的檔案描述符分別時0,1,2。

 command>file 2>&1 &
  • > 表示輸出重定向

  • file 表示要重定向的檔名

  • 2和1 分別指標準錯誤輸出和標準輸出,

  • 而&1表示標準輸出的引用,所以2>&1是指把標準錯誤輸出重定向到標準輸出的引用,即也重定向到file

#!/bin/sh

t       //t命令不存在,會產生標準錯誤輸出
date     //會產生標準輸出