Linux技術的發展引起了很多企業和個人的關注。市場對Linux運維的需求逐漸增加,學習Linux技術的人越來越多。在Linux運維中,進程是必須學習掌握的技能。那么Linux中如何啟動進程?常用的進程調度命令有哪些?
10年積累的成都網站建設、做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有尉犁免費網站建設讓你可以放心的選擇與我們合作。
執行中的程序稱作進程。當程序的可執行文件存儲在存儲器中并運行時,每個進程將被動態分配系統資源、內存、安全屬性和相關狀態。多個進程可以與同一個程序相關聯,并在同一時間執行,而不會相互干擾。操作系統將有效地管理和跟蹤所有正在運行的進程。
Linux中如何啟動進程?啟動進程的方法是什么?
手工啟動。用戶在輸入端發出命令,直接啟動進程。分為前臺啟動和后臺啟動。前臺啟動:直接在SHELL中輸入命令進行啟動。后臺啟動:啟動一個目前并不緊急的進程。
調度啟動。系統管理員根據系統資源和進程占用資源的情況,事先進行調度安排,指定任務運行的時間和場合,到時候系統會自動完成該任務。
常用的進程調度命令有哪些?
常用的進程調度命令有:at、batch、crontab。
以上便是關于“如何啟動或終止進程?常用的進程調度命令有哪些?”的相關介紹。想要成為一名優秀的Linux運維工程師,需要掌握更多的Linux知識。
Linux手工啟動進程
手工啟動進程指的是由用戶輸入命令直接啟動一個進程,根據所啟動的進程類型和性質不同,又細分為前臺啟動和后臺啟動兩種。
前臺啟動進程
這是手工啟動進程最常用的方式,因為當時輸入一個命令并運行,就已經啟動了一個進程,而且是一個前臺的進程,此時系統其實已經處于一個多進程的狀態,一個是shell進程,另一個是新啟動的進程。
實際上,系統自動時就有許多進程悄悄地在后臺運行,不過為了方便閱讀,并沒有將這些進程包括在內。
假如啟動一個比較耗時的進程,然后再把該進程掛起,并使用ps命令查看,就會看到該進程在PS顯示列表中。將進程掛起,指的是將前臺運行的進程放到后臺,并且暫停其運行。
后臺啟動進程
進程直接從后臺運行,用的相對比較少,除非該進程非常耗時,且用戶也不急著需要其運行結果的時候,例如,用戶需要啟動一個需要長時間運行的格式化文本文件的進程,為了不使整個shell在格式化過程中都處于被占用狀態,從后臺啟動這個進程是比較明智的選擇。
從后臺啟動進程,其實就是在命令結尾處添加一個符號。輸入命令并運行之后,shell會提供給我們一個數字,此數字就是該進程的進程號。然后直接就會出現提示符,用戶就可以繼續完成其他工作。
手工啟動的2種方式,實際上它們有個共同的特點,就是新進程都是由當前shell這個進程產生的,換句話說,是shell創建了新進程,于是稱這種關系為進程間的父子關系,其中shell是父進程,新進程是子進程。
且一個父進程可以有多個子進程,通常子進程結束后才能繼續父進程;當然,如果是從后臺啟動,父進程就不用等待子進程了。
Linux調度啟動進程
在Linux系統中,任務可以被配置在指定的時間、日期或者系統平均負載量低于指定值時自動啟動。
例如,Linux預配置了重要系統任務的運行,以便可以使系統能夠實時被更新,系統管理員也可以使用自動化的任務來定期對重要數據進行備份。
實現調度啟動進程的方法有很多,比如通過crontab、cat等命令。
你得查看后臺存在的進程 #jobs
#fg
#bg
兩個命令是調入前臺和后臺的命令
在命令后面加上一個
比如:
rm -rf /tmp/
Linux 技巧:讓進程在后臺可靠運行的幾種方法
WeiboGoogle+用電子郵件發送本頁面
我們經常會碰到這樣的問題,用 telnet/ssh 登錄了遠程的 Linux 服務器,運行了一些耗時較長的任務, 結果卻由于網絡的不穩定導致任務中途失敗。如何讓命令提交后不受本地關閉終端窗口/網絡斷開連接的干擾呢?下面舉了一些例子, 您可以針對不同的場景選擇不同的方式來處理這個問題。
nohup/setsid/
場景:
如果只是臨時有一個命令需要長時間運行,什么方法能最簡便的保證它在后臺穩定運行呢?
hangup 名稱的來由
在 Unix 的早期版本中,每個終端都會通過 modem 和系統通訊。當用戶 logout 時,modem 就會掛斷(hang up)電話。 同理,當 modem 斷開連接時,就會給終端發送 hangup 信號來通知其關閉所有子進程。
解決方法:
我們知道,當用戶注銷(logout)或者網絡斷開時,終端會收到 HUP(hangup)信號從而關閉其所有子進程。因此,我們的解決辦法就有兩種途徑:要么讓進程忽略 HUP 信號,要么讓進程運行在新的會話里從而成為不屬于此終端的子進程。
1. nohup
nohup 無疑是我們首先想到的辦法。顧名思義,nohup 的用途就是讓提交的命令忽略 hangup 信號。讓我們先來看一下 nohup 的幫助信息:
NOHUP(1)??????????????????????? User Commands??????????????????????? NOHUP(1)?NAME???????nohup - run a command immune to hangups, with output to a non-tty?SYNOPSIS???????nohup COMMAND [ARG]...???????nohup OPTION?DESCRIPTION???????Run COMMAND, ignoring hangup signals.????????--help display this help and exit????????--version??????????????output version information and exit
可見,nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 即可,標準輸出和標準錯誤缺省會被重定向到 nohup.out 文件中。一般我們可在結尾加上""來將命令同時放入后臺運行,也可用"filename 21"來更改缺省的重定向文件名。
[root@pvcent107 ~]# nohup ping [1] 3059nohup: appending output to `nohup.out'[root@pvcent107 ~]# ps -ef |grep 3059root????? 3059?? 984? 0 21:06 pts/3??? 00:00:00 ping ????? 3067?? 984? 0 21:06 pts/3??? 00:00:00 grep 3059[root@pvcent107 ~]#
2。setsid
nohup 無疑能通過忽略 HUP 信號來使我們的進程避免中途被中斷,但如果我們換個角度思考,如果我們的進程不屬于接受 HUP 信號的終端的子進程,那么自然也就不會受到 HUP 信號的影響了。setsid 就能幫助我們做到這一點。讓我們先來看一下 setsid 的幫助信息:
SETSID(8)???????????????? Linux Programmer’s Manual???????????????? SETSID(8)?NAME???????setsid - run a program in a new session?SYNOPSIS???????setsid program [ arg ... ]?DESCRIPTION???????setsid runs a program in a new session.
可見 setsid 的使用也是非常方便的,也只需在要處理的命令前加上 setsid 即可。
[root@pvcent107 ~]# setsid ping [root@pvcent107 ~]# ps -ef |grep ???? 31094???? 1? 0 07:28 ???????? 00:00:00 ping ???? 31102 29217? 0 07:29 pts/4??? 00:00:00 grep [root@pvcent107 ~]#
值得注意的是,上例中我們的進程 ID(PID)為31094,而它的父 ID(PPID)為1(即為 init 進程 ID),并不是當前終端的進程 ID。請將此例與nohup 例中的父 ID 做比較。
3。
這里還有一個關于 subshell 的小技巧。我們知道,將一個或多個命名包含在“()”中就能讓這些命令在子 shell 中運行中,從而擴展出很多有趣的功能,我們現在要討論的就是其中之一。
當我們將""也放入“()”內之后,我們就會發現所提交的作業并不在作業列表中,也就是說,是無法通過jobs來查看的。讓我們來看看為什么這樣就能躲過 HUP 信號的影響吧。
[root@pvcent107 ~]# (ping )[root@pvcent107 ~]# ps -ef |grep ???? 16270???? 1? 0 14:13 pts/4??? 00:00:00 ping ???? 16278 15362? 0 14:13 pts/4??? 00:00:00 grep [root@pvcent107 ~]#
從上例中可以看出,新提交的進程的父 ID(PPID)為1(init 進程的 PID),并不是當前終端的進程 ID。因此并不屬于當前終端的子進程,從而也就不會受到當前終端的 HUP 信號的影響了。
當前標題:linux進程啟動命令 linux命令啟動進程的命令
本文來源:http://vcdvsql.cn/article32/ddcsesc.html
成都網站建設公司_創新互聯,為您提供網站設計、自適應網站、ChatGPT、云服務器、用戶體驗、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