歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

使用/PROC文件系統來控制系統

詳細介紹有關 /proc 中每個文件的用法和確切信息超出了本文所涉及的范圍。要獲得任何關於本文沒有涉及到的 /proc 文件的其它信息,一個最佳來源就是 Linux 內核源代碼本身,它包含了一些非常優秀的文檔。對於系統管理員,/proc 中的以下文件較有用。這不意味
  詳細介紹有關 /proc 中每個文件的用法和確切信息超出了本文所涉及的范圍。要獲得任何關於本文沒有涉及到的 /proc 文件的其它信息,一個最佳來源就是 Linux 內核源代碼本身,它包含了一些非常優秀的文檔。對於系統管理員,/proc 中的以下文件較有用。這不意味著它是一份詳盡的說明,而只是日常使用中便於查閱的參考。
  
  /proc/scsi
  /proc/scsi/scsi
  作為系統管理員,需要了解的最有用內容是,在有熱交換驅動器情況下,如何不重啟系統就可以添加更多磁盤空間。假使不使用 /proc,您可以插入驅動器,但為了使系統識別新磁盤,必須隨即重新引導系統。這裡,可以用以下命令來使系統識別新的驅動器:
  
  echo "scsi add-single-device w x y z" > /proc/scsi/scsi
  
  為使該命令正常運行,必須指定正確的參數值 w、x、y 和 z,如下所示:
  w 是主機適配器標識,第一個適配器為零(0)
  x 是主機適配器上的 SCSI 通道,第一個通道為零(0)
  y 是設備的 SCSI 標識
  z 是 LUN 號,第一個 LUN 為零(0)
  
  一旦將磁盤添加到系統中之後,可以掛裝任何先前已格式化的文件系統,也可以開始對它進行格式化等。例如,如果不確定磁盤是什麼設備,或者想檢查任何先前已有的分區,則可以用如 fdisk -l 這樣的命令來向您報告這方面的信息。
  
  相反的,在不重新引導系統的情況下將設備從系統中除去的命令是:
  
  echo "scsi remove-single-device w x y z" > /proc/scsi/scsi
  
  在輸入這條命令並將熱交換 SCSI 磁盤從系統中除去之前,請確保首先卸下已從該磁盤安裝的任何文件系統。
  
  /proc/sys/fs/
  /proc/sys/fs/file-max
  該文件指定了可以分配的文件句柄的最大數目。如果用戶得到的錯誤消息聲明由於打開文件數已經達到了最大值,從而他們不能打開更多文件,則可能需要增加該值。可將這個值設置成有任意多個文件,並且能通過將一個新數字值寫入該文件來更改該值。
  
  缺省設置:4096
  
  /proc/sys/fs/file-nr
  該文件與 file-max 相關,它有三個值:
  已分配文件句柄的數目
  已使用文件句柄的數目
  文件句柄的最大數目
  該文件是只讀的,僅用於顯示信息。
  
  /proc/sys/fs/inode-*
  任何以名稱“inode”開頭的文件所執行的操作與上面那些以名稱“file”開頭的文件所執行的操作一樣,但所執行的操作與索引節點有關,而與文件句柄無關。
  
  /proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid
  這兩個文件分別保存那些支持 16 位用戶標識和組標識的任何文件系統的用戶標識(UID)和組標識(GID)。可以更改這些值,但如果您確實覺得需要這樣做,那麼您可能會發現更改組和密碼文件項更容易些。
  
  缺省設置:65534
  
  /proc/sys/fs/super-max
  該文件指定超級塊處理程序的最大數目。掛裝的任何文件系統需要使用超級塊,所以如果掛裝了大量文件系統,則可能會用盡超級塊處理程序。
  
  缺省設置:256
  
  /proc/sys/fs/super-nr
  該文件顯示當前已分配超級塊的數目。該文件是只讀的,僅用於顯示信息。
  
  /proc/sys/kernel
  /proc/sys/kernel/aclearcase/" target="_blank" >cct
  該文件有三個可配置值,根據包含日志的文件系統上可用空間的數量(以百分比表示),這些值控制何時開始進行進程記帳:
  如果可用空間低於這個百分比值,則停止進程記帳
  如果可用空間高於這個百分比值,則開始進程記帳
  檢查上面兩個值的頻率(以秒為單位)
  要更改這個文件的某個值,應該回送用空格分隔開的一串數字。
  
  缺省設置:2 4 30
  
  如果包含日志的文件系統上只有少於 2% 的可用空間,則這些值會使記帳停止,如果有 4% 或更多可用空間,則再次啟動記帳。每 30 秒做一次檢查。
  
  /proc/sys/kernel/ctrl-alt-del
  該文件有一個二進制值,該值控制系統在接收到 ctrl+alt+delete 按鍵組合時如何反應。這兩個值表示:
  零(0)值表示捕獲 ctrl+alt+delete,並將其送至 init 程序。這將允許系統可以完美地關閉和重啟,就好象您輸入 shutdown 命令一樣。
  壹(1)值表示不捕獲 ctrl+alt+delete,將執行非干淨的關閉,就好象直接關閉電源一樣。
  
  缺省設置:0
  
  /proc/sys/kernel/domainname
  該文件允許您配置網絡域名。它沒有缺省值,也許已經設置了域名,也許沒有設置。
  
  /proc/sys/kernel/hostname
  該文件允許您配置網絡主機名。它沒有缺省值,也許已經設置了主機名,也許沒有設置。
  
  /proc/sys/kernel/msgmax
  該文件指定了從一個進程發送到另一個進程的消息的最大長度。進程間的消息傳遞是在內核的內存中進行,不會交換到磁盤上,所以如果增加該值,則將增加操作系統所使用的內存數量。
  
  缺省設置:8192
  
  /proc/sys/kernel/msgmnb
  該文件指定在一個消息隊列中最大的字節數。
  
  缺省設置:16384
  
  /proc/sys/kernel/msgmni
  該文件指定消息隊列標識的最大數目。
  
  缺省設置:16
  
  /proc/sys/kernel/panic
  該文件表示如果發生“內核嚴重錯誤(kernel panic)”,則內核在重新引導之前等待的時間(以秒為單位)。零(0)秒設置在發生內核嚴重錯誤時將禁止重新引導。
  
  缺省設置:0
  
  /proc/sys/kernel/printk
  該文件有四個數字值,它們根據日志記錄消息的重要性,定義將其發送到何處。關於不同日志級別的更多信息,請閱讀 syslog(2) 聯機幫助頁。該文件的四個值為:
  控制台日志級別:優先級高於該值的消息將被打印至控制台
  缺省的消息日志級別:將用該優先級來打印沒有優先級的消息
  最低的控制台日志級別:控制台日志級別可被設置的最小值(最高優先級)
  缺省的控制台日志級別:控制台日志級別的缺省值
  
  缺省設置:6 4 1 7
  
  /proc/sys/kernel/shmall
  該文件是在任何給定時刻系統上可以使用的共享內存的總量(以字節為單位)。
  
  缺省設置:2097152
  
  /proc/sys/kernel/shmax
  該文件指定內核所允許的最大共享內存段的大小(以字節為單位)。
  
  缺省設置:33554432
  
  /proc/sys/kernel/shmmni
  該文件表示用於整個系統共享內存段的最大數目。
  
  缺省設置:4096
  
  /proc/sys/kernel/sysrq
  如果該文件指定的值為非零,則激活 System Request Key。
  
  缺省設置:0
  
  /proc/sys/kernel/threads-max
  該文件指定內核所能使用的線程的最大數目。
  
  缺省設置:2048
  
  /proc/sys.net
  /proc/sys/net/core/message_burst
  寫新的警告消息所需的時間(以 1/10 秒為單位);在這個時間內所接收到的其它警告消息會被丟棄。這用於防止某些企圖用消息“淹沒”您系統的人所使用的拒絕服務(Denial of Service)攻擊。
  
  缺省設置:50(5 秒)
  
  /proc/sys/net/core/message_cost
  該文件存有與每個警告消息相關的成本值。該值越大,越有可能忽略警告消息。
  
  缺省設置:5
  
  /proc/sys/net/core/netdev_max_backlog
  該文件指定了,在接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
  
  缺省設置:300
  
  /proc/sys/net/core/optmem_max
  該文件指定了每個套接字所允許的最大緩沖區的大小。
  
  /proc/sys/net/core/rmem_default
  該文件指定了接收套接字緩沖區大小的缺省值(以字節為單位)。
  
  /proc/sys/net/core/rmem_max
  該文件指定了接收套接字緩沖區大小的最大值(以字節為單位)。
  
  /proc/sys/net/core/wmem_default
  該文件指定了發送套接字緩沖區大小的缺省值(以字節為單位)。
  
  /proc/sys/net/core/wmem_max
  該文件指定了發送套接字緩沖區大小的最大值(以字節為單位)。
  
  /proc/sys/net/ipv4
  所有 IPv4 和 IPv6 的參數都被記錄在內核源代碼文檔中。請參閱文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt。
  
  /proc/sys/net/ipv6
  同 IPv4。
  
  /proc/sys/vm
  /proc/sys/vm/buffermem
  該文件控制用於緩沖區內存的整個系統內存的數量(以百分比表示)。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
  用於緩沖區的內存的最低百分比
  如果發生所剩系統內存不多,而且系統內存正在減少這種情況,系統將試圖維護緩沖區內存的數量。
  用於緩沖區的內存的最高百分比
  
  缺省設置:2 10 60
  
  /proc/sys/vm/freepages
  該文件控制系統如何應對各種級別的可用內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值。
  如果系統中可用頁面的數目達到了最低限制,則只允許內核分配一些內存。
  如果系統中可用頁面的數目低於這一限制,則內核將以較積極的方式啟動交換,以釋放內存,從而維持系統性能
  內核將試圖保持這個數量的系統內存可用。低於這個值將啟動內核交換。
  
  缺省設置:512 768 1024
  
  /proc/sys/vm/kswapd
  該文件控制允許內核如何交換內存。它有三個值,通過把用空格相隔的一串數字寫入該文件來設置這三個值:
  內核試圖一次釋放的最大頁面數目。如果想增加內存交換過程中的帶寬,則需要增加該值。
  內核在每次交換中試圖釋放頁面的最少次數。
  內核在一次交換中所寫頁面的數目。這對系統性能影響最大。這個值越大,交換的數據越多,花在磁盤尋道上的時間越少。然而,這個值太大會因“淹沒”請求隊列而反過來影響系統性能。
  
  缺省設置:512 32 8
  
  /proc/sys/vm/pagecache
  該文件與 /proc/sys/vm/buffermem 的工作內容一樣,但它是針對文件的內存映射和一般高速緩存。
  
  使內核設置具有持久性
  這裡提供了一個方便的實用程序,用於更改 /proc/sys 目錄下的任何內核參數。它使您可以更改運行中的內核(類似於上面用到的 echo 和重定向方法),但它還有一個在系統引導時執行的配置文件。這使您可以更改運行中的內核,並將這些更改添加到配置文件,以便於在系統重新引導之後,這些更改仍然生效。
  
  該實用程序稱為 sysctl,在 sysctl(8) 的聯機幫助頁中,對這個實用程序進行了完整的文檔說明。sysctl 的配置文件是 /etc/sysctl.conf,可以編輯該文件,並在 sysctl.conf(8) 下記錄了該文件。sysctl 將 /proc/sys 下的文件視為可以更改的單個變量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 為例,它表示系統中所允許的文件句柄的最大數目,這個文件被表示成 fs.file-max。
  
  這個示例揭示了 sysctl 表示法中的一些奇妙事情。由於 sysctl 只能更改 /proc/sys 目錄下的變量,並且人們始終認為變量是在這個目錄下,因此省略了變量名的那一部分(/proc/sys)。另一個要說明的更改是,將目錄分隔符(正斜槓 /)換成了英文中的句號(點 .)。
  
  將 /proc/sys 中的文件轉換成 sysctl 中的變量有兩個簡單的規則:
  去掉前面部分 /proc/sys。
  將文件名中的正斜槓變為點。
  
  這兩條規則使您能將 /proc/sys 中的任一文件名轉換成 sysctl 中的任一變量名。一般文件到變量的轉換為:
  
  /proc/sys/dir/file --> dir.file
  dir1.dir2.file --> /proc/sys/dir1/dir2/file
  
  可以使用命令 sysctl -a 查看所有可以更改的變量和其當前設置。
  
  用 sysctl 還可以更改變量,它所做的工作與上面所用的 echo 方法完全一樣。其表示法為:
  
  sysctl -w dir.file="value"
  
  還是用 file-max 作為示例,使用下面兩種方法中的一種將該值更改為 16384:
  
  sysctl -w fs.file-max="16384"
  
  或者:
  
  echo "16384" > /proc/sys/fs/file-max
  
  不要忘記 sysctl 不會將所做的更改添加到配置文件中;這要您用手工來完成。如果您希望在重新引導之後,前面所做的更改仍然有效,則必須維護這個配置文件。
  
  注:不是所有的分發版都提供 sysctl 支持。如果您的特定系統屬於這種情況,則可以用上面所描述的 echo 和重定向方法,將這些命令添加到啟動腳本中,這樣系統每次引導時,都會執行它們。
  
  用於設置系統的命令
  在系統運行的同時更改其它非內核系統參數,而且在不重新引導系統的情況下使這些設置生效,這種做法是可能的。在 /etc/init.d 目錄中列出了包含這些參數的文件,它們主要按服務、守護程序和服務器來分類。由於越來越多各方面的腳本可以羅列在這個目錄下,所以這裡不可能討論所有各種配置。不過,下面列舉了一些示例,這些示例討論了如何在不同的 Linux 分發版上操作 /etc/init.d 下的腳本。這裡的示例可能很有用,其中討論了更改守護程序,然後在不重新引導系統的情形下重新裝入配置:
  更改 Web 服務器配置,然後重新裝入 Apache
  除去不需要的 inetd 登錄服務
  操作網絡設置
  通過 NFS 導出新的文件系統
  啟動/停止防火牆
  
  首先,常見的方法是,直接通過 /etc/init.d 中的腳本來操作系統服務。這些腳本用參數來操作它們所控制的服務;可以通過輸入腳本名但不帶任何參數這種方法來查看有哪些有效的選項。常見的參數有:
  start:啟動已停止的服務
  stop:停止正在運行的服務
  restart:停止正在運行的服務,然後再重啟該服務;它將啟動已停止的服務
  reload:在不中斷任何連接的情況下,重新裝入服務配置
  status:報告服務處於運行狀態,還是停止狀態
  
  例如,下面這條命令將在不終止任何已連接的用戶會話的情形下,重新裝入 xinetd 配置(如果您更改了 /etc/xinetd.conf,那麼這條命令很有用):
  
  /etc/init.d/xinetd reload
  
  Red Hat 提供了 service 這條命令,它可以為您操作服務。service 命令提供的功能與輸入腳本名本身的功能一樣。它的語法如下所示:
  
  service script-name [parameter]
  
  例如:
  
  service xinetd reload
  
  SuSE 也提供名為 rc 的命令。該命令類似於上面的 service 命令,但該命令與腳本名之間沒有空格。它的語法如下所示:
  
  rc{script-name} parameter
  
  例如:
  
  rcapache start
  
  與更改內核參數類似,一旦重新引導系統,則對這些服務的更改將會丟失。現在越來越多的分發版開始采用 chkconfig 命令,它管理在各種運行級別下(包括引導時)啟動的服務。在撰寫本文時,chkconfig 命令的語法會因 Linux 版本的不同而略有差異,不過如果輸入不帶任何參數的命令 chkconfig,則會顯示一個如何使用該命令的列表。也可以通過 chkconfig(8) 的聯機幫助頁找到更多有關 chkconfig 的信息。
  http://www-900.ibm.com/developerWorks/cn/linux/l-adfly/index.shtml'

Copyright © Linux教程網 All Rights Reserved