這兩個屬於附加許可權位,這兩個附加許可權通過設定使用者id位(suid)和設定組id位(sgid)的機制來賦給程式
當你執行了乙個設定了suid位的程式時,你就繼承了該程式的屬主的許可權,當你執行了乙個設定了sgid位的程式,你就繼承了該程式所屬使用者組的許可權
可以看到passwd程式的suid位被啟用
所謂前台程序就是需要占用終端的程序,在該前台程序執行過程中你是無法進行任何輸入的
後台程序和前台程序正好相反,他不占用終端,你可以在該後台程序執行過程中,繼續進行其他的操作,比如我們可以把ls
程序放到後台來執行:
此時我們可以正常進行其他的輸入,後台程序執行完畢後會自動把結果輸出到終端介面上
在上面的中,我們可以看到第一行輸出[1] 5809
,這個shell
分配給程序的任務識別符號,也就是pid
前面的示例我們用的都是bash
,下面我們用sh
來進行演示,我們先來寫一段這樣的指令碼:
read.sh
#!/bin/sh
read line
read
$line
我們令這段腳在後台執行:
/bin/sh read.sh &
它在後台執行的時候是需要輸入的,但是我們又沒辦法對他輸入,
unix環境下,當乙個程序以後臺形式啟動,但嘗試去讀寫控制台終端時,將會觸發sigttin(讀)和sigttou(寫)訊號量
此時不管我們輸入什麼,都會觸發sigttin
訊號,導致程式中止:
解決此問題有兩種方式,一種就是將程序切換至前台,另一種就是通過重定向的方式來執行該程式
先看一下重定向的方式:
下面說一下如何切換前後臺程序
我們在上面使用&來執行乙個後台程式,其實除了這種方式,我們還可以切換乙個前台程序到後台來執行,這裡要介紹一下懸掛,所謂懸掛,就是暫停前台程序,讓其處於等待狀態,在unix中,使用ctrl + z
來懸掛前台程序,使用stty
命令來檢視:
bg(background)命令和fg(frontground)命令
當乙個前台程序被懸掛起來的時候,使用bg命令可以在後台繼續執行這段前台程序,使用fg命令可以再前台執行它
暫時沒太用明白這兩個命令,以後再更吧
該命令可以保持程序在其所執行的終端關閉之後仍然不會被終止,具體使用方法為:
「` nohup cmd &
預設狀態下nohup
命令會自動將cmd
的輸出重定向到nohup.out
檔案
在正常情況下,後台程序執行的時候我們是可以在終端中進行輸入的,不過我們可以強制等待後台程序,意思就是直到後台程序結束之後,我們才能進行輸入,要達到這一目的,需要使用wait
命令
shell程式設計筆記(二)
終於要開始正式寫shell指令碼了 建立陣列變數的方式,直接給陣列的索引賦值 array index value注意 index是有取值範圍的 0,1023 如果乙個標量的名字和陣列名重名,那麼該標量對應的值就會變成該陣列0索引對應的值 另一種初始化陣列的方式,可以給多個元素一次性賦值 訪問方式也在...
學習shell程式設計筆記 二
變數 含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是 1,第二個引數是 2。傳遞給指令碼或函式的引數個數。傳遞給指令碼或函式的所有引數。傳遞給指令碼或函式的所有引數。被雙引號 包含時,與 稍有不同,下面將會講到。上個命令的退出狀態,或函式的...
shell程式設計《二》
一 if語句 if expressino then code block elif expression then code block else code block fi fi 比較整 數a 和b是否 相等 if a b 也 可 用 eq 判斷整 數a是否 大於整數 b if a gt b 比較...