国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Linux中的兩個問題及目錄組織

2024-07-21 02:37:27
字體:
來源:轉載
供稿:網友

   一些初學者經常在BBS上提出關于shutdown 和kill的兩個問題。本文擬對這兩個問題作出具體的解答。另外,說明一下linux的目錄組織和它們的內容。
   一、關于shutdown
   有的初學者用shutdown關不了機,一些人說你對shutdown命令還不太了解,其實直接的關機命令是halt。在多用戶的系統中,關機有很多學問,下面就和大家探討一下。
   關機和重啟的命令有很多種,比如:
   shutdown [-trkhncfF -time]
   halt [-nwdfip]
   reboot [-nwdfi]
   init
   kill -TERM 1
   poweroff
   1.shutdown安全地將系統關機
   許多人把在公共機房的壞習慣(直接用POWER鍵關閉電源)帶到了linux,強制關機的問題是可能會丟失數據,讓系統處于不穩定的狀態,甚至在有的系統中會損壞硬件設備。而使用shutdown命令時在系統將要關機前,系統治理員會通知所有登錄的使用者系統將要關閉。而且login指令會被凍結,即新的用戶不能再登錄。直接關機或者延遲一定的時間才關機都是可能的,還可能重啟。這是由所有進程(PRocess)都會收到系統所送達的信號(signal)決定的。這讓像vi之類的程序有時間儲存目前正在編輯的文檔,而像處理郵件(mail)和新聞(news)的程序則可以正常地離開等等。shutdown執行它的工作是送信號(signal)給init程序,要求它改變runlevel。Runlevel 0被用來停機(halt),runlevel 6是用來重新啟動(reboot)系統,而runlevel 1則是被用來讓系統進入治理工作可以進行的狀態;這是預設的,假定沒有-h也沒有-r參數給shutdown。要想了解在停機(halt)或者重新開機(reboot)過程中做了哪些動作,你可以在這個文件/etc/inittab里看到這些runlevels相關的資料。
   shutdown 參數說明:
   [-t] 在改變到其它runlevel之前,告訴init多久以后關機。
   [-r] 重啟計算機。
   [-k] 并不真正關機,只是送警告信號給每位登錄者(login)。
   [-h] 關機后關閉電源(halt)。
   [-n] 不用init,而是自己來關機。不鼓勵使用這個選項,而且該選項所產生的后果往往不總是你所預期得到的。
   [-c] cancel current process取消目前正在執行的關機程序。所以這個選項當然沒有時間參數,但是可以輸入一個用來解釋的訊息,而這信息將會送到每位使用者。
   [-f] 在重啟計算機(reboot)時忽略fsck。
   [-F] 在重啟計算機(reboot)時強迫fsck。
   [-time] 設定關機(shutdown)前的時間。
   所以,對大多數關不了機的回答就是用shutdown -h 命令。
   2.halt是最簡單的關機命令
   其實halt就是調用shutdown -h。halt執行時,殺死非基本的進程,執行sync系統調用,文件系統寫操作完成后就會停止內核。
   參數說明:
   [-n] 防止sync系統調用,它用在用fsck修補根分區之后,以阻止內核用老版本的超級塊(superblock)覆蓋修補過的超級塊。
   [-w] 并不是真正的重啟或關機,只是寫wtmp(/var/log/wtmp)紀錄。
   [-d] 不寫wtmp紀錄(已包含在選項[-n]中)。
   [-f] 沒有調用shutdown而強制關機或重啟。
   [-i] 關機(或重啟)前,關掉所有的網絡接口。
   [-p] 該選項為缺省選項。就是關機時調用poweroff。
   3.reboot差不多跟halt一樣,不過它是引發主機重啟,而halt是關機。關于它的參數,因為和halt差不多,這里就略去不解。
   4.init是所有進程的祖先,它的進程號始終為1,所以發送TERM信號給init會終止所有的用戶進程、守護進程等。shutdown 就是使用這種機制。init定義了8個runlevel,init 0為關機,init 1為重啟。關于init可以長篇大論,這里就不再敘述。另外還有telinit命令可以改變init的運行級別,比如,telinit -iS可使系統進入單用戶模式,并且得不到使用shutdown時的信息和等待時間。感愛好的讀者可以查閱手冊(The best is the man)。
   二、關于kill
   許多初學者想用kill殺死某些進程,可是結果是被殺進程還是顯示在ps命令的結果中,也就是該進程并沒有被殺死。
   談到kill,當然就不能避免關于信號的討論。信號就是軟件中斷,大多數程序都用信號來發生中斷,比如,ping命令可用Ctrl+C產生的信號發生中斷。當一個進程接受到一個信號時,可能發生以下情況:假如該進程已指定了對該信號的處理例程,內核就調用該例程,然后進行必要的處理;假如沒有指定處理方式,內核就采用缺省的行為。
當用戶鍵入Ctrl+C時,終端驅動程序接受該字符后,向活動進程發出SIGINT(終端中斷符)信號。而對該信號的缺省處理就是終止,所以上面的命令ping就會終止,否則會無休止地運行下去。關于信號的權威著作是W.Richard Stevens的《UNIX環境高級編程》,感愛好的讀者可參閱。本文僅說明其中的個別信號,信號名均以SIG開頭,故有的地方將其省略。
   1.捕捉信號:給該信號指定一個具體的處理例程。例如,捕捉到CHLD信號說明子進程已經終止,系統將調用waitpid函數以獲取該子進程的id和終止信號。
   2.忽略信號:防止信號的到達,程序可以請求忽略或阻塞它們。忽略就是被丟棄,而阻塞是排隊等待處理。
   3.SIGKILL和SIGSTOP信號:不能被捕捉、忽略、阻塞,這是為了保證系統治理員的權限,使他們有可靠的方法實現終止進程的目的。
   因為不帶信號值的kill命令不能保證目標進程的消亡,即TERM信號被捕捉、忽略、阻塞,所以會產生上面的疑問,現在知道了kill信號就不用擔心了,kill -9 pid就可以解決問題了。
   三、關于linux的目錄組織
   經常有網友問及linux的內核在哪兒,還有很多人記得不太清楚,要經常查找。下面列出標準的目錄含有的內容供查閱。
   / 根目錄
   /bin 系統最小命令集(/sbin為系 統治理員所用)
   /dev 設備文件目錄
   /etc 要害的啟動文件和配置文件
   /home 用戶主目錄
   /lib C編譯器的例程庫
   /mnt 掛用其它文件系統的目錄
   /proc 所有運行中進程的映像
   /root root用戶根目錄
   /tmp 每次重啟均會消失的臨時文件
   /usr/bin 可執行文件
   /usr/doc linux How-to
   /usr/etc 系統維護命令
   /usr/games 游戲,一樣很出色
   /usr/include C程序頭文件
   /usr/info 版本信息
   /usr/lib 標準的UNIX程序支持文件
   /usr/local 本地目錄
   /usr/man 在線手冊
   /usr/src 源文件目錄

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台江县| 务川| 阳新县| 洛阳市| 平谷区| 吴江市| 苍溪县| 宜良县| 浑源县| 景宁| 鄂伦春自治旗| 夏津县| 广丰县| 怀安县| 尉犁县| 乃东县| 河北省| 千阳县| 丽水市| 榆树市| 广昌县| 阳谷县| 五家渠市| 吉木萨尔县| 沅陵县| 青浦区| 荆州市| 远安县| 拉孜县| 文化| 衡南县| 隆昌县| 东乡族自治县| 筠连县| 沐川县| 遂川县| 巨野县| 建瓯市| 扎赉特旗| 康定县| 罗城|