真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

sysctl與/proc詳解-創(chuàng)新互聯(lián)

目錄

成都創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為關(guān)嶺企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、做網(wǎng)站,關(guān)嶺網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

一、sysctl簡介

二、sysctl命令使用

三、sysctl配置文件/etc/sysctl.conf詳解

四、/proc目錄簡介

五、/proc/sys下內(nèi)核文件與配置文件sysctl.conf中變量的對(duì)應(yīng)關(guān)系

一、sysctl簡介

   sysctl 是一個(gè)用來在系統(tǒng)運(yùn)作中查看及調(diào)整系統(tǒng)參數(shù)的工具。有的sysctl參數(shù)只是用來查看目前的系統(tǒng)狀況,例如查看目前已開機(jī)時(shí)間、所使用的操作系統(tǒng)版本、核心名稱等等;而有的可以讓我們修改參數(shù)以調(diào)整系統(tǒng)運(yùn)作的行為,例如網(wǎng)絡(luò)暫存內(nèi)存的大小、大的上線人數(shù)等等。

/etc/sysctl.conf就是sysctl的配置文件,而這些可以調(diào)整的參數(shù)中必須在一開機(jī)系統(tǒng)執(zhí)行其它程序前就設(shè)定好,有的可以在開機(jī)完后任意調(diào)整。同大多數(shù)配置文件一樣,我們可以對(duì)sysctl.conf進(jìn)行配置來優(yōu)化系統(tǒng)的性能.

二、sysctl命令使用

[root@www ~]# sysctl --help usage:  sysctl [-n] [-e] variable ...          sysctl [-n] [-e] [-q] -w variable=value ...          sysctl [-n] [-e] -a          sysctl [-n] [-e] [-q] -p    (default /etc/sysctl.conf)          sysctl [-n] [-e] -A

常用參數(shù):

   -w  臨時(shí)改變某個(gè)指定參數(shù)的值,如

     sysctl -w net.ipv4.ip_forward=1

   -a  顯示所有的系統(tǒng)參數(shù)

   -p  從指定的文件加載系統(tǒng)參數(shù),如不指定即從/etc/sysctl.conf中加載

三、sysctl配置文件/etc/sysctl.conf

[root@ElementServer ~]# cat /etc/sysctl.conf|grep -v '^#\|^$' net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 kernel.msgmnb = 5368760912 kernel.msgmax = 16777216 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 kernel.shmmni = 8192 fs.file-max = 6553560

