linux進程啟動命令 linux命令啟動進程的命令

Linux中如何啟動進程?進程調(diào)度命令有哪些?

Linux技術(shù)的發(fā)展引起了很多企業(yè)和個人的關(guān)注。市場對Linux運維的需求逐漸增加,學(xué)習(xí)Linux技術(shù)的人越來越多。在Linux運維中,進程是必須學(xué)習(xí)掌握的技能。那么Linux中如何啟動進程?常用的進程調(diào)度命令有哪些?

10年積累的成都網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有尉犁免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

執(zhí)行中的程序稱作進程。當(dāng)程序的可執(zhí)行文件存儲在存儲器中并運行時,每個進程將被動態(tài)分配系統(tǒng)資源、內(nèi)存、安全屬性和相關(guān)狀態(tài)。多個進程可以與同一個程序相關(guān)聯(lián),并在同一時間執(zhí)行,而不會相互干擾。操作系統(tǒng)將有效地管理和跟蹤所有正在運行的進程。

Linux中如何啟動進程?啟動進程的方法是什么?

手工啟動。用戶在輸入端發(fā)出命令,直接啟動進程。分為前臺啟動和后臺啟動。前臺啟動:直接在SHELL中輸入命令進行啟動。后臺啟動:啟動一個目前并不緊急的進程。

調(diào)度啟動。系統(tǒng)管理員根據(jù)系統(tǒng)資源和進程占用資源的情況,事先進行調(diào)度安排,指定任務(wù)運行的時間和場合,到時候系統(tǒng)會自動完成該任務(wù)。

常用的進程調(diào)度命令有哪些?

常用的進程調(diào)度命令有:at、batch、crontab。

以上便是關(guān)于“如何啟動或終止進程?常用的進程調(diào)度命令有哪些?”的相關(guān)介紹。想要成為一名優(yōu)秀的Linux運維工程師,需要掌握更多的Linux知識。

Linux中啟動進程的方法有哪些?哪種更好用?

Linux手工啟動進程

手工啟動進程指的是由用戶輸入命令直接啟動一個進程,根據(jù)所啟動的進程類型和性質(zhì)不同,又細分為前臺啟動和后臺啟動兩種。

前臺啟動進程

這是手工啟動進程最常用的方式,因為當(dāng)時輸入一個命令并運行,就已經(jīng)啟動了一個進程,而且是一個前臺的進程,此時系統(tǒng)其實已經(jīng)處于一個多進程的狀態(tài),一個是shell進程,另一個是新啟動的進程。

實際上,系統(tǒng)自動時就有許多進程悄悄地在后臺運行,不過為了方便閱讀,并沒有將這些進程包括在內(nèi)。

假如啟動一個比較耗時的進程,然后再把該進程掛起,并使用ps命令查看,就會看到該進程在PS顯示列表中。將進程掛起,指的是將前臺運行的進程放到后臺,并且暫停其運行。

后臺啟動進程

進程直接從后臺運行,用的相對比較少,除非該進程非常耗時,且用戶也不急著需要其運行結(jié)果的時候,例如,用戶需要啟動一個需要長時間運行的格式化文本文件的進程,為了不使整個shell在格式化過程中都處于被占用狀態(tài),從后臺啟動這個進程是比較明智的選擇。

從后臺啟動進程,其實就是在命令結(jié)尾處添加一個符號。輸入命令并運行之后,shell會提供給我們一個數(shù)字,此數(shù)字就是該進程的進程號。然后直接就會出現(xiàn)提示符,用戶就可以繼續(xù)完成其他工作。

手工啟動的2種方式,實際上它們有個共同的特點,就是新進程都是由當(dāng)前shell這個進程產(chǎn)生的,換句話說,是shell創(chuàng)建了新進程,于是稱這種關(guān)系為進程間的父子關(guān)系,其中shell是父進程,新進程是子進程。

且一個父進程可以有多個子進程,通常子進程結(jié)束后才能繼續(xù)父進程;當(dāng)然,如果是從后臺啟動,父進程就不用等待子進程了。

Linux調(diào)度啟動進程

在Linux系統(tǒng)中,任務(wù)可以被配置在指定的時間、日期或者系統(tǒng)平均負(fù)載量低于指定值時自動啟動。

例如,Linux預(yù)配置了重要系統(tǒng)任務(wù)的運行,以便可以使系統(tǒng)能夠?qū)崟r被更新,系統(tǒng)管理員也可以使用自動化的任務(wù)來定期對重要數(shù)據(jù)進行備份。

實現(xiàn)調(diào)度啟動進程的方法有很多,比如通過crontab、cat等命令。

linux系統(tǒng)下如何從后臺啟動進程?

你得查看后臺存在的進程 #jobs

#fg

#bg

兩個命令是調(diào)入前臺和后臺的命令

在命令后面加上一個

比如:

rm -rf /tmp/

Linux 技巧:讓進程在后臺可靠運行的幾種方法

WeiboGoogle+用電子郵件發(fā)送本頁面

我們經(jīng)常會碰到這樣的問題,用 telnet/ssh 登錄了遠程的 Linux 服務(wù)器,運行了一些耗時較長的任務(wù), 結(jié)果卻由于網(wǎng)絡(luò)的不穩(wěn)定導(dǎo)致任務(wù)中途失敗。如何讓命令提交后不受本地關(guān)閉終端窗口/網(wǎng)絡(luò)斷開連接的干擾呢?下面舉了一些例子, 您可以針對不同的場景選擇不同的方式來處理這個問題。

nohup/setsid/

場景:

如果只是臨時有一個命令需要長時間運行,什么方法能最簡便的保證它在后臺穩(wěn)定運行呢?

hangup 名稱的來由

在 Unix 的早期版本中,每個終端都會通過 modem 和系統(tǒng)通訊。當(dāng)用戶 logout 時,modem 就會掛斷(hang up)電話。 同理,當(dāng) modem 斷開連接時,就會給終端發(fā)送 hangup 信號來通知其關(guān)閉所有子進程。

解決方法:

我們知道,當(dāng)用戶注銷(logout)或者網(wǎng)絡(luò)斷開時,終端會收到 HUP(hangup)信號從而關(guān)閉其所有子進程。因此,我們的解決辦法就有兩種途徑:要么讓進程忽略 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 即可,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤缺省會被重定向到 nohup.out 文件中。一般我們可在結(jié)尾加上""來將命令同時放入后臺運行,也可用"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),并不是當(dāng)前終端的進程 ID。請將此例與nohup 例中的父 ID 做比較。

3。

這里還有一個關(guān)于 subshell 的小技巧。我們知道,將一個或多個命名包含在“()”中就能讓這些命令在子 shell 中運行中,從而擴展出很多有趣的功能,我們現(xiàn)在要討論的就是其中之一。

當(dāng)我們將""也放入“()”內(nèi)之后,我們就會發(fā)現(xiàn)所提交的作業(yè)并不在作業(yè)列表中,也就是說,是無法通過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),并不是當(dāng)前終端的進程 ID。因此并不屬于當(dāng)前終端的子進程,從而也就不會受到當(dāng)前終端的 HUP 信號的影響了。

當(dāng)前標(biāo)題:linux進程啟動命令 linux命令啟動進程的命令
本文來源:http://muchs.cn/article32/ddcsesc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站、ChatGPT、云服務(wù)器、用戶體驗響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作