连续6年不跑路的安全速度最适合国人VPN
功能描述
exec命令在Linux中用於調用並執行指定的命令。通常在shell腳本中使用exec命令來執行其他命令。當在當前終端中使用exec命令時,指定的命令執行完畢後會取代當前進程,而不是創建一個新的子進程。
命令語法
exec [選項]登錄後複製
選項含義
| 選項 | 含義 |
|---|---|
| -c | 使用一個空環境來執行 |
| -a | shell會將名字作爲零參數傳遞給執行的命令 |
| -l | 在shell的開頭放置一個破折號參數傳遞給命令 |
參考實例
實例1
// 首先使用echo命令將文本“www.linuxyz.cn”進行輸出:[root@bunian ~]# echo www.bunian.cnwww.bunian.cn// 然後再使用exec命令調用echo命令輸出同樣的信息,並且對輸出的信息進行對比,輸入指令如下所示:[root@bunian ~]# exec -c echo www.bunian.cnwww.bunian.cn// 通過比較兩者執行後的結果來看,所實現的功能是相同的,即使用exec命令調用echo命令成功。登錄後複製
實例2
// 查找bunian.txt 並備份爲bunian.txt.bak[root@bunian ~]# find /test -name "bunian.txt" -exec cp {} {}.bak ;登錄後複製知識擴展
一、系統調用 exec 是以新的進程去代替原來的進程,但進程的PID保持不變。因此,可以這樣認爲,exec系統調用並沒有創建新的進程,只是替換了原來進程上下文的內容。原進程的代碼段,數據段,堆棧段被新的進程所代替。
一個進程主要包括以下幾個方面的內容:
二、exec是一個函數簇,由6個函數組成,分別是以excl和execv打頭的。
執行exec系統調用,一般都是這樣,用fork()函數新建立一個進程,然後讓進程去執行exec調用。我們知道,在fork()建立新進程之後,父進各與子進程共享代碼段,但數據空間是分開的,但父進程會把自己數據空間的內容copy到子進程中去,還有上下文也會copy到子進程中去。而爲了提高效率,採用一種寫時copy的策略,即創建子進程的時候,並不copy父進程的地址空間,父子進程擁有共同的地址空間,只有當子進程需要寫入數據時(如向緩衝區寫入數據),這時候會複製地址空間,複製緩衝區到子進程中去。從而父子進程擁有獨立的地址空間。而對於fork()之後執行exec後,這種策略能夠很好的提高效率,如果一開始就copy,那麼exec之後,子進程的數據會被放棄,被新的進程所代替。
以上就是Linux exec命令手冊的詳細內容,更多請關注本站其它相關文章!