0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux操作系統(tǒng)后臺(tái):&與nohup的執(zhí)行命令用法

如意 ? 來源:良許Linux ? 作者:良許 ? 2020-10-08 11:46 ? 次閱讀

大家可能有這樣的體驗(yàn):某個(gè)程序運(yùn)行的時(shí)候,會(huì)產(chǎn)生大量的log,但實(shí)際上我們只想讓它跑一下而已,log暫時(shí)不需要或者后面才有需要。所以在這樣的情況下,我們希望程序能夠在后臺(tái)進(jìn)行,也就是說,在終端上我們看不到它所打出的log。為了實(shí)現(xiàn)這個(gè)需求,我們介紹以下幾種方法。

我們以下面一個(gè)test程序來模擬產(chǎn)生大量log的程序,這個(gè)程序每隔1秒就會(huì)打印一句“Hello world!”:

Linux操作系統(tǒng)后臺(tái):&與nohup的執(zhí)行命令用法

現(xiàn)在,我們想要一個(gè)清靜的世界,終端上不要有大量的log出現(xiàn),我們要求test程序在后臺(tái)運(yùn)行。

##&##

這種方法很簡(jiǎn)單,就是在命令之后加個(gè)“&”符號(hào)就可以了,如下:

。/test &

這樣一來,test程序就在后臺(tái)運(yùn)行了。但是,這樣處理還不夠,因?yàn)檫@樣做雖然程序是在后臺(tái)運(yùn)行了,但log依然不停的輸出到當(dāng)前終端。因此,要讓終端徹底的清靜,還應(yīng)將log重定向到指定的文件:

。/test 》》 out.txt 2》&1 &

2》&1是指將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,于是標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出都重定向到指定的out.txt文件中,從此終端徹底清靜了。

但是這樣做要注意,如果Test程序需要從標(biāo)準(zhǔn)輸入接收數(shù)據(jù),它就會(huì)在那死等,不會(huì)再往下運(yùn)行。所以需要從標(biāo)準(zhǔn)輸入接收數(shù)據(jù),那這種方法最好不要使用。

那現(xiàn)在程序在后臺(tái)運(yùn)行了,我們?cè)趺凑业剿??很?jiǎn)單,有兩種方法:

1. jobs命令

jobs命令可以查看當(dāng)前有多少在后臺(tái)運(yùn)行。

jobs -l

此命令可顯示所有任務(wù)的PID,jobs的狀態(tài)可以是running, stopped, Terminated。但是如果任務(wù)被終止了(kill),shell 從當(dāng)前的shell環(huán)境已知的列表中刪除任務(wù)的進(jìn)程標(biāo)識(shí)。

2. ps命令

ps aux | grep test

##nohup命令##

在命令的末尾加個(gè)&符號(hào)后,程序可以在后臺(tái)運(yùn)行,但是一旦當(dāng)前終端關(guān)閉(即退出當(dāng)前帳戶),該程序就會(huì)停止運(yùn)行。那假如說我們想要退出當(dāng)前終端,但又想讓程序在后臺(tái)運(yùn)行,該如何處理呢?

實(shí)際上,這種需求在現(xiàn)實(shí)中很常見,比如想遠(yuǎn)程到服務(wù)器編譯程序,但網(wǎng)絡(luò)不穩(wěn)定,一旦掉線就編譯就中止,就需要重新開始編譯,很浪費(fèi)時(shí)間。

在這種情況下,我們就可以使用nohup命令。nohup就是不掛起的意思( no hang up)。該命令的一般形式為:

nohup 。/test &

如果僅僅如此使用nohup命令的話,程序的輸出會(huì)默認(rèn)重定向到一個(gè)nohup.out文件下。如果我們想要輸出到指定文件,可另外指定輸出文件:

nohup 。/test 》 myout.txt 2》&1 &

這樣一來,多管齊下,既使用了nohup命令,也使用了&符號(hào),同時(shí)把標(biāo)準(zhǔn)輸出/錯(cuò)誤重定向到指定目錄下。

