linux_前臺,后臺進程

*在用戶訪問端口時,操作系統會形成對應的session,在其的內部進一步形成bash等進程?

*一個會話只有一個前臺進程,可以有多個后臺進程,前臺與后臺進程的區別在于誰擁有鍵盤的使用權

*前臺與后臺進程都可以訪問顯示器但是后臺無法訪問標準輸入獲取數據

下面介紹相關接口

?示例代碼

前臺運行

后臺運行?

查看后臺進程:

在 Linux 系統中, jobs ?是一個常用的 shell 命令,用于查看當前終端會話中在后臺運行或暫停的作業(進程)?

后臺調前臺:

- ?fg?:不加參數時,默認操作 ?jobs??列表里帶 ?+??標記(當前默認)的后臺作業,將其移到前臺執行。

- ?fg %作業號?:指定作業號(通過 ?jobs??查看的 ?[n]??編號),精準調對應后臺作業到前臺,例 ?fg %1??調作業號為 ?1??的任務。

??恢復暫停任務:
按 ?Ctrl + Z??暫停前臺任務 → 用 ?bg? n??讓它后臺繼續,或 ?fg %n??直接前臺恢復執行。?

觀察圖片

ppid及pid我們已經很熟悉,pgid(進程組id) sid(session id)則較為陌生。

進程組可以簡單理解為:把多個相關的進程(比如一個程序啟動后自己創建的子進程,或共同完成一項任務的多個進程)打包成的一個“小組”。

這個“小組”有兩個關鍵特點:

- 每個小組有唯一的編號(進程組ID),通常用組里第一個創建的進程(組長)的ID來標識。
- 對這個小組操作(比如發停止信號),組里所有進程都會“收到”并響應。

比如你用命令啟動一個程序,程序運行時又開了幾個子進程,這些進程就自動組成一個進程組,方便統一管理(比如關閉終端時一起結束,或用快捷鍵統一暫停)。

遠端登陸session退出時后臺進程理論也退出,但是,遠端情況實際上后臺進程沒有退出終止,而是托孤給了操作系統,但是仍然會受用戶登陸影響其屬性,想讓后臺進程不受到任何用戶登錄和注銷的影響,就需要用到守護進程,原理是后臺切會話

接口setsid:

setsid??是 Unix/Linux 系統中的一個系統調用(也有同名命令),核心作用是創建一個新的會話(session),并讓調用它的進程成為這個會話的“領頭進程”(session leader),同時脫離原有的進程組和控制終端。

簡單理解

可以把它看作是讓進程“獨立門戶”的操作:

- 原本進程可能屬于某個進程組,受某個終端(比如命令行窗口)控制(終端關閉時,進程可能被終止)。
- 調用 ?setsid??后,進程會脫離原來的進程組,自己成立一個新的會話,并且不再有控制終端。這意味著它不會被終端的關閉、退出信號影響,適合作為后臺服務(如守護進程)運行。

關鍵效果

1.?進程成為新會話的領頭進程;
2.?進程成為一個新進程組的組長;
3.?進程與原控制終端徹底脫離(不再接收終端的信號,比如 ?Ctrl+C??不會終止它)。

典型用途

最常見的是創建“守護進程”(daemon),比如服務器程序。例如,后臺運行的 Web 服務器、數據庫服務等,通過 ?setsid??脫離終端控制,即使關閉啟動它的終端,進程也能繼續運行。

命令行中也可以直接使用 ?setsid??命令,比如 ?setsid sleep 1000?,這個 ?sleep??進程會脫離當前終端,在后臺獨立運行。

手撕代碼如下?

分析

2:后臺切會話時,不能是前臺任務向繪畫轉變,因此我們需要保證,這個轉會話的進程不能是第1個創建的,因此我們以紫進程進行切換就可以保證不是第1個進程進行切換?

4:在進程的運行過程中,可能會出現許多的輸出打印情況,而這些輸出的內容,我們不需要他在顯示器上呈現,因而我們就需要重載文件描述符0.1.2,將這些內容輸進垃圾桶中,及/dev/null

系統接口

“daemon”(守護進程),它是運行在操作系統后臺的一種特殊進程,主要特點和作用如下:

核心特點

- 后臺運行:不依賴終端,啟動后在后臺持續工作,用戶通常看不到它的界面。
- 自動啟動:很多守護進程會隨系統啟動而運行,比如服務器的網絡服務進程。
- 獨立穩定:脫離終端控制,即使關閉啟動它的終端,也能繼續運行,且通常會長期穩定工作,除非被手動終止或系統關閉。


