日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Linux如何設置進程的父進程(linux設置父進程)

在Linux操作系統中,進程是系統中最基本的執(zhí)行單元之一。一個程序如果要在Linux系統中執(zhí)行,必須通過創(chuàng)建進程進行。此時,每一個進程都有一個父進程,父進程可以通過某些方式來管理或監(jiān)控其子進程。本文將介紹如何設置一個進程的父進程。

米林ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

父進程與子進程

我們需要明確父進程與子進程之間的關系。在Linux系統中,每個進程在創(chuàng)建時,都將獲得一個唯一的PID(進程標識符)。當一個進程(父進程)創(chuàng)建另一個進程(子進程)時,父進程將向操作系統申請一段內存區(qū)域,用來存儲子進程的各種信息,如進程ID、進程名稱、父進程ID等。此時,子進程運行時,其父進程ID就是父進程的PID。

如何設置進程的父進程

在Linux系統中,一個進程可以使用系統調用fork()創(chuàng)建一個子進程。fork()函數會返回兩次,一次是在父進程中,另一次是在子進程中。父進程中的返回值是子進程的PID,而子進程中的返回值總是0。所以要判斷進程是否是父進程,只需判斷fork()的返回值即可。

一開始,每個進程都有一個父進程,如果需要修改進程的父進程,可以使用系統調用setpgid()。該函數的原型為:

int setpgid(pid_t pid, pid_t pgid);

其中,pid表示進程的ID,pgid表示將要設置的進程組ID。調用該函數后,進程pid的父進程ID將會被設置為pgid進程所在的進程組的ID。

示例代碼:

“`c

#include

#include

int mn() {

pid_t pid;

pid = fork();

if(pid == 0){

//子進程

setpgid(0, 0);

}else if(pid > 0){

//父進程

setpgid(pid, pid);

}

while(1){

sleep(1);

}

return 0;

}

“`

在上面的代碼中,父進程調用setpgid(pid, pid)將子進程的父進程ID設置為子進程的PID。

在子進程中,調用setpgid(0, 0)將其父進程ID設置為進程組ID相同的進程。

成都網站建設公司-創(chuàng)新互聯為您提供網站建設、網站制作、網頁設計及定制高端網站建設服務!

linux如何設置程序開機啟動后臺運行?

如運行一個火狐瀏覽器 直接在終端:虧哪高firefox &

jobs查看在后臺執(zhí)行的進程

fg %n將后臺執(zhí)行進程n調到前臺執(zhí)行,n表示jobnumber(通過jobs查看的進程編號,而非pid)

ctrl+z將在前臺執(zhí)行的進程,放到后臺并掛起

bg %n將在后臺緩晌掛起的進程,繼續(xù)執(zhí)行

ctrl+c前臺進程終止

kill %n殺掉后臺運行的進程,n表示jobnumber(通過jobs查看的進程編號,而非pid)命令介紹可查看“Linux命令大全銷尺”。

有些時候,我們需要在終端啟動一個程序,并使之運行——但是如果關閉終端,那么這個程序也就隨著關閉了。那么有沒有什么方法在關閉終端后,讓已經從這個終端啟動的程序繼續(xù)運行呢?有以下方法

1.讓linux忽略終端的hung up 信號,不關閉進程;

2.讓此進程變州肆信為終端的非子進程。

方法一:

在終端輸入命令:

# ./pso > pso.file 2>&1 &

解釋:將pso直接放在后臺運行,并把終端輸出存放在當前目錄下的pso.file文件中。

