當前位置:首頁 » 操作系統 » linux命令後台運行

linux命令後台運行

發布時間: 2023-09-08 01:40:25

1. linux後台執行命令:&和nohup的用法,確實很實用

當我們在終端或控制台工作時,可能不希望由於運行一個作業而佔住了屏幕,因為可能還有更重要的事情要做,比如閱讀電子郵件。對於密集訪問磁碟的進程,我們更希望它能夠在每天的非負荷高峰時間段運行(例如凌晨)。為了使這些進程能夠在後台運行,也就是說不在終端屏幕上運行,有幾種選擇方法可供使用。

& :當在前台運行某個作業時,終端被該作業占據;可以在命令後面加上& 實現後台運行。例如:sh test.sh &

適合在後台運行的命令有f i n d、費時的排序及一些s h e l l腳本。在後台運行作業時要當心:需要用戶交互的命令不要放在後台執行,因為這樣你的機器就會在那裡傻等。不過,作業在後台運行一樣會將結果輸出到屏幕上,干擾你的工作。如果放在後台運行的作業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個文件中:

這樣,所有的標准輸出和錯誤輸出都將被重定向到一個叫做out.file 的文件中罩核。

PS:當你成功地提交進程以後,就會顯示出一個進程號,可以用它來監控該進物猜掘程,或殺死它。(ps -ef | grep 進程號 或者 kill -9 進程號)

nohup:使用&命令後,作業被提交到後台運行,當前控制台兆陪沒有被佔用,但是一但把當前控制台關掉(退出帳戶時),作業就會停止運行。nohup命令可以在你退出帳戶之後繼續運行相應的進程。nohup就是不掛起的意思( no hang up)。該命令的一般形式為:

如果使用nohup命令提交作業,那麼在預設情況下該作業的所有輸出都被重定向到一個名為nohup.out的文件中,除非另外指定了輸出文件:

使用了nohup之後,很多人就這樣不管了,其實這樣有可能在當前賬戶非正常退出或者結束的時候,命令還是自己結束了。所以在使用nohup命令後台運行命令之後,需要使用exit正常退出當前賬戶,這樣才能保證命令一直在後台運行。

ctrl + z :可以將一個正在前台執行的命令放到後台,並且處於暫停狀態。

Ctrl+c :終止前台命令。

jobs: 查看當前有多少在後台運行的命令。 jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。

2>&1解析:

擴展鏈接:如何寫高效的代碼,和代碼優化方法

2. linux 遠程主機後台運行任務 掛起腳本

背景 :工作需要,需要遠程式控制制主機使其斷開Xshell後也能一直運行。
關鍵字 :& ,nohup,腳本掛起。

在應用Unix/Linux時,我們一般想讓某個程序在後台運行,於是我們將常會用 & 在程序結尾來讓程序自動運行。

鍵入Ctrl + C,發出SIGINT信號,程序會繼續運行

方法一、輸入命令:jobs

方法二:輸入命令:ps

fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令

加在一個命令的最後,可以把這個命令放到後台執行,如

可以將一個正在前台執行的命令放到後台,並且處於暫停狀態。

查看當前有多少在後台運行的命令
jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。

將後台中的命令調至前台繼續運行。如果後台中有多個命令,可以用fg %jobnumber(是命令編號,不是進程號)將選中的命令調出。

將一個在後台暫停的命令,變成在後台繼續執行。如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出。

法子1:通過jobs命令查看job號(假設為num),然後執行kill %num
法子2:通過ps命令查看job的進程號(PID,假設為pid),然後執行kill pid
前台進程的終止:Ctrl+c

如果讓程序始終在後台執行,即使關閉當前的終端也執行(之前的&做不到),這時候需要nohup。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。
關閉中斷後,在另一個終端jobs已經無法看到後台跑得程序了,此時利用ps(進程查看命令)

如上所示:
nohup 和 & 組合了後台運行程序。
可以輸出到 out.log保存程序輸出,也可以輸出到/dev/null 即空設備,不保存輸出。

上面三種方式無論在nohup.out 或test.out都看不到數據結果,這是因為python執行有緩存輸出
解決

新的介面接入查看程序

使用&後台運行程序:

