linux中創(chuàng)建進(jìn)程命令 linux 創(chuàng)建進(jìn)程及子進(jìn)程

Linux中啟動(dòng)進(jìn)程的方法有哪些?哪種更好用?

Linux手工啟動(dòng)進(jìn)程

為興寧等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及興寧網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、興寧網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

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

前臺(tái)啟動(dòng)進(jìn)程

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

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

假如啟動(dòng)一個(gè)比較耗時(shí)的進(jìn)程,然后再把該進(jìn)程掛起,并使用ps命令查看,就會(huì)看到該進(jìn)程在PS顯示列表中。將進(jìn)程掛起,指的是將前臺(tái)運(yùn)行的進(jìn)程放到后臺(tái),并且暫停其運(yùn)行。

后臺(tái)啟動(dòng)進(jìn)程

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

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

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

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

Linux調(diào)度啟動(dòng)進(jìn)程

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

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

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

第五十七章、linux中除了fork外還能用什么函數(shù)創(chuàng)建進(jìn)程

上一章我們用fork函數(shù)創(chuàng)建了進(jìn)程,也了解了進(jìn)程的一些知識(shí)

這一章呢我們來了解下另一個(gè)能夠創(chuàng)建進(jìn)程的函數(shù):vfork函數(shù)。

vfork函數(shù)的作用基本和fork函數(shù)類似,調(diào)用流程和返回值與fork函數(shù)完全相同。

那么fork和vfork有什么區(qū)別呢?

我們來看一下下面這幾段程序:

我們可以從中看到:

1、 vfork創(chuàng)建的子進(jìn)程會(huì)先運(yùn)行,可以說子進(jìn)程和附近陳的結(jié)果是確定的,fork先運(yùn)行那個(gè)不能確定

2、 vfork創(chuàng)建的進(jìn)程中父進(jìn)程和子進(jìn)程共享了全部變量(k)和局部變量(i)的數(shù)據(jù)

3、 因?yàn)関fork是子進(jìn)程先運(yùn)行,父進(jìn)程掛起,可以看到直至子進(jìn)程調(diào)用exec或則exit之后父子進(jìn)程的執(zhí)行次序不再有限制,因此,如果在子進(jìn)程調(diào)用exec或exit之前需要父進(jìn)程的進(jìn)一步活動(dòng),就會(huì)造成死鎖

4、 可以看到在不調(diào)用exec或exit時(shí),局部變量在父進(jìn)程中會(huì)出現(xiàn)不可預(yù)料的結(jié)果

5、 在子進(jìn)程調(diào)用了exec或exit后,子進(jìn)程后面的代碼并沒有運(yùn)行

linux進(jìn)入子進(jìn)程的命令是

linux是一個(gè) 多進(jìn)程 多用戶的操作系統(tǒng)

ps(顯示當(dāng)前進(jìn)程的狀態(tài))

ps -ef 查看當(dāng)前l(fā)inux 進(jìn)程

ps -ef | grep 'mysqld' 過濾mysql的進(jìn)程 (grep 過濾 ; | 管道符)

uid 用戶id

pid 進(jìn)程id

ppid 父進(jìn)程id

CMD 啟動(dòng)該進(jìn)程的命令

kill(刪除執(zhí)行中的進(jìn)程)

kill -9 : kill -9 1982

-9 最高級別的關(guān)閉進(jìn)程

小注:模擬運(yùn)行著進(jìn)程,可以使用tailf demo.txt ;ps -ef |grep ‘tailf’

面試:現(xiàn)在在linux上運(yùn)行著多個(gè)flask ,不確定有多少個(gè)進(jìn)程,請以簡短的命令,將這些進(jìn)程殺死?

ps -ef | grep 'flask' | grep -v 'grep' | awk '{print "kill -9" $2}' | sh

排除grep 批量找pid 命令執(zhí)行

(后臺(tái)運(yùn)行進(jìn)程)

crontab(定時(shí)任務(wù))

軟件安裝命令

rpm(管理安裝套件)

yum(Shell前端軟件包管理器)

Linux命令-查看進(jìn)程命令:pstree

