Linux進(jìn)程有2種啟動方式:1、手工啟動進(jìn)程,指的是由用戶輸入命令直接啟動一個(gè)進(jìn)程,根據(jù)所啟動的進(jìn)程類型和性質(zhì)的不同,其又可以細(xì)分為前臺啟動和后臺啟動兩種方式。2、調(diào)度啟動進(jìn)程(事先進(jìn)行設(shè)置,根據(jù)用戶要求,進(jìn)程可以自行啟動);Linux中任務(wù)可以被配置在指定的時(shí)間、日期或者系統(tǒng)平均負(fù)載量低于指定值時(shí)自動啟動。

本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
在 Linux 系統(tǒng)中,每個(gè)進(jìn)程都有一個(gè)唯一的進(jìn)程號(PID),方便系統(tǒng)識別和調(diào)度進(jìn)程。通過簡單地輸出運(yùn)行程序的程序名,就可以運(yùn)行該程序,其實(shí)也就是啟動了一個(gè)進(jìn)程。
總體來說,啟動一個(gè)進(jìn)程主要有 2 種途徑,分別是通過手工啟動和通過調(diào)度啟動(事先進(jìn)行設(shè)置,根據(jù)用戶要求,進(jìn)程可以自行啟動),手動啟動也可以分為前臺啟動與后臺啟動。
Linux手工啟動進(jìn)程
手工啟動進(jìn)程指的是由用戶輸入命令直接啟動一個(gè)進(jìn)程,根據(jù)所啟動的進(jìn)程類型和性質(zhì)的不同,其又可以細(xì)分為前臺啟動和后臺啟動兩種方式。
前臺啟動進(jìn)程
前臺啟動進(jìn)程是手工啟動進(jìn)程最常用的方式,因?yàn)楫?dāng)用戶輸入一個(gè)命令并運(yùn)行,就已經(jīng)啟動了一個(gè)進(jìn)程,而且是一個(gè)前臺的進(jìn)程,此時(shí)系統(tǒng)其實(shí)已經(jīng)處于一個(gè)多進(jìn)程的狀態(tài)(一個(gè)是 Shell 進(jìn)程,另一個(gè)是新啟動的進(jìn)程)。
實(shí)際上,系統(tǒng)自動時(shí)就有許多進(jìn)程悄悄地在后臺運(yùn)行,不過這里為了方便讀者理解,并沒有將這些進(jìn)程包括在內(nèi)。
當(dāng)我們前臺啟動一個(gè)進(jìn)程,并且進(jìn)程沒有退出時(shí),我們使用 ps 命令,就可以看到該進(jìn)程,比如,我們以前臺進(jìn)程的方式,運(yùn)行 top 命令,具體命令如下:
top
運(yùn)行后,終端輸出如下:

我們看到,此時(shí),我們以前臺的方式運(yùn)行了 top 進(jìn)程,現(xiàn)在,我們使用 ps 命令,查看該進(jìn)程,具體命令如下:
ps -elf |grep top
運(yùn)行后,終端輸出如下:

我們看到,我們使用了 ps 命令,可以看到正在運(yùn)行的 top 進(jìn)程,測試完畢,我們按下 q 退出 top 進(jìn)程。
后臺啟動進(jìn)程
進(jìn)程直接從后臺運(yùn)行,用的相對較少,除非該進(jìn)程非常耗時(shí),且用戶也不急著需要其運(yùn)行結(jié)果的時(shí)候,例如,用戶需要啟動一個(gè)需要長時(shí)間運(yùn)行的格式化文本文件的進(jìn)程,為了不使整個(gè) Shell 在格式化過程中都處于 “被占用” 狀態(tài),從后臺啟動這個(gè)進(jìn)程是比較明智的選擇。
從后臺啟動進(jìn)程,其實(shí)就是在命令結(jié)尾處添加一個(gè) “&” 符號。輸入命令并運(yùn)行之后,Shell 會提供給我們一個(gè)數(shù)字,此數(shù)字就是該進(jìn)程的進(jìn)程號。然后直接就會出現(xiàn)提示符,用戶就可以繼續(xù)完成其他工作,我們輸入以下代碼,以后臺運(yùn)行 top 命令,具體命令如下:
top &
運(yùn)行后,終端輸出如下:

我們看到,此時(shí),我們以后臺的方式運(yùn)行了 top 進(jìn)程,現(xiàn)在,我們使用 ps 命令,查看該進(jìn)程,具體命令如下:
ps -elf |grep top
運(yùn)行后,終端輸出如下:

我們看到,我們使用了 ps 命令,可以看到正在后臺運(yùn)行的 top 進(jìn)程,測試完畢,我們使用 kill 命令,殺掉正在后天運(yùn)行的 top 進(jìn)程,具體命令如下:
kill 25439
這里的 25439 是進(jìn)程 id,我們使用該命令,就可以殺死正在后臺運(yùn)行的進(jìn)程。
說明
以上介紹了手工啟動的兩種方式,實(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)然,如果是從后臺啟動,父進(jìn)程就不用等待子進(jìn)程了。
Linux系統(tǒng)調(diào)度啟動進(jìn)程
在 Linux 系統(tǒng)中,任務(wù)可以被配置在指定的時(shí)間、日期或者系統(tǒng)平均負(fù)載量低于指定值時(shí)自動啟動。
例如,Linux 預(yù)配置了重要系統(tǒng)任務(wù)的運(yùn)行,以便可以使系統(tǒng)能夠?qū)崟r(shí)被更新,系統(tǒng)管理員也可以使用自動化的任務(wù)來定期對重要數(shù)據(jù)進(jìn)行備份。
實(shí)現(xiàn)調(diào)度啟動進(jìn)程的方法有很多,例如通過 crontab、 at 等命令。
站長資訊網(wǎng)