本文作者筆記體系歸檔:
(1)fork
fork是linux的系統呼叫,用來建立子程序(child process)。子程序是父程序(parent process)的乙個副本,從父程序那裡獲得一定的資源分配以及繼承父程序的環境。子程序與父程序唯一不同的地方在於pid(process id)。
環境變數(傳給子程序的變數,遺傳性是本地變數和環境變數的根本區別)只能單向從父程序傳給子程序。不管子程序的環境變數如何變化,都不會影響父程序的環境變數。
(2)source
使用 source 方式執行 script 時, 就是讓 在當前程序中執行引數檔案中的各個命令, 而不是另起子程序(sub-shell)。 由此可見source執行的時候是當前shell環境下執行,執行完成後把結果返回給當前shell。
(3)exec
a)exec命令用於呼叫並執行指令的命令。exec命令通常用在shell指令碼程式中,可以呼叫其他的命令。在當前終端中使用命令,則當指定的命令執行完畢後會立即退出終端。
在終端中
[root@izgf10elo5bco4z ~]# su xingcheng
[xingcheng@izgf10elo5bco4z root]$ exec ls
[root@izgf10elo5bco4z ~]#
在shell指令碼中
[root@izgf10elo5bco4z ~]# cat test.sh
#!/bin/bash
a=1echo
$aexec
echo
'1'a=2
echo
$a[root@izgf10elo5bco4z ~]# sh -x test.sh
+ a=1
+ echo11
+ exec
echo
11
b)使用 exec 方式執行script時, 它和 source 一樣, 也是讓 script 在當前程序中執行, 但是 process 內的原**剩下部分將被終止. 同樣, process 內的環境隨script 改變而改變.不過,要注意乙個例外,當exec命令來對檔案描述符操作的時候,就不會替換shell,而且操作完成後,還會繼續執行接下來的命令。
例如
[root@izgf10elo5bco4z ~]# cat test.sh && sh test.sh
#!/bin/bash
a=1exec > text.log
lspwd
echo
"終端未退出"
exec > /dev/pts/0
ls[root@izgf10elo5bco4z ~]# cat text.log
1.sh
2.sh
2.txt
process.sh
tempfd1
test.sh
text.log
/root
終端未退出
exec命令
作用exec 3<>hello.txt
以讀寫方式繫結檔案描述符」3」到hello.txt
exec 3< hello.txt
以「唯讀方式」繫結檔案描述符」3」到hello.txt
exec 3>hello.txt
以「只寫方式」繫結檔案描述符」3」到hello.txt
exec 3>&-
關閉檔案描述符fd3的寫,同時也不能讀了
exec 3<&-
關閉檔案描述符fd3的讀,同時也不能寫了
exec >file
將file中的內容作為標準寫出
exec 5<&4
建立fd4的拷貝fd5
(1)在當前目錄下(包含子目錄),查詢所有txt檔案並找出含有字串」bin」的行
find ./ -name 「*.txt」 -exec grep 「bin」 {} \;
(2)在當前目錄下(包含子目錄),刪除所有txt檔案
find ./ -name 「*.txt」 -exec rm {} \;
exec函式 python 使用exec的疑惑
簡介 exec 執行儲存在字串或檔案中的python語句,相比於 eval,exec可以執行更複雜的 python exec函式功能強大,也很容易上手,在做未知變數定義時很好用。例如 使用exec函式可以將其中的字串語句定義為變數 with open data.txt r as f for line...
愛馳汽車運用多種手段鑄造智慧型工廠
愛馳汽車作為一家致力於智慧型製造 智慧型產品和運營服務加速汽車產業進化的企業,以工業4.0 標準自建具備整車資質的數位化 智慧型化 柔性化超級智慧型工廠,引領低能耗 自動化的綠色產業鏈發展潮流。在工業生產領域,愛馳汽車超級智慧型工廠以領先的智慧型製造 智慧型物流,打造低能耗 自動化的綠色生產鏈。智慧...
exec 命令的用法
shell的內建命令exec將並不啟動新的shell,而是用要被執行命令替換當前的shell程序,並且將老程序的環境清理掉,而且exec命令後的其它命令將不再執行。因此,如果你在乙個shell裡面,執行exec ls那麼,當列出了當前目錄後,這個shell就自己退出了,因為這個shell程序已被替換...