linux起進程
⑴ linux 重啟進程
linux重啟進程的方法步驟:
1、首先使用ps -ef查找進程的執行語句並保留它;這個的目的是保留進程執行的參數不變;
例如,重啟單個mongodb的過程:
查找:
1
ps -ef|grep mongod
獲得:
1
root 2928 2903 0 14:51 pts/0 00:00:00 grep /usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
2、使用kill -9 PID殺掉該進程;
1
kill -9 2928
3、使用保留的進程語句重啟進程;
執行:
1
/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
即可。
⑵ Linux啟動一個進程的過程
Linux 中的每個進程都存在於「進程樹」中。你可以通過運行 pstree 命令查看進程樹。樹的根是 init,進程號是 1。每個進程(init 除外)都有一個父進程,一個進程都可以有很多子進程。
所以,假設我要啟動一個名為 ls 的進程來列出一個目錄。我是不是只要發起一個進程 ls 就好了呢?不是的。
我要做的是,創建一個子進程,這個子進程是我(me)本身的一個克隆,然後這個子進程的「腦子」被吃掉了,變成 ls。
開始是這樣的:
然後運行 fork(),生成一個子進程,是我(me)自己的一份克隆:
然後我讓該子進程運行 exec("ls"),變成這樣:
當 ls 命令結束後,我幾乎又變回了我自己:
在這時 ls 其實是一個僵屍進程。這意味著它已經死了,但它還在等我,以防我需要檢查它的返回值(使用 wait 系統調用)。一旦我獲得了它的返回值,我將再次恢復獨自一人的狀態。
上文提到的「腦子被吃掉」是什麼意思呢?
進程有很多屬性:
當你運行 execve 並讓另一個程序吃掉你的腦子的時候,實際上幾乎所有東西都是相同的! 你們有相同的環境變數、信號處理程序和打開的文件等等。
唯一改變的是,內存、寄存器以及正在運行的程序,這可是件大事。
為何 fork 並非那麼耗費資源(寫入時復制)
你可能會問:「如果我有一個使用了 2GB 內存的進程,這是否意味著每次我啟動一個子進程,所有 2 GB 的內存都要被復制一次?這聽起來要耗費很多資源!」
事實上,Linux 為 fork() 調用實現了寫時復制 on write,對於新進程的 2GB 內存來說,就像是「看看舊的進程就好了,是一樣的!」。然後,當如果任一進程試圖寫入內存,此時系統才真正地復制一個內存的副本給該進程。如果兩個進程的內存是相同的,就不需要復制了
當子進程終結時,它會通知父進程,並清空自己所佔據的內存,並在內核里留下自己的退出信息(exit code,如果順利運行,為0;如果有錯誤或異常狀況,為>0的整數)。在這個信息里,會解釋該進程為什麼退出。父進程在得知子進程終結時,有責任對該子進程使用wait系統調用。這個wait函數能從內核中取出子進程的退出信息,並清空該信息在內核中所佔據的空間。但是,如果父進程早於子進程終結,子進程就會成為一個孤兒(orphand)進程。孤兒進程會被過繼給init進程,init進程也就成了該進程的父進程。init進程負責該子進程終結時調用wait函數。
當然,一個糟糕的程序也完全可能造成子進程的退出信息滯留在內核中的狀況(父進程不對子進程調用wait函數),這樣的情況下,子進程成為僵屍(zombie)進程。當大量僵屍進程積累時,內存空間會被擠占。
⑶ 咋查看linux系統啟動進程
很多朋友都想知道linux怎麼查看啟動進程?下面就一起來看看吧!
linux查看啟動進程
1、打開linux系統,在linux的桌面的空白處右擊。
2、在彈出的下拉選項里,點擊打開終端。
3、在終端裡面輸入ps命令,就可以看到所有運行中程序的進程。
⑷ Linux啟動進程的命令
linux啟動進程的命令可以用sh,python ,./文件名。
下面是有關進程的操作:
1.查進程
ps命令查找與進程相關的PID號:
ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
ps -A 顯示所有程序。
ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
ps -e 此參數的效果和指定"A"參數相同。
ps e 列出程序時,顯示每個程序所使用的環境變數。
ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。
ps -H 顯示樹狀結構,表示程序間的相互關系。
ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
ps s 採用程序信號的格式顯示程序狀況。
ps S 列出程序時,包括已中斷的子程序資料。
ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。
ps u 以用戶為主的格式來顯示程序狀況。
ps x 顯示所有程序,不以終端機來區分。
最常用的方法是ps aux,然後再通過管道使用grep命令過濾查找特定的進程,然後再對特定的進程進行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat
ps -ef|grep java|grep -v grep 顯示出所有的java進程,去處掉當前的grep進程。
2.殺進程
使用kill命令結束進程:kill xxx
常用:kill -9 324
Linux下還提供了一個killall命令,可以直接使用進程的名字而不是進程標識號,例如:# killall -9 NAME
1. 更改檔案擁有者
命令 : chown [-cfhvR] [--help] [--version] user[:group] file...
功能 : 更改文件或者文件夾的擁有者
參數格式 :
user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)
-c : 若該檔案擁有者確實已經更改,才顯示其更改動作
-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案
-v : 顯示擁有者變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)
例如:chown -R oracle:oinstall /oracle/u01/app/oracle
更改目錄擁有者為oracle
2. 修改許可權
命令:chmod (change mode)
功能:改變文件的讀寫和執行許可權。有符號法和八進制數字法。
選項:(1)符號法:
命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename
u (user) 表示用戶本人。
g (group) 表示同組用戶。
o (oher) 表示其他用戶。
a (all) 表示所有用戶。
+ 用於給予指定用戶的許可許可權。
- 用於取消指定用戶的許可許可權。
= 將所許可的許可權賦給文件。
r (read) 讀許可,表示可以拷貝該文件或目錄的內容。
w (write) 寫許可,表示可以修改該文件或目錄的內容。
x (execute)執行許可,表示可以執行該文件或進入目錄。
(2)八進制數字法:
命令格式:chmod abc file
其中a,b,c各為一個八進制數字,分別表示User、Group、及Other的許可權。
4 (100) 表示可讀。
2 (010) 表示可寫。
1 (001) 表示可執行。
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
例如:# chmod a+rx filename
讓所有用戶可以讀和執行文件filename。
# chmod go-rx filename
取消同組和其他用戶的讀和執行文件filename的許可權。
# chmod 741 filename
讓本人可讀寫執行、同組用戶可讀、其他用戶可執行文件filename。
# chmod -R 755 /home/oracle
遞歸更改目錄許可權,本人可讀寫執行、同組用戶可讀可執行、其他用戶可讀可執行
3. 修改文件日期
命令:touch
格式:touch filenae
功能:改變文件的日期,不對文件的內容做改動,若文件不存在則建立新文件。
例如:% touch file
4. 鏈接文件
命令:ln (link)
格式:ln [option] filename linkname
ln [option] directory pathname
功能:為文件或目錄建立一個鏈。其中,filename和directory是源文件名和
源目錄名;linkname和pathname分別表示與源文件或源目錄名相鏈接的
文件或目錄。
選項:-s 為文件或目錄建立符號鏈接。不加-s表示為文件或目錄建立硬鏈接
注釋:鏈接的目地在於,對一個文件或目錄賦予兩個以上的名字,使其可以出
現在不同的目錄中,既可以使文件或目錄共享,又可以節省磁碟空間。
例如:% ln -s filename linkname
5. 顯示日期
命令:date
例如:% date
6. 顯示日歷
命令:cal (calendar)
格式:cal [month] year
功能:顯示某年內指定的日歷
例如:% cal 1998
7. 顯示文件頭部
命令:head
格式:head [option] filename
功能:顯示文件的頭部
選項:預設 顯示文件的頭10行。
-i 顯示文件的開始 i行。
例如:% head filename
8. 顯示文件尾部
命令:tail
格式:tail [option] filename
功能:顯示文件的尾部
選項:預設 顯示文件的末10行。
-i 顯示文件最後 i行。
+i 從文件的第i行開始顯示。
例如:% tail filename
9. 顯示用戶標識
命令:id
格式:id [option] [user]
功能:顯示用戶標識及用戶所屬的所有組。
選項:-a 顯示用戶名、用戶標識及用戶所屬的所有組
注釋:
例如:% id username
10. 查看當前登錄的用戶
命令:users
11. 顯示都誰登錄到機器上
命令:who
格式:who
功能:顯示當前正在系統中的所有用戶名字,使用終端設備號,注冊時間。
例如:% who
12. 顯示當前終端上的用戶名
命令:whoami
格式:whoami
功能:顯示出當前終端上使用的用戶。
例如:% whoami
13. 尋找文件
命令:find
格式:find pathname [option] expression
功能:在所給的路經名下尋找符合表達式相匹配的文件。
選項:-name 表示文件名
-user 用戶名,選取該用戶所屬的文件
-size 按大小查找,以block為單位,一個block是512B
-mtime n 按最後一次修改時間查找,選取n天內被修改的文件
-perm 按許可權查找
-type 按文件類型查找
-atime 按最後一次訪問時間查找
例如:% find ./ -name '*abc*' -print
14. 搜索文件中匹配符
命令:grep
格式:grep [option] pattern filenames
功能:逐行搜索所指定的文件或標准輸入,並顯示匹配模式的每一行。
選項:-i 匹配時忽略大小寫
-v 找出模式失配的行
例如:% grep -i 'java*' ./test/run.sh
15. 統計文件字數
命令:wc [option] filename
功能:統計文件中的文件行數、字數和字元數。
選項:-l 統計文件的行數
-w 統計文件的單詞數
-c 統計文件的字元數
注釋:若預設文件名則指標准輸入
例如:% wc -c ./test/run.sh
⑸ Linux進程
什麼是進程 ?
狹義上來說 : 進程是操作系統上運行的一個程序 。
廣義上來說 : 進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動。它是 操作系統 動態執行的 基本單元 ,在傳統的 操作系統 中,進程既是基本的 分配單元 ,也是基本的執行單元。
進程式控制制是進程管理中最基本的功能。它用於創建一個新進程,終止一個已完成的進程,或者去終止一個因出現某事件而使其無法運行下去的進程,還可負責進程運行中的狀態轉換。
Linux系統上進程的幾種狀態:
進程的創建一是操作系統來創建 。 二是由父進程創建 。
什麼是守護進程? 這是一段來自維基網路的描述。
exit()與_ecit()的區別
exit與return的區別
exit 的參數 , 正常退出參數為 0, 異常退出參數為非零值 。
⑹ Linux中如何啟動進程進程調度命令有哪些
Linux技術的發展引起了很多企業和個人的關注。市場對Linux運維的需求逐漸增加,學習Linux技術的人越來越多。在Linux運維中,進程是必須學習掌握的技能。那麼Linux中如何啟動進程?常用的進程調度命令有哪些?
執行中的程序稱作進程。當程序的可執行文件存儲在存儲器中並運行時,每個進程將被動態分配系統資源、內存、安全屬性和相關狀態。多個進程可以與同一個程序相關聯,並在同一時間執行,而不會相互干擾。操作系統將有效地管理和跟蹤所有正在運行的進程。
Linux中如何啟動進程?啟動進程的方法是什麼?
手工啟動。用戶在輸入端發出命令,直接啟動進程。分為前台啟動和後台啟動。前台啟動:直接在SHELL中輸入命令進行啟動。後台啟動:啟動一個目前並不緊急的進程。
調度啟動。系統管理員根據系統資源和進程佔用資源的情況,事先進行調度安排,指定任務運行的時間和場合,到時候系統會自動完成該任務。
常用的進程調度命令有哪些?
常用的進程調度命令有:at、batch、crontab。
以上便是關於「如何啟動或終止進程?常用的進程調度命令有哪些?」的相關介紹。想要成為一名優秀的Linux運維工程師,需要掌握更多的Linux知識。
⑺ linux後台啟動進程
父子進程
在linux系統裡面,子進程由父進程fork而來,而所有的進程都是由init進程或其子進程fork而來,即init進程是所有進程的祖先。
父子進程的運行是相對獨立的,一方的退出不會導致另一方退出。
進程組和會話
Session特點
session可以在任何時候創建,調用setsid函數即可,session中的第一個進程即為session的leader,leader是不能變的。常見的創建session的場景是用戶登錄,啟動bash進程時將會創建新的session,bash進程會作為session的leader,隨後bash裡面運行的進程(不特殊處理)都將屬於這個session。
session的主要特點是當session的leader退出後,session中的所有其它進程將會收到SIGHUP信號,其默認行為是終止進程,即session的leader退出後,session中的其它進程也會退出。
如果session和tty關聯的話,它們之間只能一一對應,一個tty只能屬於一個session,一個session只能打開一個tty。當然session也可以不和任何tty關聯。
進程的啟動方式:
1)前台啟動:用戶輸入命令,直接執行程序
2)後台啟動:在命令行尾加入「&」符號
要使終端關閉時進程不退出,有以下幾種情況:
1)用戶進程攔截SIGHUP信號。
2)使用戶進程和bash進程不在一個session。