[Note] Linux學習筆記5-6 進程、重定向和管道

Note 5 Linux 進程

什麼是進程?

An executing program = A process
當你執行一個外部命令(內部命令是shell進程的一部分,不須要建立進程)時,Linux系統會爲之建立一個進程,命令完成以後會撤銷它
進程的建立和終止是linux系統處理外部命令所採用的惟一機制
Linux經過系統調用fork建立一個新的進程,該操做創建原進程內存的徹底拷貝,而後系統調用exec來使要執行命令的代碼覆蓋新進程。
(ps 命令能夠用來查看進程的屬性和狀態,具體請自行查閱)linux

進程執行和做業控制

前臺執行:當輸入命令並開始執行,在當前命令結束前,你不能執行任何命令
後臺執行:在執行命令的同時,你能夠看到哦啊shell提示符出現,並執行其餘命令shell

在命令最後添加一個 ‘&’符號,可使命令後臺執行,此時會輸出這樣一行信息「[1] 23245」 中括號裏的數字爲做業號(job number),後面的數字爲進程號(PID)
做業是不運行在前臺的進程,只能在關聯終端上訪問命令行

(fg命令能夠將後臺進程轉移到前臺,用法:fg %jobid,使做業號爲jobid的前臺進程繼續執行,或者轉移到前臺)
(Ctrl-C能夠停止一個前臺命令)
(Ctrl-Z能夠掛起一個前臺進程)
(bg命令能夠把掛起的進程轉移到後臺繼續執行, bg %jobidlist)
(jobs命令顯示指定的被掛起進程或後臺進程的狀態)
(at命令使指定命令序列在指定時刻執行)
(batch命令指定做業在系統負載較輕時運行)
(kill命令能夠停止後臺進程)
(sleep n 命令可使正在執行的進程睡眠n秒)排序

有一種特殊的進程,守護進程(daemon)是運行於後臺的系統進程,向用戶提供各類類型的服務和執行系統管理任務,例如smtpd、httpd、inetd進程

在一個命令行輸入多條命令,並在每條命令末尾加上分號,能夠順序執行這些命令,若以‘&’鏈接多條命令則並行執行它們,例如
順序執行:命令1; 命令2; 命令3;
並行執行:命令1& 命令2& 命令3&內存

使用&&和||能夠有條件的執行命令,例如:
命令1 && 命令2 表明若是命令1成功則執行命令2
命令1 || 命令2 表明若是命令1失敗則執行命令2input

Note 6 重定向和管道

重定向

在默認狀態下,命令的stdin 爲 keyboard; stdout和stderr爲屏幕
咱們可使用重定向運算符,將命令的輸入和輸出重定向到文件io

輸入重定向,‘<’
語法:command < inputfile
命令的輸入來自inputfile而不是鍵盤後臺

輸出重定向,‘>’
語法:command > outputfile
命令的輸出寫到文件outputfile,而不是顯示器file

二者能夠同時使用,好比
command < inputfile > outputfile
command > outputfile < inputfile

另外,linux內核將一些小的整數關聯到每一個已打開的文件上,稱爲文件描述符
stdin--0 stdout--1 stderr--2
因此咱們能夠這樣用:
command 0< inputfile 等價於 command < inputfile
command 2> errorfile 1>outputfile
command 1> file 2> &1
(重定向的順序是從左到右)
(2> &1含義是將錯誤信息輸出到和1相同的文件)

默認狀況下,輸出和錯誤重定向會覆蓋目標文件的內容
若是須要追加而不是覆蓋,則使用>>運算符,而不是>運算符

注意,exec命令有些特殊,exec <input 將input文件中每一行做爲命令由shell執行; exec >output 將shell以後全部命令輸出到output文件裏

管道

Linux容許一條命令的輸出做爲另外一條命令的輸入
語法: 命令1 | 命令2 | 命令3 ...
命令1的輸出做爲命令2的輸入,以後同理

例子:
ls -l | grep 」somedata「
grep 「data」 < inputfile | lpr -Pspr
who | sort | grep "name" | mail -S "content" xxx@xx.com
(第三條命令將who的輸出排序,找到其中包含name的行,並和content一塊兒發送給xxx@xx.com)

當你想要把命令的輸出既輸出到文件,又經過管道傳遞,那麼你須要tee命令語法: tee [options] filelist做用: 將輸出送到標準輸出和filelist中用法: command1 | tee file1 file2 | command2

相關文章
相關標籤/搜索