解釋一下sysctl.conf文件中參數(shù)的意義:

  • net.ipv4.ip_forward = 0:

  •    出于安全考慮,Linux系統(tǒng)默認(rèn)是禁止數(shù)據(jù)包轉(zhuǎn)發(fā)的。所謂轉(zhuǎn)發(fā)即當(dāng)主機(jī)擁有多于一塊的網(wǎng)卡時(shí),其中一塊收到數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的目的ip地址將包發(fā)往本機(jī)另一網(wǎng)卡,該網(wǎng)卡根據(jù)路由表繼續(xù)發(fā)送數(shù)據(jù)包。這通常就是路由器所要實(shí)現(xiàn)的功能。

    配置Linux系統(tǒng)的ip轉(zhuǎn)發(fā)功能,首先保證硬件連通,然后打開系統(tǒng)的轉(zhuǎn)發(fā)功能

  • less /proc/sys/net/ipv4/ip_forward,該文件內(nèi)容為0,表示禁止數(shù)據(jù)包轉(zhuǎn)發(fā),1表示允許,將其修改為1??墒褂妹?strong>echo "1" > /proc/sys/net/ipv4/ip_forward 修改文件內(nèi)容,重啟網(wǎng)絡(luò)服務(wù)或主機(jī)后效果不再。若要其自動(dòng)執(zhí)行,可在/etc/sysctl.conf中net.ipv4.ip_forward = 1

  • 捉著命令echo "1" > /proc/sys/net/ipv4/ip_forward 寫入腳本/etc/rc.d/rc.local

  • 或者 在/etc/sysconfig/network腳本中添加 FORWARD_IPV4="YES"

  • kernel.shmmax

  • 是核心參數(shù)中最重要的參數(shù)之一,用于定義單個(gè)共享內(nèi)存段的大值。設(shè)置應(yīng)該足夠大,能在一個(gè)共享內(nèi)存段下容納下整個(gè)的SGA ,設(shè)置的過低可能會(huì)導(dǎo)致需要?jiǎng)?chuàng)建多個(gè)共享內(nèi)存段,這樣可能導(dǎo)致系統(tǒng)性能的下降。至于導(dǎo)致系統(tǒng)下降的主要原因?yàn)樵趯?shí)例啟動(dòng)以及ServerProcess創(chuàng)建的時(shí)候,多個(gè)小的共享內(nèi)存段可能會(huì)導(dǎo)致當(dāng)時(shí)輕微的系統(tǒng)性能的降低(在啟動(dòng)的時(shí)候需要去創(chuàng)建多個(gè)虛擬地址段,在進(jìn)程創(chuàng)建的時(shí)候要讓進(jìn)程對(duì)多個(gè)段進(jìn)行“識(shí)別”,會(huì)有一些影響),但是其他時(shí)候都不會(huì)有影響。

  • 官方建議值:

  • 32位linux系統(tǒng):可取大值為4GB(4294967296bytes)-1byte,即4294967295。建議值為多于內(nèi)存的一半,所以如果是32為系統(tǒng),一般可取值為4294967295。32位系統(tǒng)對(duì)SGA大小有限制,所以SGA肯定可以包含在單個(gè)共享內(nèi)存段中。

  • 64位linux系統(tǒng):可取的大值為物理內(nèi)存值-1byte,建議值為多于物理內(nèi)存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理內(nèi)存-1byte。例如,如果為12GB物理內(nèi)存,可取12*1024*1024*1024-1=12884901887,SGA肯定會(huì)包含在單個(gè)共享內(nèi)存段中。

  • kernel.shmall

  •     該參數(shù)控制可以使用的共享內(nèi)存的總頁數(shù)。Linux共享內(nèi)存頁大小為4KB,共享內(nèi)存段的大小都是共享內(nèi)存頁大小的整數(shù)倍。一個(gè)共享內(nèi)存段的大大小是16G,那么需要共享內(nèi)存頁數(shù)是16GB/4KB=16777216KB /4KB=4194304(頁),也就是64Bit系統(tǒng)下16GB物理內(nèi)存,設(shè)置kernel.shmall = 4194304才符合要求(幾乎是原來設(shè)置2097152的兩倍)。這時(shí)可以將shmmax參數(shù)調(diào)整到16G了,同時(shí)可以修改SGA_MAX_SIZE和SGA_TARGET為12G(您想設(shè)置的SGA大大小,當(dāng)然也可以是2G~14G等,還要協(xié)調(diào)PGA參數(shù)及OS等其他內(nèi)存使用,不能設(shè)置太滿,比如16G)

  • kernel.shmmni

  • 該參數(shù)是共享內(nèi)存段的大數(shù)量。shmmni缺省值4096,一般肯定是夠用了。

  • fs.file-max

  • 該參數(shù)決定了系統(tǒng)中所允許的文件句柄大數(shù)目,文件句柄設(shè)置代表linux系統(tǒng)中可以打開的文件的數(shù)量。

  • fs.aio-max-nr

  • 此參數(shù)限制并發(fā)未完成的請(qǐng)求,應(yīng)該設(shè)置避免I/O子系統(tǒng)故障。

  •    推薦值是:1048576 其實(shí)它等于 1024*1024 也就是 1024K 個(gè)。

  • kernel.sem

  • 以kernel.sem = 250 32000 100 128為例:

  •        250是參數(shù)semmsl的值,表示一個(gè)信號(hào)量集合中能夠包含的信號(hào)量大數(shù)目。

  •        32000是參數(shù)semmns的值,表示系統(tǒng)內(nèi)可允許的信號(hào)量大數(shù)目。

  •        100是參數(shù)semopm的值,表示單個(gè)semopm()調(diào)用在一個(gè)信號(hào)量集合上可以執(zhí)行的操作數(shù)量。

  •        128是參數(shù)semmni的值,表示系統(tǒng)信號(hào)量集合總數(shù)。

  • net.ipv4.ip_local_port_range

  •     表示應(yīng)用程序可使用的IPv4端口范圍。

  • net.core.rmem_default

  • 表示套接字接收緩沖區(qū)大小的缺省值。

  • net.core.rmem_max

  • 表示套接字接收緩沖區(qū)大小的大值。

  • net.core.wmem_default

  • 表示套接字發(fā)送緩沖區(qū)大小的缺省值。

  • net.core.wmem_max

  • 表示套接字發(fā)送緩沖區(qū)大小的大值

四、/proc目錄簡介

    大家都知道進(jìn)程都 是在內(nèi)存中,而內(nèi)存中的數(shù)據(jù)都寫入到了/proc/目錄中的文件中去了,所以很有必要分析這個(gè)文件夾內(nèi)的內(nèi)容。由于系統(tǒng)的信息,如進(jìn)程,是動(dòng)態(tài)改變的,所以用戶或應(yīng)用程序讀取proc文件時(shí),proc文件系統(tǒng)是動(dòng)態(tài)從系統(tǒng)內(nèi)核讀出所需信息并提交的。

