程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

介紹一個python工程師必須掌握的 CentOS 命令,nohup

編輯:Python

️ 實戰背景

本篇博客為大家打來的是一個命令,如果未來你希望成為 Python 工程師,就一定會有該命令的場景,它經常出現在服務器端,這裡優先選擇 CentOS 系統。

本命令叫做 nohup,英文全稱叫做 no hangup,即不掛起,表示程序在系統後台補掛斷運行,即使我們退出終端,程序也不會終止運行。

補充一個知識點,HUP 是信號的意思,它是在終端被終止的時候向它所關聯的進程發送的信號,進程收到該信號就會終止運行。

如果你剛剛接觸 Python,那你需要了解一下本場景,在工作中,Python 工程師經常需要去服務器端運行腳本,代碼簡單且運行時間短的可以在終端直接運行,然後等待結束即可。但遇到耗時長,或者需要反復運行的代碼,我們需要讓其在後台運行,即退出終端程序不終端。
看到這裡,你就會發現,該場景和 nohup 的目標重合了。

nohup 命令,默認會輸出一個 nohup.out 在程序目錄,如果當前目錄 nohup 僅支持讀操作,會在 $HOME 目錄中重新創建文件。

nohup 命令基本格式

語法格式如下:

nohup command arguments &

其中參數說明如下:

  • command:待執行的命令;
  • arguments:參數,可以指定輸出文件;
  • &:讓命令在後台執行。

nohup 僅表示不掛起運行,& 是後台運行。

也可以使用:

nohup options

查看 CentOS 系統 nohup 版本,可以使用下述命令,例如橡皮擦服務端的版本為 8.22,你可以實測一下目標環境版本號。

nohup --versionnohup (GNU coreutils) 8.22Copyright (C) 2013 Free Software Foundation, Inc.

在正式學習前,准備一個測試腳本,即 Shell 版本的 Hello World!

#! /bin/bash# hello worldecho hello world

該腳本的執行命令是

bash hello.sh

將上述代碼在後台執行,使用如下代碼:

nohup bash hello.sh > hello.log 2>&1 &

其中 hello.log 表示的是日志文件,2>&1 表示將錯誤 2 重定向到標准輸出 &1,然後再重定向到 hello.log 文件中。

  • 0:stdin 標准輸入;
  • 1:stdout 標准輸出;
  • 2:stderr:標准錯誤輸出。

command >hello.log 是將 command 的輸出重定向到 hello.log 文件中,也就是輸出內容不打印到終端,而是輸出到 hello.log 文件中。
2>&1 是將標准錯誤重定向到標准輸出,而且標准輸出已被重定向到 hello.log 文件,即將標准出錯也輸出到 hello.log 文件中。

如果希望不輸出日志文件,可以使用如下命令:

nohup python3 demo.py > /dev/null 2>&1 &

擴展命令

使用 jobs 可以查看後台運行的程序:

jobs -l

得到結果如下所示:

[1]+ 運行中 nohup python3 demo.py > demo.log 2>&1 &

後台程序重新展示到前台,使用 fg,此時使用 ctrl+z 可以暫停任務到後台,使用 bg 將後台任務繼續運行。

如果要停止後台程序,可以使用 ps 命令先查詢出其 pid 號碼,然後使用下述命令刪除:

kill -9 pid


右下角有個大拇指,點贊的漂亮加倍
你正在閱讀 【夢想橡皮擦】 的博客
閱讀完畢,可以點點小手贊一下
發現錯誤,直接評論區中指正吧
橡皮擦的第 621 篇原創博客


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved