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

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
手工啟動(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)行,不過(guò)為了方便閱讀,并沒(méi)有將這些進(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)行,用的相對(duì)比較少,除非該進(jìn)程非常耗時(shí),且用戶也不急著需要其運(yùn)行結(jié)果的時(shí)候,例如,用戶需要啟動(dòng)一個(gè)需要長(zhǎng)時(shí)間運(yùn)行的格式化文本文件的進(jìn)程,為了不使整個(gè)shell在格式化過(guò)程中都處于被占用狀態(tài),從后臺(tái)啟動(dòng)這個(gè)進(jìn)程是比較明智的選擇。
從后臺(tái)啟動(dòng)進(jìn)程,其實(shí)就是在命令結(jié)尾處添加一個(gè)符號(hào)。輸入命令并運(yùn)行之后,shell會(huì)提供給我們一個(gè)數(shù)字,此數(shù)字就是該進(jìn)程的進(jìn)程號(hào)。然后直接就會(huì)出現(xiàn)提示符,用戶就可以繼續(xù)完成其他工作。
手工啟動(dòng)的2種方式,實(shí)際上它們有個(gè)共同的特點(diǎn),就是新進(jìn)程都是由當(dāng)前shell這個(gè)進(jìn)程產(chǎn)生的,換句話說(shuō),是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ù)來(lái)定期對(duì)重要數(shù)據(jù)進(jìn)行備份。
實(shí)現(xiàn)調(diào)度啟動(dòng)進(jìn)程的方法有很多,比如通過(guò)crontab、cat等命令。
背景 :工作需要,需要遠(yuǎn)程控制主機(jī)使其斷開Xshell后也能一直運(yùn)行。
關(guān)鍵字 : ,nohup,腳本掛起。
在應(yīng)用Unix/Linux時(shí),我們一般想讓某個(gè)程序在后臺(tái)運(yùn)行,于是我們將常會(huì)用 在程序結(jié)尾來(lái)讓程序自動(dòng)運(yùn)行。
鍵入Ctrl + C,發(fā)出SIGINT信號(hào),程序會(huì)繼續(xù)運(yùn)行
方法一、輸入命令:jobs
方法二:輸入命令:ps
fg、bg、jobs、、nohup、ctrl+z、ctrl+c 命令
加在一個(gè)命令的最后,可以把這個(gè)命令放到后臺(tái)執(zhí)行,如
可以將一個(gè)正在前臺(tái)執(zhí)行的命令放到后臺(tái),并且處于暫停狀態(tài)。
查看當(dāng)前有多少在后臺(tái)運(yùn)行的命令
jobs -l選項(xiàng)可顯示所有任務(wù)的PID,jobs的狀態(tài)可以是running, stopped, Terminated。但是如果任務(wù)被終止了(kill),shell 從當(dāng)前的shell環(huán)境已知的列表中刪除任務(wù)的進(jìn)程標(biāo)識(shí)。
將后臺(tái)中的命令調(diào)至前臺(tái)繼續(xù)運(yùn)行。如果后臺(tái)中有多個(gè)命令,可以用fg %jobnumber(是命令編號(hào),不是進(jìn)程號(hào))將選中的命令調(diào)出。
將一個(gè)在后臺(tái)暫停的命令,變成在后臺(tái)繼續(xù)執(zhí)行。如果后臺(tái)中有多個(gè)命令,可以用bg %jobnumber將選中的命令調(diào)出。
法子1:通過(guò)jobs命令查看job號(hào)(假設(shè)為num),然后執(zhí)行kill %num
法子2:通過(guò)ps命令查看job的進(jìn)程號(hào)(PID,假設(shè)為pid),然后執(zhí)行kill pid
前臺(tái)進(jìn)程的終止:Ctrl+c
如果讓程序始終在后臺(tái)執(zhí)行,即使關(guān)閉當(dāng)前的終端也執(zhí)行(之前的做不到),這時(shí)候需要nohup。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。
關(guān)閉中斷后,在另一個(gè)終端jobs已經(jīng)無(wú)法看到后臺(tái)跑得程序了,此時(shí)利用ps(進(jìn)程查看命令)
如上所示:
nohup 和 組合了后臺(tái)運(yùn)行程序。
可以輸出到 out.log保存程序輸出,也可以輸出到/dev/null 即空設(shè)備,不保存輸出。
上面三種方式無(wú)論在nohup.out 或test.out都看不到數(shù)據(jù)結(jié)果,這是因?yàn)閜ython執(zhí)行有緩存輸出
解決
新的接口接入查看程序
使用后臺(tái)運(yùn)行程序:
結(jié)果會(huì)輸出到終端
使用Ctrl + C發(fā)送SIGINT信號(hào), 程序免疫
關(guān)閉session發(fā)送SIGHUP信號(hào), 程序關(guān)閉
使用nohup運(yùn)行程序:
結(jié)果默認(rèn)會(huì)輸出到nohup.out
使用Ctrl + C發(fā)送SIGINT信號(hào), 程序關(guān)閉
關(guān)閉session發(fā)送SIGHUP信號(hào), 程序免疫
平日線上經(jīng)常使用nohup和配合來(lái)啟動(dòng)程序:
同時(shí)免疫SIGINT和SIGHUP信號(hào)
同時(shí),還有一個(gè)最佳實(shí)踐:
不要將信息輸出到終端標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤輸出,而要用日志組件將信息記錄到日志里
nohup和究竟有啥區(qū)別
命令運(yùn)行時(shí)使用CTRL+Z,強(qiáng)制當(dāng)前進(jìn)程轉(zhuǎn)為后臺(tái),并使之掛起(暫停).\x0d\x0a1. 使進(jìn)程恢復(fù)運(yùn)行(后臺(tái))\x0d\x0a(1)使用命令bg\x0d\x0aExample:\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv01\x0d\x0a*這里使用CTRL+Z,此時(shí)serv01是停止?fàn)顟B(tài)*\x0d\x0a[1]+ Stopped ./tcpserv01\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$ bg\x0d\x0a[1]+ ./tcpserv01 *此時(shí)serv01運(yùn)行在后臺(tái)*\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$\x0d\x0a(2)如果用CTRL+Z停止了幾個(gè)程序呢?\x0d\x0aExample:\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$ jobs\x0d\x0a[1]- Running ./tcpserv01 \x0d\x0a[2]+ Stopped ./tcpcli01 127.0.0.1\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$ bg %1\x0d\x0abash: bg:任務(wù) 1 已轉(zhuǎn)入后臺(tái) *后臺(tái)運(yùn)行*\x0d\x0a2. 使進(jìn)程恢復(fù)至前臺(tái)運(yùn)行\(zhòng)x0d\x0aExample:\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv04\x0d\x0a[1]+ Stopped ./tcpserv04\x0d\x0azuii@zuii-desktop:~/unp/tcpcliserv$ fg\x0d\x0a./tcpserv04\x0d\x0a總結(jié):\x0d\x0a(1) CTRL+Z掛起進(jìn)程并放入后臺(tái)\x0d\x0a(2) jobs 顯示當(dāng)前暫停的進(jìn)程\x0d\x0a(3) bg %N 使第N個(gè)任務(wù)在后臺(tái)運(yùn)行(%前有空格)\x0d\x0a(4) fg %N 使第N個(gè)任務(wù)在前臺(tái)運(yùn)行\(zhòng)x0d\x0a默認(rèn)bg,fg不帶%N時(shí)表示對(duì)最后一個(gè)進(jìn)程操作!
文章題目:linux進(jìn)程掛起的命令 linux進(jìn)程管理命令
標(biāo)題網(wǎng)址:http://chinadenli.net/article26/ddodcjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)