1、proc文件系統(tǒng)總覽
    在類Unix系統(tǒng)中體現(xiàn)了一種良好的抽象哲學(xué),就是幾乎所有的數(shù)據(jù)實(shí)體都被抽象成一個(gè)統(tǒng)一的接口--文件來看待,這樣我們就可以用一些簡單的基本工具完成大量復(fù)雜的操作。

在Linux中存在著一類特殊的偽文件系統(tǒng),用于使用與文件接口統(tǒng)一的操作來完成各種功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中應(yīng)用最廣泛的一種偽文件系統(tǒng)。
   procfs是Linux內(nèi)核信息的抽象文件接口,大量內(nèi)核中的信息以及可調(diào)參數(shù)都被作為常規(guī)文件映射到一個(gè)目錄樹中,這樣我們就可以簡單直接的通過echo或cat這樣的文件操作命令對(duì)系統(tǒng)信息進(jìn)行查取和調(diào)整了。同時(shí)procfs也提供了一個(gè)接口,使得我們自己的內(nèi)核模塊或用戶態(tài)程序可以通過procfs進(jìn)行參數(shù)的傳遞。在當(dāng)今的Linux系統(tǒng)中,大量的系統(tǒng)工具也通過procfs獲取內(nèi)核參數(shù),例如ps、lspci等等,沒有procfs它們將可能不能正常工作。
procfs的使用如同常規(guī)的文件系統(tǒng)一樣,例如加載一個(gè)procfs (首先確定你的內(nèi)核已經(jīng)支持procfs默認(rèn)如此):
# mount -t proc none /proc
也可以在/etc/fstab中加入如下一行使系統(tǒng)在啟動(dòng)時(shí)自動(dòng)加載procfs(大多數(shù)系統(tǒng)中也是默認(rèn)如此):
none /proc proc defaults 0 0
在proc文件系統(tǒng)中,主要包含三大類內(nèi)容,進(jìn)程相關(guān)部分,系統(tǒng)信息部分,以及系統(tǒng)子系統(tǒng)部分。

在下面我們可以看到一個(gè)典型的procfs布局:

[root@www ~]# ls /proc 1     1230  147  2198   283  41   750        cpuinfo      ipmi        misc          slabinfo       vmstat 10    1238  148  22     284  42   8          crypto       irq         modules       softirqs       zoneinfo 1007  1249  15   2265   29   5    8958       devices      kallsyms    mounts        stat 1037  1262  156  22958  293  586  9          diskstats    kcore       mpt           swaps 1046  1264  157  22966  3    6    9271       dma          keys        mtd           sys 1047  1266  158  23     30   7    935        driver       key-users   mtrr          sysrq-trigger 1076  1268  16   23062  31   705  951        execdomains  kmsg        net           sysvipc 1091  1271  17   23215  32   706  acpi       fb           kpagecount  pagetypeinfo  timer_list 11    1273  18   24     33   707  asound     filesystems  kpageflags  partitions    timer_stats 1110  1274  19   25     369  708  buddyinfo  fs           loadavg     sched_debug   tty 1198  1275  2    26     38   709  bus        interrupts   locks       schedstat     uptime 12    13    20   27     39   710  cgroups    iomem        mdstat      scsi          version 1222  14    21   28     4    72   cmdline    ioports      meminfo     self          vmallocinfo

在上面中我們可以看到procfs包含的內(nèi)容:
* 進(jìn)程相關(guān)部分 (只讀)
   這部分文件都是以數(shù)字為名的子目錄,這個(gè)數(shù)字就是相關(guān)進(jìn)程的進(jìn)程ID,在后面中會(huì)詳細(xì)介紹進(jìn)程相關(guān)子目錄的結(jié)構(gòu)和信息。
需要注意的是procfs中進(jìn)程子系統(tǒng)部分的一個(gè)特殊點(diǎn),就是/proc/self,它是指向當(dāng)前執(zhí)行進(jìn)程的符號(hào)連接,或者說--是指向未來你將要執(zhí)行指令的心靈感應(yīng):
> cat self/cmdline
catself/cmdline
在這個(gè)命令中,我們希望它顯示當(dāng)前進(jìn)程的cmdline參數(shù),它恰恰就顯示了當(dāng)前進(jìn)程--我們所執(zhí)行的這條命令,cat self/cmdline。幸好這條指令顯示出的信息會(huì)忽略空格,導(dǎo)致顯示略微的不正常,否則我們倒是可以很容易的使用`cat self/cmdline`這樣的命令制造出永遠(yuǎn)循環(huán)執(zhí)行的進(jìn)程來。;>
* 內(nèi)核信息部分 (只讀)
    這部分文件同樣處于/proc的頂層目錄,不過它們大部分都是常規(guī)、只讀的文本文件,可以直接用cat查看信息。作為系統(tǒng)內(nèi)核執(zhí)行體的抽象,我們也可以把它看作內(nèi)核"進(jìn)程"的信息部分,當(dāng)然雖然并不存在這個(gè)進(jìn)程實(shí)體。這里比較特別的一個(gè)文件是 /proc/cmdline :
