[linux]fork、source、exec、ulimit

exec和source都屬於bash內部命令(builtins commands),在bash下輸入man exec或man source能夠查看全部的內部命令信息。 linux

bash shell的命令分爲兩類:外部命令和內部命令【type -a command 查看】。外部命令是經過系統調用或獨立的程序實現的,如sed、awk等等。內部命令是由特殊的文件格式(.def)所實現,如cd、history、exec等等。 shell

shell變量大體分爲三種類型: bash

1》內部變量:系統提供,不用定義,不能修改 函數

變量 含義
$0 當前腳本的文件名
$n 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。
$# 傳遞給腳本或函數的參數個數。
$* 傳遞給腳本或函數的全部參數。
$@ 傳遞給腳本或函數的全部參數。被雙引號(" ")包含時,與 $* 稍有不一樣,下面將會講到。
$? 上個命令的退出狀態,或函數的返回值。
$$ 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。
$*,$@:不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出全部參數。 可是當它們被雙引號(" ")包含時,"$*" 會將全部的參數做爲一個總體,以"$1 $2 … $n"的形式輸出全部參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出全部參數。

2》環境變量:系統提供,不用定義,能夠修改,好比當前進程及其子進程使用的 PATH、PWD、SHELL 等 ui

3》用戶變量:用戶定義,能夠修改 spa

【fork】 線程

fork是linux的系統調用,父進程建立一個子進程(child process)。子進程從父進程那裏得到必定資源並繼承父進程的環境!環境變量傳給子進程的變量,只能單向從父進程傳給子進程。無論子進程的環境變量如何變化,都不會影響父進程的環境變量。 orm

【source】命令即點(.)命令。 繼承

在 bash下輸入man source,找到source命令解釋處,能夠看到解釋"Read and execute commands from filename in the current shell environment and ..."。從中能夠知道,source命令是在當前進程中執行參數文件中的各個命令,而不是另起子進程(或sub-shell)。 進程

source命令是在當前進程中執行參數文件中的各個命令,而不是另起子進程(或sub-shell)。

【exec】

在bash下輸入man exec,找到exec命令解釋處,能夠看到有"No new process is created."這樣的解釋,這就是說exec命令不產生新的子進程。那麼exec與source的區別是什麼呢?

exec命令在執行時會把當前的shell process關閉,而後換到後面的命令繼續執行。

表 1. ulimit 參數說明
選項 [options] 含義 例子
-H 設置硬資源限制,一旦設置不能增長。 ulimit – Hs 64;限制硬資源,線程棧大小爲 64K。
-S 設置軟資源限制,設置後能夠增長,可是不能超過硬資源設置。 ulimit – Sn 32;限制軟資源,32 個文件描述符。
-a 顯示當前全部的 limit 信息。 ulimit – a;顯示當前全部的 limit 信息。
-c 最大的 core 文件的大小, 以 blocks 爲單位。 ulimit – c unlimited; 對生成的 core 文件的大小不進行限制。
-d 進程最大的數據段的大小,以 Kbytes 爲單位。 ulimit -d unlimited;對進程的數據段大小不進行限制。
-f 進程能夠建立文件的最大值,以 blocks 爲單位。 ulimit – f 2048;限制進程能夠建立的最大文件大小爲 2048 blocks。
-l 最大可加鎖內存大小,以 Kbytes 爲單位。 ulimit – l 32;限制最大可加鎖內存大小爲 32 Kbytes。
-m 最大內存大小,以 Kbytes 爲單位。 ulimit – m unlimited;對最大內存不進行限制。
-n 能夠打開最大文件描述符的數量。 ulimit – n 128;限制最大能夠使用 128 個文件描述符。
-p 管道緩衝區的大小,以 Kbytes 爲單位。 ulimit – p 512;限制管道緩衝區的大小爲 512 Kbytes。
-s 線程棧大小,以 Kbytes 爲單位。 ulimit – s 512;限制線程棧的大小爲 512 Kbytes。
-t 最大的 CPU 佔用時間,以秒爲單位。 ulimit – t unlimited;對最大的 CPU 佔用時間不進行限制。
-u 用戶最大可用的進程數。 ulimit – u 64;限制用戶最多能夠使用 64 個進程。
-v 進程最大可用的虛擬內存,以 Kbytes 爲單位。 ulimit – v 200000;限制最大可用的虛擬內存爲 200000 Kbytes。
相關文章
相關標籤/搜索