Linux運維:使用nohup&實現進程後台運行

一、nohup是什麼

nohup是Linux系統中自帶的命令,能夠將一個指定的命令或腳本執行在後台,並不受終端的關閉影響。即使終端關閉或斷開網絡連接,進程仍然在後台運行。

基本語法:nohup Command &

nohup command &  

//使用實例:  
nohup ./test.sh &  

二、使用場景

在日常生產中,我們經常需要執行一些比較耗時的操作,比如大量文件的拷貝、大數據量的備份等。由於這些操作比較耗費時間,如果不使用nohup命令,就需要等待終端命令的執行結果;而使用nohup命令後,進程將後台運行,不影響我們的其他操作,也不會因為終端關閉而停止。

三、實例演示

以備份數據庫為例演示nohup的使用。

1、先創建一個用於備份的腳本:

#!/bin/bash
database=demo
backup_path=/opt/backup/mysqldump
time=`date +%Y%m%d_%H%M%S`
suffix=".sql"
dumpfilename=$backup_path/$database-$time$suffix
/usr/bin/mysqldump -u root $database > $dumpfilename

2、執行備份腳本:

sh mysql_backup.sh 
dumpfile saved at /opt/backup/mysqldump/demo-20211211_132803.sql

3、修改腳本使用nohup命令後台執行:

nohup sh mysql_backup.sh &

//執行後返回類似以下信息:
[1] 6599
nohup: ignoring input and appending output to 'nohup.out'

4、將nohup命令輸出到指定文件:

nohup sh mysql_backup.sh > /opt/backup/log/mysql_backup.log 2>&1 &

四、注意事項

1、當耗時較長的進程運行時,使用nohup命令後,在原始目錄下會出現一個nohup.out文件。這個文件是nohup自動生成的,用來存儲輸出到終端的信息。如果你不想輸出到該文件中,可以使用“>”符號將輸出重定向到其他文件中。

2、nohup命令一般用於長時間運行的任務,如備份、上傳、下載等命令。在運行耗時較短的命令時,反而容易出現問題(如滿足不了預期),而且這些問題比較難以排查。

3、nohup命令無法用於交互式進程,如SSH會話等。

五、總結

nohup命令是一個實用的Unix/Linux命令,可以在終端關閉後使進程繼續後台運行,解決了很多日常操作需求的問題。在使用nohup命令時,需要注意以上注意事項,可以更好的發揮nohup的作用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309385.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:31
下一篇 2025-01-04 19:31

相關推薦

  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • Java中的殭屍進程簡介與解決方法

    本文將對Java中的殭屍進程進行詳細闡述,並給出幾種解決方法。 一、殭屍進程的概念 在操作系統中,進程是指正在執行的程序。當一個進程創建了一個子進程,而該子進程完成了任務卻沒有被父…

    編程 2025-04-27
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 多線程和多進程的應用

    多線程和多進程是現代編程中常用的技術,可以提高程序的效率和性能。本文將從不同的角度對多線程和多進程進行詳細的介紹和應用。 一、多線程 vs 多進程 多線程和多進程都是為了實現程序並…

    編程 2025-04-27
  • Python多進程讀取數據

    本文將從多個方面詳細闡述在Python中如何通過多進程讀取數據,並給出完整的代碼示例。 一、多進程概述 在計算機科學中,進程是正在執行的程序實例。多進程是指計算機系統同時執行多個進…

    編程 2025-04-27
  • Spring調用超時,後台還在運行的解決方法

    本篇文章將從以下幾個方面詳細介紹Spring調用超時,後台還在運行的解決方法: 一、設置超時時間 通過設置超時時間可以確保Spring調用在一定時間內返回結果並結束,避免出現後台還…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變量

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變量。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • 進程a與進程b共享變量s1

    本文將從多個方面對進程a與進程b共享變量s1做詳細的闡述,並給出代碼示例。 一、定義全局變量s1 進程a與進程b共享變量s1,意味着s1是一個全局變量。在C語言中,可以使用關鍵字e…

    編程 2025-04-27

發表回復

登錄後才能評論