常見用途

- 提供系統服務:比如 Linux 中的 ?sshd?(遠程登錄服務)、?httpd?(網頁服務器),Windows 中的“服務”(如自動更新服務)。
- 處理后臺任務:比如定時任務調度(?crond?)、日志收集、網絡數據監聽等。

簡單說,守護進程就像“隱形的服務員”,在后臺默默處理系統或應用的各種任務,保證服務持續可用。?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93517.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring data mongodb 入門使用手冊

<!--pom.xml引入依賴--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>文檔映射類Student.java import lombok.Data; import lombok.NoArgsCons…

Fastjson2常用操作大全:對象、字符串、集合、數組、Map與JSON互轉實戰

高性能&#xff1a; 核心解析器和生成器經過深度優化&#xff0c;性能遠超許多同類庫。 功能豐富&#xff1a; 支持標準JSON、JSONPath查詢、泛型處理、日期格式化、自定義序列化/反序列化等。 易用性&#xff1a; API 設計簡潔直觀&#xff0c;JSON 工具類提供了最常用的 toJS…

大模型——字節Coze重磅開源!Dify何去何從

大模型——字節Coze重磅開源!Dify何去何從 想必很多人盼了很久,就在昨晚,字節Coze終于開源了!Coze Studio 是字節跳動新一代 AI Agent 開發平臺扣子(Coze)的開源版本。 提供 AI Agent 開發所需的全部核心技術:Prompt、RAG、Plugin、Workflow,使得開發者可以聚焦創造 A…

NaVid——基于單目RGB捕獲的視頻讓VLM規劃「連續環境中VLN」的下一步:無需地圖/里程計/深度信息(含MP3D/R2R/RxR,及VLN-CE的詳解)

前言 因為我司「七月在線」準備于25年7月底復現下NaVILA&#xff0c;而在研究NaVILA的過程中&#xff0c;注意到了這個NaVid 雖然NaVid目前已經不是VLN sota了&#xff0c;但其首次展示了VLM在無需地圖、里程計或深度輸入的情況下&#xff0c;能夠實現優秀的導航性能且對后來…

【Vue2】結合chrome與element-ui的網頁端條碼打印

所有文章都是免費查看的&#xff0c;如果有無法查看的情況&#xff0c;煩請聯系我修改哈~ 序言 為什么要做這個呢&#xff1f;因為所需要的條碼打印功能比較簡單&#xff0c;符合需要即可&#xff0c;但是呢網上查看了發現并沒有合適的開源項&#xff0c;其他成熟的軟件收費又超…

循環神經網絡——動手學深度學習7

環境&#xff1a;PyCharm python3.8 &#x1f449;【循環神經網絡】(recurrent neural network&#xff0c;RNN) RNN通過 引入狀態變量存儲過去的信息和當前的輸入&#xff0c;從而可以確定當前的輸出。狀態變量捕捉序列的時序依賴&#xff0c;是處理文本、時間序列等數據的…

Java面試寶典:MySQL8新特性底層原理

一、降序索引的革新 1.1 降序索引的核心概念 MySQL 8.0 實現了真正的降序索引(Descending Index) 支持,這是數據庫引擎層面的重大改進: 存儲引擎支持:僅 InnoDB 存儲引擎支持降序索引,且僅適用于 B+Tree 索引結構 語法顯式聲明:通過 DESC 關鍵字顯式指定字段的排序方向…

前端-html+CSS基礎到高級(三)html基礎和開發工具

一、html語法規范什么是注釋?在同學上課學習時&#xff0c;我們會在書本段落間記錄內容的注解&#xff0c;方便下次看到此處理解。問題&#xff1a;我們在書本段落間記錄下的注解是為了給誰看的&#xff1f; 下次的閱讀課本者&#xff08;自己&#xff09;。程序員在寫代碼時也…

-Dspring.output.ansi.enabled=ALWAYS 設置彩色日志不生效

-Dspring.output.ansi.enabledALWAYS 設置彩色日志不生效 問題原因&#xff1a;使用的自定義的 logback-spring.xml日志需要改一下 <?xml version"1.0" encoding"UTF-8"?> <configuration><appender name"STDOUT" class"c…

C# 判斷語句深度解析

C# 判斷語句深度解析 引言 在編程領域,C# 是一種廣泛使用的面向對象的編程語言,常用于構建各種應用程序,從桌面到移動應用,再到網站服務。C# 的核心特性之一是其強大的控制流機制,其中包括條件判斷。本文將深入探討 C# 中的判斷語句,包括它們的類型、使用場景以及最佳實…