>cat cmdline
ro root=/dev/hda2
在這個(gè)文件中存放的是系統(tǒng)內(nèi)核引導(dǎo)時(shí)的命令行參數(shù)。
* 內(nèi)核各子系統(tǒng)相關(guān)部分 (部分可調(diào))
   這部分是系統(tǒng)內(nèi)核參數(shù)調(diào)整的重頭戲,在procfs中,除去上面所述的兩部分內(nèi)容外,還有很大一部分信息文件被存放在了一些并非以數(shù)字命名的特殊目錄中,這些目錄下的信息就是內(nèi)核各個(gè)重要子系統(tǒng)的信息和可調(diào)參數(shù),

主要有:
bus 總線信息(只讀)
drivers 驅(qū)動(dòng)信息(只讀)
fs 文件系統(tǒng)特別信息(只讀)
ide IDE接口信息(只讀)
irq IRQ信息(只讀)
net 網(wǎng)絡(luò)子系統(tǒng)信息(只讀)
scsi SCSI系統(tǒng)信息(只讀)
sysvipc IPC子系統(tǒng)信息(只讀)
tty tty子系統(tǒng)信息(只讀)
sys 系統(tǒng)內(nèi)核可調(diào)參數(shù) (可調(diào))
作為Linux系統(tǒng)內(nèi)核參數(shù)的抽象文件接口,Linux內(nèi)核的大部分默認(rèn)可調(diào)參數(shù)都被放在了 /proc/sys目錄下,這些參數(shù)都以常規(guī)文件的形式體現(xiàn),并且可以用echo/cat等文件操作命令進(jìn)行調(diào)整,調(diào)整的效果是即時(shí)的,并且在系統(tǒng)運(yùn)行的整個(gè)生命周期之間都有效(直到再次改變它們或者系統(tǒng)重啟)。
當(dāng)然Linux也提供了另外一種途徑sysctl來調(diào)整這些參數(shù),sysctl是從BSD系統(tǒng)繼承而來的一種系統(tǒng)參數(shù)動(dòng)態(tài)調(diào)整方法,sysctl的使用更為簡單,并且可以使用/etc/sysctl.conf保存配置以在下次啟動(dòng)時(shí)自動(dòng)加載這些設(shè)置

   在/proc/sys目錄下存放著大多數(shù)的內(nèi)核參數(shù),并且設(shè)計(jì)成可以在系統(tǒng)運(yùn)行的同時(shí)進(jìn)行更改, 可以通過更改/proc/sys中內(nèi)核參數(shù)對(duì)應(yīng)的文件達(dá)到修改內(nèi)核參數(shù)的目的(修改過后,保存配置文件就馬上自動(dòng)生效),不過重新啟動(dòng)機(jī)器后之前修改的參數(shù)值會(huì)失效,所以只能是一種臨時(shí)參數(shù)變更方案。(適合調(diào)試內(nèi)核參數(shù)優(yōu)化值的時(shí)候使用,如果設(shè)置值有問題,重啟服務(wù)器還原原來的設(shè)置參數(shù)值了。簡單方便。)

   但是如果調(diào)試內(nèi)核參數(shù)優(yōu)化值結(jié)束后,需要永久保存參數(shù)值,就要通過修改/etc/sysctl.conf內(nèi)的內(nèi)核參數(shù)來永久保存更改。但只是修改sysctl文件內(nèi)的參數(shù)值,確認(rèn)保存修改文件后,設(shè)定的參數(shù)值并不會(huì)馬上生效,如果想使參數(shù)值修改馬上生效,并且不重啟服務(wù)器,可以執(zhí)行下面的命令:

#sysctl –p

五、/proc/sys下內(nèi)核文件與配置文件sysctl.conf中變量的對(duì)應(yīng)關(guān)系

由于可以修改的內(nèi)核參數(shù)都在/proc/sys目錄下,所以sysctl.conf的變量名省略了目錄的前面部分(/proc/sys)。

即將/proc/sys中的文件轉(zhuǎn)換成sysctl中的變量依據(jù)下面兩個(gè)簡單的規(guī)則:

1.去掉前面部分/proc/sys

2.將文件名中的斜杠變?yōu)辄c(diǎn)

這兩條規(guī)則可以將/proc/sys中的任一文件名轉(zhuǎn)換成sysctl中的變量名。

例如:

/proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward

/proc/sys/kernel/hostname =》 kernel.hostname

可以使用下面命令查詢所有可修改的變量名

# sysctl –a

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁名稱:sysctl與/proc詳解-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/dcospj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部