国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學習啦 > 學習電腦 > 操作系統 > Linux教程 > linux程序后臺運行命令

    linux程序后臺運行命令

    時間: 佳洲1085 分享

    linux程序后臺運行命令

      在關閉終端后,有時候我們仍然需要程序在后臺繼續(xù)運行,那需要怎么做呢?下面由學習啦小編為大家整理了linux程序后臺運行命令的相關知識,希望大家喜歡!

      linux程序后臺運行命令詳解

      前置知識:xterm,console,tty,pts,pty的區(qū)別

      shell是直接和內核進行通信的東西

      xterm是一個軟件概念,可以通過這個程序連接到console從而控制主機,可以理解為cli形式的終端模擬器,而gnome-terminal,konsole就是gui形式的終端模擬器

      console是主機的控制臺,是一個物理概念。

      tty、pty、pts都是終端,是硬件或者設備概念。

      tty是所有終端設備的總稱

      pty是其中一類,偽終端,或者叫虛擬終端

      linux程序后臺運行命令一、“&” 命令行結尾法

      在Unix/Linux下如果想讓程序獨立終端運行,一般都是使用 & 在命令結尾來讓程序自動運行。(命令后可以不追加空格)

      打開gnome-terminal,執(zhí)行如下命令:

      delectate@delectate:~$ totem &

      [1] 8510

      delectate@delectate:~$

      有幾點需要注意:

      已經啟動的程序依然attach于當前pts,只有當前終端模擬器關閉(使用exit命令退出),進程自動被tty繼承。

      delectate@delectate:~$ ps -e | grep totem

      //程序已被以totem & 形式啟動,當前附在pts0上

      8819 pts/0 00:00:00 totem

      delectate@delectate:~$ ps -e | grep totem

      //pts0的模擬終端被exit命令關閉,totem自動附在tty

      8819 ? 00:00:00 totem

      delectate@delectate:~$

      具有debug輸出的進程,需要按enter鍵進行中斷當前debug輸出。但是如果程序持續(xù)進行printf,你將無法輸入任何命令。

      delectate@delectate:~$ vlc &

      [1] 8850

      delectate@delectate:~$ VLC media player 1.0.6 Goldeneye

      [0x8b998b0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.

      //enter pressed

      delectate@delectate:~$ //show a clean terminal now

      ** (:8850): CRITICAL **: giop_thread_request_push: assertion `tdata != NULL' failed

      //仍然在輸出數據……

      //關閉程序

      [1]+ Done vlc

      delectate@delectate:~$

      你無法記錄程序的debug輸出結果。

      只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續(xù)輸出信息而沒有出現 $ 或 #)

      linux程序后臺運行命令二、使用nohup命令

      nohup描述:Run COMMAND, ignoring hangup signals.(忽略任何中斷/掛起信號,使命令繼續(xù)執(zhí)行)

      但是當你嘗試使用命令:

    1
    nohup command

      時候卻會遇到不大不小的麻煩……

      delectate@delectate:~$ nohup vlc

      nohup: ignoring input and appending output to `nohup.out'

      是的,雖然它自動把debug信息記錄到nohup.out文件,但是你卻無法使用這個終端進行任何操作。

      所以你需要和第一個方法混用,即

      nohup command {option} &

      混用后,它會自動把你執(zhí)行的命令輸出結果記錄到權限為-rw——-,名為nohup.out的文件中。

      但是你仍然需要

      delectate@delectate:~$ nohup vlc &

      [1] 9045

      delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out'

      //在這里按一下回車或以ctrl+c以

      //show a clean terminal

      delectate@delectate:~$

      與使用 “&” 性質相同,當前啟動程序的終端如果沒有被關閉,已經啟動的程序附在pst上;如果終端被關閉,則自動附在tty。

      如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out。默認狀態(tài)下,nohup默認輸出到nohup.out文件,你也可以利用重定向來指定輸出文件:

      nohup command {option} > myout.file 2>&1 &

      只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續(xù)輸出信息而沒有出現 $ 或 #)

      擴展資料:其他相關命令

      jobs:查看當前有多少在后臺運行的命令

      fg:將后臺中的命令調至前臺繼續(xù)運行。如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)

      bg:將一個在后臺暫停的命令,變成繼續(xù)執(zhí)行。如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)

      殺死進程

      殺死已經啟動的程序和普通方式一樣:

      pkill -9 name

      killall name

      kill pid

      …

      命令應用:

      linux服務器掛機下載;啟動相關服務;linux服務器啟動進程(尤其是ssh登錄)

      我就曾經用

    1
    nohup aria2c -i downloadlist -m 0 -j 1 &

      從jsharer極享下載了不少動漫

    3622354