Ambari 3.0.0 全網首發支持 Ubuntu 22!

本月我們團隊帶來了一個重磅進展&#xff1a;Ambari 3.0.0 全網首發支持 Ubuntu 22&#xff01; 經過數月籌備和持續迭代&#xff0c;終于讓 Ambari 以及大數據基礎組件可以順利運行在 Ubuntu 22 上。 需求來源&#xff1a;用戶呼聲決定研發方向 年初有位小伙伴私信我們&#x…

Android Camera capture

序 想了下還是擠擠時間&#xff0c;把相機這基礎流程寫完吧&#xff0c;前面每篇寫的都還是挺耗時的&#xff08;就是累了&#xff0c;想偷偷懶&#xff0c;哈哈哈哈&#xff09;&#xff0c;那接著前面的幾篇文章&#xff0c;給這一些列寫上一個中規中矩的結局吧~ APP層 以下是…

落霞歸雁思維框架應用(十) ——在職考研 199 管綜 + 英語二 30 周「順水行舟」上岸指南

落霞歸雁思維框架應用&#xff08;十&#xff09; ——在職考研 199 管綜 英語二 30 周「順水行舟」上岸指南 CSDN 首發 | 作者&#xff1a;落霞歸雁 | 2025-08-01 開場&#xff1a;把 199英二 從“兩座大山”變成“兩條順流” 在職黨最怕兩句話&#xff1a; “管綜題量太大…

自動調優 vLLM 服務器參數(實戰指南)

1. 操作步驟 該腳本能夠自動搜索最優的vLLM服務器參數組合&#xff08;包括max-num-seqs和max-num-batched-tokens&#xff09;&#xff0c;在滿足端到端延遲和前綴緩存命中率等要求的同時&#xff0c;實現吞吐量最大化。 1.1 前提條件 克隆 vLLM 并切到目標分支git clone http…

【騰訊云】EdgeOne免費版實現網站加速與安全防護

作為一名個人站長&#xff0c;我深知在有限的預算下如何為網站提供穩定、快速的服務是關鍵。騰訊云推出了 EdgeOne免費版 https://edgeone.ai/zh/redemption已經有一段時間。結合我的實際體驗&#xff0c;我想從國內備案域名的角度&#xff0c;分享一下如何利用這個工具提升網站…

修改gitlab默認的語言

文章目錄網上的方法1. 采用數據庫觸發器的方法2. 登錄pg庫2.1 查看表2.2 創建function2.3 創建觸發器2.4 修改歷史數據網上的方法 網上修改/opt/gitlab/embedded/service/gitlab-rails/config/application.rb的方法&#xff0c;我試了&#xff0c;沒生效&#xff0c;沒進一步研…

ndk { setAbiFilters([‘armeabi-v7a‘, “arm64-v8a“]) }

deepseek回答&#xff1a; 好的&#xff0c;我現在需要解釋build.gradle中這段ndk配置代碼的含義。首先&#xff0c;用戶提供的代碼片段是&#xff1a; ndk { setAbiFilters([‘armeabi-v7a’, “arm64-v8a”]) } 我的第一步是理解每個部分的作用。ndk塊在Android構建文件中用于…

k8s 1.30 通過helm部署ingress-controller-4.12.1

一、基本概念k8s集群中&#xff0c;ingress作為集群內服務對外暴漏的訪問接入點&#xff0c;幾乎承載著集群內服務訪問的所有流量。ingress是k8s中的一個資源對象&#xff0c;用來管理集群外部訪問集群內部服務的方式。可以通過ingress資源來配置不同的轉發規則&#xff0c;從而…

Gitee:本土開發者生態的崛起與數字化轉型新引擎

Gitee&#xff1a;本土開發者生態的崛起與數字化轉型新引擎 在數字化轉型浪潮席卷全球的當下&#xff0c;代碼托管平臺已從單純的代碼存儲工具演變為企業技術創新的基礎設施。作為中國領先的一站式DevOps平臺&#xff0c;Gitee以其本地化優勢和創新功能矩陣&#xff0c;正重新定…

Servlet HTTP 狀態碼詳解

Servlet HTTP 狀態碼詳解 引言 在Web開發中,HTTP狀態碼是服務器響應客戶端請求時返回的狀態信息。這些狀態碼有助于開發者了解請求處理的結果,并針對不同的狀態碼進行相應的處理。Servlet作為Java Web開發的重要技術之一,理解HTTP狀態碼對于開發高質量的Web應用至關重要。…