當客戶端關機后重新登陸服務器后,直接查看pso.file文件就可看執(zhí)行結果(命

令:#cat pso.file )。

或者

在終端輸入命令:

# nohup ./pso > pso.file 2>&1 &

解釋:nohup就是不掛起的意思,將pso直接放在后臺運行,并把終端輸出存放在當前

目錄下的pso.file文件中。當客戶端關機后重新登陸服務器后,直接查看pso.file

文件就可看執(zhí)行結果(命令:#cat pso.file )。

方法二:

實現方案就是nohup命令。

例如要啟動jboss,可以nohup ./run.sh &。這樣就可以了,結尾的“&”符號表示后臺啟動jboss,從而不影響繼續(xù)運行其他命令。

但這樣有一個問題,nohup命令雖然可以讓linux“放過”這個進程,但是nohup會同時把進程的控制臺輸出重定向到nohup.txt下(默認是這個文件),當然可以重定向為其他的文件,但是輸出總會有的。

如果jboss運行很長時間,而且如果有很多控制臺輸出的話,nohup.txt文件就會變的很大很大。

通常項目中的日志都會輸出到特定的日志文件或者輸出到

數據庫

中,也就是說控制臺的輸出對于程序的意義不大,那么可不可以拋棄掉這些輸出呢?答案雹消是肯定的。

這里講解一下linux的重定向(注意,是linux的重定向,不是針對nohup)。

0、1和2分別表示標準輸入、標準輸出和標準錯誤信息輸出,可以用來指定需要重定向的標準輸入或輸出。

在一般使用時,默認的是標準輸出,既1.當我們需要特殊用途時,可以使用其他標號。例如,將某個程序的錯誤信息輸出到log文件中:./program 2>log。這樣標準輸出還是在屏幕上,但是錯誤信息會輸出到log文件中。

另外,也可以實現0,1,2之間的重定向。2>&1:將錯誤信息重定向到標準輸出。

Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。

結合nohup,我們可以這樣

nohup ./run.sh >/dev/null &

這是最簡單的一種方式,既保證了程序能夠一直后臺執(zhí)行,又能冊輪保證不會產生太大的nohup.txt文件。

方法三:

利用的linux的一個機制,讓程序在subshell中執(zhí)行,方法很簡單,將命令用括號() 括起來即可。

ps -ef | grep test

可以看到run.sh的父進程為1,不是當前終端了,這樣就能忽略hung up信號。

當然linux還可以動態(tài)的讓程序后臺運行或不被hung up 信號關閉,例如disown命令,setid命令等。

方法四:

如果是使用Ubuntu的話,你可以利用CTRL+ALT+T組合鍵打開終端。當然你也可以使用超級鍵(Windows鍵)打開Dash,搜索“TERM”,然后點擊“Term”圖標來打開終端窗口。

對于其他的桌面環(huán)境來說,例如XFCE、KDE、LXDE、Cinnamon以及MATE,你可以在菜單中找到終端。有些環(huán)境會在??繖诨蛘呙姘迳厦姘K端圖標。

通常情況下,你可以在終端里面直接輸入應用程序名來啟動一個應用程序。比如說,你可以通過輸入“firefox”來啟動Firefox。

在終端啟動應用程序的好處是,你可以包含一些額外的參數。

例如,你可以通過下列命令來打開一個Firefox瀏覽窗口,然后利用默認的搜索引擎搜索相關信息:

firefox -search “l(fā)inux.cn”

你可能會注意到,如果你啟動Firefox,程序打開以后,回到了終端窗口控制,這就意味著你可以繼續(xù)在終端進行工作。

通常情況下,如果你在終端啟動了應用程序,控制會切換到新啟動的應用程序,只有程序被關閉以后才會重新切換到終端控制。這是因為你在前臺啟動了這個程序。

如果要在Linux終端打開應用程序并且返回終端控制,那么你需要將應用程序啟動為后臺進程。

和下面所列的命令一樣,我們可以通過增加一個(&)符號,將應用程序在后臺啟動。

libreoffice &

譯者注:如果需要加參數的話,記得把&符號放在最后。

譯者注:一般情況下,關閉終端時,在這個終端啟動的后臺程序也會被終止,要使終端關閉以后,后臺程序依然保持執(zhí)行可以使用下列命令

nohup command &

如果應用程序目錄沒有安裝在PATH變量包含的目錄里面的話,我們就沒有辦法直接通過應用程序名來啟動程序,必須輸入應用程序的整個路徑來啟動它。

/path/to/yourprogram &

如果你不確定程序輸入哪個Linux目錄結構的話,可以使用find或者location命令來定位它。

可以輸入下列符號來找到一個文件:

find /path/to/start/from -name programname

例如,你可以輸入下列命令來找到Firefox:

find / -name firefox

命令運行的結果會嗖的一下輸出一大堆,別擔心,你也可以通過less或者more來進行分頁查看。

find / -name firefox | more find / -name firefox | less

當find命令查找到沒有權限訪問的文件夾時,會報出一條拒絕訪問錯誤,

你可以通過sudo命令來提示權限。當然,如果你沒有安裝sudo的話,就只能切換到一個擁有權限的用戶了。

sudo find / -name firefox | more

如果你知道你要查找的文件在你的當前目錄結構中,那么你可以使用點來代替斜杠:

sudo find . -name firefox | more

你可能需要sudo來提升權限,也可能根本就不需要,如果這個文件在你的主目錄里面,那么就不需要使用sudo。

有些應用程序則必須要提升權限才能運行,否則你就會得到一大堆拒絕訪問錯誤,除非你使用一個具有權限的用戶或者使用sudo提升權限。

這里有個小竅門。如果你運行了一個程序,但是它需要提升權限來操作,輸入下面命令試試:

sudo !!

方法五:

在Unix/Linux下如果想讓程序獨立終端運行,一般都是使用 & 在命令結尾來讓程序自動運行。(命令后可以不追加空格)

打開gnome-terminal,執(zhí)行如下命令:

delectate@delectate:~$ totem & 8510delectate@delectate:~$ 有幾點需要注意:

已經啟動的程序依然attach于當前pts,只有當前終端模擬器關閉(使用exit命令退出),進程自動被tty繼承。delectate@delectate:~$ ps -e | grep totem //程序已被以totem & 形式啟動,當前附在pts0上8819 pts/:00:00 totemdelectate@delectate:~$ ps -e | grep totem //pts0的模擬終端被exit命令關閉,totem自動附在tty8819 ?:00:00 totemdelectate@delectate:~$

具有debug輸出的進程,需要按enter鍵進行中斷當前debug輸出。但是如果程序持續(xù)進行printf,你將無法輸入任何命令。delectate@delectate:~$ vlc & 8850delectate@delectate:~$ VLC media player 1.0.6 Goldeneye main libvlc: Running vlc with the default interface. Use ‘cvlc’ to use vlc without interface.//enter presseddelectate@delectate:~$ //show a clean terminal now** (:8850): CRITICAL **: giop_thread_request_push: assertion `tdata != NULL’ failed//仍然在輸出數據……//關閉程序+ Done vlcdelectate@delectate:~$

你無法記錄程序的debug輸出結果。

只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續(xù)輸出信息而沒有出現 $ 或 #)

使用nohup命令:

nohup描述:Run COMMAND, ignoring hangup signals.(忽略任何中斷/掛起信號,使命令繼續(xù)執(zhí)行)

但是當你嘗試使用命令:

1nohup command

時候卻會遇到不大不小的麻煩……

delectate@delectate:~$ nohup vlcnohup: ignoring input and appending output to `nohup.out’

是的,雖然它自動把debug信息記錄到nohup.out文件,但是你卻無法使用這個終端進行任何操作。

所以你需要和之一個方法混用,即

nohupcommand {option}&

混用后,它會自動把你執(zhí)行的命令輸出結果記錄到權限為-rw——-,名為nohup.out的文件中。

但是你仍然需要

delectate@delectate:~$ nohup vlc & 9045delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out’ //在這里按一下回車或以ctrl+c以//show a clean terminal delectate@delectate:~$

與使用 “&” 性質相同,當前啟動程序的終端如果沒有被關閉,已經啟動的程序附在pst上;如果終端被關閉,則自動附在tty。

如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out。默認狀態(tài)下,nohup默認輸出到nohup.out文件,你也可以利用重定向來指定輸出文件:

nohupcommand {option} > myout.file 2>&1 &

只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續(xù)輸出信息而沒有出現 $ 或 #)

其他相關命令:

jobs:查看當前有多少在后臺運行的命令

fg:將后臺中的命令調至前臺繼續(xù)運行。如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)

bg:將一個在后臺暫停的命令,變成繼續(xù)執(zhí)行。如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)

殺死進程

殺死已經啟動的程序和普通方式一樣:

pkill -9 name

killall name

kill pid

命令應用:

linux服務器掛機下載;啟動相關服務;linux服務器啟動進程(尤其是ssh登錄)

我就曾經用 1nohup aria2c -i downloadlist -m 0 -j 1 &

1. 開機啟動時自動運行程序

Linux加載后, 它將初始化硬件和設備驅動, 然后運行之一個進程init。init根據配置文件繼續(xù)引導過程,啟動其它進程。通衡好常情況下,修改放置在

/etc/rc或

/etc/rc.d 或

/etc/rc?.d

目錄下的腳本文件,可以使init自動啟動其它程序。例如:編輯轎爛/etc/rc.d/rc.local 文件(該文件通常是系統最后啟動的腳本),在文件最末加上一行“xinit”或“startx”,可以在開機啟動后直接進閉攔漏入X-Window。

2. 登錄時自動運行程序

用戶登錄時,bash先自動執(zhí)行系統管理員建立的全局登錄script :

/ect/profile

然后bash在用戶起始目錄下按順序查找三個特殊文件中的一個:

/.bash_profile、

/.bash_login、

/.profile,

關于linux 設置父進程的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

香港服務器選創(chuàng)新互聯,香港虛擬主機被稱為香港虛擬空間/香港網站空間,或者簡稱香港主機/香港空間。香港虛擬主機特點是免備案空間開通就用, 創(chuàng)新互聯香港主機精選cn2+bgp線路訪問快、穩(wěn)定!


本文名稱:Linux如何設置進程的父進程(linux設置父進程)
URL標題:http://m.5511xx.com/article/djgdgdd.html