查看進(jìn)程樹,ps aux查看進(jìn)程,如果進(jìn)程太多看起來很不方便,可以使用pstree以樹形方式顯示正在運(yùn)行的所有進(jìn)程 pstree -p 查看進(jìn)程樹 還是太多了,可以使用管道符進(jìn)行查找httpd(apa ...

Linux命令-終止進(jìn)程命令:kill

kill -l 查看進(jìn)程信號 常用信號 例如: 例子參見:Linux命令-查看進(jìn)程命令:pstree

linux ps查看進(jìn)程命令

linux ps查看進(jìn)程命令ps命令作用:將某個(gè)時(shí)間點(diǎn)的程序運(yùn)作情況擷取下來 實(shí)例: [root@linux ~]# ps aux [root@linux ~]# ps -lA [root@linux ...

Linux ps 命令查看進(jìn)程啟動(dòng)及運(yùn)行時(shí)間

Linux內(nèi)核中的Linux進(jìn)程是如何創(chuàng)建的?

前三個(gè)和最后一個(gè)是兩個(gè)類型。前三個(gè)主要是Linux用來創(chuàng)建新的進(jìn)程(線程)而設(shè)計(jì)的,exec()系列函數(shù)則是用來用指定的程序替換當(dāng)前進(jìn)程的所有內(nèi)容。所以exec()系列函數(shù)經(jīng)常在前三個(gè)函數(shù)使用之后調(diào)用,來創(chuàng)建一個(gè)全新的程序運(yùn)行環(huán)境。Linux用init進(jìn)程啟動(dòng)其他進(jìn)程的過程一般都是這樣的。

下面說fork、vfork和clone三個(gè)函數(shù)。這三個(gè)函數(shù)分別調(diào)用了sys_fork、sys_vfork、sys_clone,最終都調(diào)用了do_fork函數(shù),差別在于參數(shù)的傳遞和一些基本的準(zhǔn)備工作不同。可見這三者最終達(dá)到的最本質(zhì)的目的都是創(chuàng)建一個(gè)新的進(jìn)程。在這里需要明確一下,Linux內(nèi)核中沒有獨(dú)立的“線程”結(jié)構(gòu),Linux的線程就是輕量級進(jìn)程,換言之基本控制結(jié)構(gòu)和Linux的進(jìn)程是一樣的(都是通過struct task_struct管理)。

fork是最簡單的調(diào)用,不需要任何參數(shù),僅僅是在創(chuàng)建一個(gè)子進(jìn)程并為其創(chuàng)建一個(gè)獨(dú)立于父進(jìn)程的空間。fork使用COW(寫時(shí)拷貝)機(jī)制,并且COW了父進(jìn)程的??臻g。

vfork是一個(gè)過時(shí)的應(yīng)用,vfork也是創(chuàng)建一個(gè)子進(jìn)程,但是子進(jìn)程共享父進(jìn)程的空間。在vfork創(chuàng)建子進(jìn)程之后,父進(jìn)程阻塞,直到子進(jìn)程執(zhí)行了exec()或者exit()。vfork最初是因?yàn)閒ork沒有實(shí)現(xiàn)COW機(jī)制,而很多情況下fork之后會(huì)緊接著exec,而exec的執(zhí)行相當(dāng)于之前fork復(fù)制的空間全部變成了無用功,所以設(shè)計(jì)了vfork。而現(xiàn)在fork使用了COW機(jī)制,唯一的代價(jià)僅僅是復(fù)制父進(jìn)程頁表的代價(jià),所以vfork不應(yīng)該出現(xiàn)在新的代碼之中。在Linux的manpage中隊(duì)vfork有這樣一段話:It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics of vfork() as it will, in that case, be made synonymous to fork(2)."

clone是Linux為創(chuàng)建線程設(shè)計(jì)的(雖然也可以用clone創(chuàng)建進(jìn)程)。所以可以說clone是fork的升級版本,不僅可以創(chuàng)建進(jìn)程或者線程,還可以指定創(chuàng)建新的命名空間(namespace)、有選擇的繼承父進(jìn)程的內(nèi)存、甚至可以將創(chuàng)建出來的進(jìn)程變成父進(jìn)程的兄弟進(jìn)程等等。clone和fork的調(diào)用方式也很不相同,clone調(diào)用需要傳入一個(gè)函數(shù),該函數(shù)在子進(jìn)程中執(zhí)行。此外,clone和fork最大不同在于clone不再復(fù)制父進(jìn)程的??臻g,而是自己創(chuàng)建一個(gè)新的。

關(guān)于Linux命令的介紹,看看《linux就該這么學(xué)》,具體關(guān)于這一章地址3w(dot)linuxprobe/chapter-02(dot)html

本文題目:linux中創(chuàng)建進(jìn)程命令 linux 創(chuàng)建進(jìn)程及子進(jìn)程
文章源于:http://muchs.cn/article18/doeocgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、云服務(wù)器、ChatGPT、用戶體驗(yàn)、網(wǎng)站維護(hù)、營銷型網(wǎng)站建設(shè)

廣告

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

商城網(wǎng)站建設(shè)