結果會輸出到終端
使用Ctrl + C發送SIGINT信號, 程序免疫
關閉session發送SIGHUP信號, 程序關閉

使用nohup運行程序:

結果默認會輸出到nohup.out
使用Ctrl + C發送SIGINT信號, 程序關閉
關閉session發送SIGHUP信號, 程序免疫
平日線上經常使用nohup和&配合來啟動程序:
同時免疫SIGINT和SIGHUP信號

同時,還有一個最佳實踐:
不要將信息輸出到終端標准輸出,標准錯誤輸出,而要用日誌組件將信息記錄到日誌里
nohup和&究竟有啥區別

3. Linux 後台啟動運行jar包

1、首先基本的運行 jar 包命令如下

這個命令會鎖定命令謹氏則窗口,當窗口關閉時,程序也就自動退出了祥棚,所以需要讓 jar 包後台運行。


2、後台啟動運核鏈行


3、指定輸出文件

如下,xxx.log 就是指定的輸出文件,如果不指定,默認在 jar 包所在目錄,創建 nohup.out 文件。

4. linux後台自動執行命令nohup與日誌查看

在linux上執行腳孫含瞎本,當退出頁面或電腦鎖屏後,腳本就停止執行了。對需要長時間運行的腳本非常不友好。

nohup(no hang up)則空老尺:可以讓程序不掛斷執行。
& :可以讓程序在後台執行。

「> nohup.log」: 表示將日誌輸出到nohup.log文件上。
2>&1:表示將正確日誌、錯誤日誌都輸出到正確日誌指定的文件(nohup.log文件)上。

5. Linux後台運行Python程序

第一種nohup命令來讓程序在後台運行

括弧內容表示可以將平時輸出到控制台中的內容重定向到*.log這個文件中,這個是可選的,如果沒有這個,則會默認輸出到nohup.out文件中。括弧後面你的&表示後台運行。
舉個例子:

第二種方法是寫一個腳本,假設我們定義了一個腳本run.sh

#!/bin/bash 是指此腳本使用/bin/bash來解釋執行下面的語句,其中cd是表示將當前目錄跳到所要運行文件所在目錄,然後python3 文件名.py則表示運行***python文件,當寫完該腳本後,執行以下命令來執行該腳本從而讓程序在後台運行。

通過 ps -ef|grep python3 命令可以查看後台運行的進程都有哪些

6. linux系統中掛起操作和強制結束操作(後台運行程序方法)

在linux系統中有這兩個命令 ctrl+z 和ctrl+c ,這兩個命令輸入之後看起來結果差不多,實質是不同的。

他們都有中斷命令的效果,但是作用是不一樣的。

ctrl+c是強制終止程序的執行並結束進程。而ctrl+z則只是中斷任務的執行,但該任務並沒有被結束。
它只是在進程中維持掛起的狀態,用戶可以使用fg/bg命令來繼續前台/後台執行該任務。fg命令會重啟
前台被中斷的任務,bg命令會把中斷的任務放到後台執行。

你也可以使用bg這樣的方法讓一個前台執行的任務切換到後台去執行。
也可以使用fg這樣的方法讓一個後台執行的任務切換到前台去執行。

還有一個最常用的方法是&
在一行命令的最後輸入&,可以讓這行命令放到後台去運行。

使用jobs命令查看當前有多少後台程序在運行。

熱點內容
requestdatapython 發布:2025-01-31 08:02:01 瀏覽:44
javades加密工具 發布:2025-01-31 07:54:04 瀏覽:244
電話如何配置ip 發布:2025-01-31 07:48:48 瀏覽:300
2021賓士e300l哪個配置性價比高 發布:2025-01-31 07:47:14 瀏覽:656
sqlserver2008光碟 發布:2025-01-31 07:32:13 瀏覽:578
sql查詢小時 發布:2025-01-31 07:23:00 瀏覽:423
新車鑒別時怎麼查看汽車配置 發布:2025-01-31 07:19:37 瀏覽:881
linux驅動程序開發 發布:2025-01-31 06:56:03 瀏覽:771
nlms演算法 發布:2025-01-31 06:55:56 瀏覽:900
結束伺服器怎麼操作 發布:2025-01-31 06:54:17 瀏覽:394