使用了nohup之后,很多人就這樣不管了,其實(shí)這樣有可能在當(dāng)前賬戶非正常退出或者結(jié)束的時(shí)候,命令還是自己結(jié)束了。所以在使用nohup命令后臺(tái)運(yùn)行命令之后,需要使用exit正常退出當(dāng)前賬戶,這樣才能保證命令一直在后臺(tái)運(yùn)行。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11215

    瀏覽量

    208741
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6698

    瀏覽量

    123147
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    678

    瀏覽量

    21966
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux find命令用法

    可以很肯定地說,find 命令Linux 后臺(tái)開發(fā)人員必須熟知的操作之一,除非您使用的是 Windows Server。
    發(fā)表于 10-12 11:27 ?556次閱讀

    Linux命令中“!”操作符的用法

    Linux中的'!'符號(hào)或操作符可以用作邏輯否定運(yùn)算符,也可以用于在歷史記錄中獲取命令并進(jìn)行修改或運(yùn)行以前執(zhí)行過的命令。
    發(fā)表于 07-05 10:07 ?1421次閱讀

    nohup命令后臺(tái)運(yùn)行程序的用途和語法

    nohup命令后臺(tái)運(yùn)行程序
    發(fā)表于 04-19 10:34

    linux的程序后臺(tái)執(zhí)行

    1. 執(zhí)行命令后加 & 符號(hào),缺點(diǎn)客戶端關(guān)了,也會(huì)停止執(zhí)行 后臺(tái)執(zhí)行:php cli.phpadmin/index&
    發(fā)表于 07-15 06:34

    遠(yuǎn)程執(zhí)行后臺(tái)程序問題

    大佬們,我linux ssh遠(yuǎn)程后臺(tái)執(zhí)行一個(gè)jar 退出終端程序就掉了,使用的命令nohup java路徑 -jar jar程序 &
    發(fā)表于 11-11 15:59

    了解Android操作系統(tǒng)和Chrome操作系統(tǒng)

    :該工具僅適用于基于MIPS/X86/ARM(高級(jí)的設(shè)備嵌入式Linux系統(tǒng)上的RISC機(jī)器。1、在更新過程中不應(yīng)關(guān)閉模塊,否則可能對(duì)模塊造成很大的損壞。2、在Android操作系統(tǒng)上,您應(yīng)該在升級(jí)華為之前停止ril進(jìn)程模塊。
    發(fā)表于 11-04 08:37

    Linux操作系統(tǒng)

    linux的教學(xué)內(nèi)容1 、Linux概述 2 、Linux操作系統(tǒng)安裝3、 Linux的內(nèi)核 4 、Li
    發(fā)表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統(tǒng)</b>

    CAD中如何快速重復(fù)執(zhí)行命令?

    快速重復(fù)執(zhí)行命令主要是靠鼠標(biāo)右鍵或者是鍵盤上的空格以及上下方向鍵。 輸入OP命令打開選項(xiàng)對(duì)話框,點(diǎn)用戶系統(tǒng)配置選項(xiàng)卡自定義右鍵單擊按鈕,默認(rèn)模式下無論是否選定對(duì)象,單
    發(fā)表于 10-23 17:04 ?1611次閱讀

    LINUX操作系統(tǒng)的安裝與Linux常用文件命令

    LINUX操作系統(tǒng)的安裝與Linux常用文件命令說明。
    發(fā)表于 06-02 17:45 ?3次下載

    Linux操作系統(tǒng)的CP命令源代碼匯總

    Linux操作系統(tǒng)的CP命令源代碼匯總
    發(fā)表于 08-04 16:08 ?4次下載

    如何使用nohup命令后臺(tái)運(yùn)行進(jìn)程

    nohup命令用于運(yùn)行程序或者命令,并忽略所有中斷信號(hào)SIGHUP。SIGHUP是當(dāng)前控制終端關(guān)閉時(shí)發(fā)送到進(jìn)程的信號(hào)。
    的頭像 發(fā)表于 12-05 16:25 ?1780次閱讀

    如何用paramiko登陸服務(wù)器并執(zhí)行命令

    paramiko是用來遠(yuǎn)程執(zhí)行命令的模塊,
    的頭像 發(fā)表于 03-03 15:27 ?966次閱讀
    如何用paramiko登陸服務(wù)器并<b class='flag-5'>執(zhí)行命令</b>

    Linux系統(tǒng)維護(hù)命令用法

    Linux有很多命令,每個(gè)命令基本可以用一篇文章介紹,本文僅簡(jiǎn)單總結(jié)一些常用系統(tǒng)維護(hù)命令用法
    的頭像 發(fā)表于 04-17 14:57 ?995次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>維護(hù)<b class='flag-5'>命令</b>的<b class='flag-5'>用法</b>

    linux常用命令用法

    Linux是一種開源的操作系統(tǒng),它以穩(wěn)定、高效和安全的特點(diǎn)受到廣大用戶的喜愛。掌握Linux的常用命令及其用法對(duì)于
    的頭像 發(fā)表于 11-17 09:47 ?615次閱讀

    總結(jié)linux命令行的主要用法

    Linux命令行是一種在Linux操作系統(tǒng)中通過文本界面來執(zhí)行指令和管理系統(tǒng)的方式。它提供了豐富
    的頭像 發(fā)表于 11-17 10:19 ?606次閱讀