Linux運維工程師筆試題

shuilaner_發表於2018-11-29

轉:http://wolfword.blog.51cto.com/4892126/1301774

一、基本知識題(共10題,每題3分)

1、用什麼命令查詢指定IP地址的伺服器埠?

 

 

1

yuminstall-y nmap

 


2、用什麼命令定義某個程式執行的優先順序別?

1

nice  renice


3、如何讓history命令顯示具體時間?

1

2

3

HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"

export HISTTIMEFORMAT

重新開機後會還原,可以寫/etc/profile

 

 

1

 

4、檢視Linux系統當前指定使用者的郵件佇列命令是?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[root@test4 ~]# mailq

[root@test4 ~]# mail -u root

Heirloom Mail version 12.4 7/29/08.Type ? for help.

"/var/mail/root"9 messages 8unread

1AnacronTue Jun 1806:4018/625"Anacron job 'cron.daily' ontest4.wolf.org"

>U2 AnacronWed Jun 1914:2918/624"Anacron job 'cron.daily' on test4.wolf.org"

U3AnacronThu Jun 2013:3618/624"Anacron job 'cron.daily' ontest4.wolf.org"

1

Message1:

From root@test4.wolf.orgTue Jun 18 06:40:09 2013

Return-Path: <root@test4.wolf.org>

X-Original-To: root

Delivered-To: root@test4.wolf.org

From: Anacron <root@test4.wolf.org>

To: root@test4.wolf.org

Content-Type: text/plain;charset="ANSI_X3.4-1968"

Subject: Anacron job 'cron.daily' ontest4.wolf.org

Date: Tue, 18 Jun 2013 06:40:09 -0700 (PDT)

Status: RO

/etc/cron.daily/mlocate.cron:

/usr/bin/updatedb: can not open`/etc/updatedb.conf': Permission denied


5、檢視Linux系統當前載入的庫檔案?

1

lsof

 

6.Ext4檔案系統如何恢復rm命令刪除檔案

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Linux下刪除檔案並不是真實的刪除磁碟分割槽中的檔案,而是將檔案的inode節點中的扇區指標清除,同時釋放這些資料對應的資料塊,當釋放的資料塊被系統重新分配時,那些被刪除的資料就會被覆蓋,所以誤刪除資料後,應馬上解除安裝檔案所在的分割槽。

每個檔案有inode和block組成,inode是檔案系統組成的最基本單元,它儲存著檔案的基本屬性(大小、許可權、屬主組等)和存放的位置資訊。而 block用來儲存資料。類似key-value,inode就是key,block對應value,通過key查詢key對應的value。類似 python的字典。

必須先umount要恢復檔案的分割槽或者把分割槽改為只讀模式,命令:mount –o remount,ro 分割槽(例如:dev/hda1)

或者

mount -n -r -o remount /dba1  最好儘快將所在分割槽修改為只讀方式,防止資料被覆蓋使用。

linux下面檢視檔案系統的方法有:

1、mount命令

#mount

/dev/sda1 on / type ext4

表示sda1 的檔案系統是ext4 型別的。

2、命令df

# df -Th

Filesystem    Type   Size  Used Avail Use% Mounted on

/dev/sda1     ext4     13G  7.6G  4.2G 65% /

df 的-T引數就可以顯示檔案系統的型別,-h引數讓其顯示的更人性化。

3、命令  more /etc/fstab

# more /etc/fstab 通過配置檔案檢視

軟體下載:

wget http://sourceforge.net/projects/extundelete/files/extundelete/0.2.0/extundelete-0.2.0.tar.bz2/download

安裝軟體:

yum install e2fsprogs-devel  libcom_err-devel -y

tar -jxfextundelete-0.2.0.tar.gbz2

1.cdextundelete-0.2.0

2../configure

3.make

4.makeinstall

執行恢復動作:

單個檔案的恢復:extundelete /dev/sdaX --restore-file /*/*....*/file

目錄恢復:extundelete /dev/sdaX --restore-directory /*/*....*/dir

恢復近期被刪的所有東西:extundelete /dev/sdaX --restore-all


7、使用tcpdump監聽主機IP為192.168.1.1,tcp埠為80的資料,同時將結果儲存輸出到tcpdump.log,請寫出相應命令。

 

1

[root@test4 ~]# tcpdump tcp port 80andhost 192.168.46.128 –w/root/sss


8、簡述IDS作用和實現原理。

 

1

入侵檢測,裝置放在intelnet進來的第一臺路由後面。對進入路由的所有的包進行檢測,如果有異常就報警。

 


9、用sed修改test.txt的23行test為tset;

1

sed ‘23s/test/tset/g ’ test.txt

 

10、一個EXT3的檔案分割槽,當使用touchtest.file命令建立一個新檔案時報錯,報錯的資訊是提示磁碟已滿,但是採用df -h命令檢視磁碟大約只使用了60%的磁碟空間,為什麼會出現這個情況,說說你的理由。

1

2

1,使用者磁碟配額的問題

2,ext3檔案系統設計的時候不適合很多小檔案和大檔案一樣的檔案格式,很多小檔案會導致inode耗盡

 

11、當使用者在瀏覽器當中輸入一個網站,說說計算機對dns解釋經過那些流程?(注:本機跟本地dns還沒有快取)

1

2

3

4

5

6

7

a.使用者輸入網址到瀏覽器

b.瀏覽器發出DNS請求資訊

c.計算機首先查詢本機HOST檔案,看是否存在,存在直接返回結果,不存在,繼續下一步

d.計算機通過/etc/resolv.conf按照本地DNS的順序,向合法dns伺服器查詢IP結果,

e.合法dns返回dns結果給本地dns,本地dns並快取本結果,直到TTL過期,才再次查詢此結果

f.返回IP結果給瀏覽器

g.瀏覽器根據IP資訊,獲取頁面

 

12.DNS伺服器有哪三種型別

 

1

主   從   快取

 

二、簡述題(共10題,每題7分)

1、linux下如何改IP,主機名,DNS

1

2

3

[root@test4 ~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0

[root@test4 ~]#vim/etc/sysconfig/network

[root@test4 ~]# vim/etc/resolv.conf

 

2、用shell統計ip訪問情況,要求分析nginx訪問日誌,找出訪問頁面數量在前10位的IP數。以下是nginx的訪問日誌節選

202.101.129.218- - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"

請寫shell實現輸出top10的IP列表。

1

2

[root@test4logs]# awk '{print $1}' access.log |sort|uniq -c |head -n 10

31 192.168.46.1

 

 

3、簡述linux下編譯核心的意義與步驟

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

編譯核心的意義在於讓硬體裝置更穩定的發揮其應有的效能;

新核心可以在http://www.kernel.org下載。

先把linux-2.6.18.2.tar.bz2 複製到/usr/src/的下面

tar –jxvf  linux-2.6.18.2.tar.bz2

cd linux-2.6.18.2

make mrproper把原來編譯產生的垃圾刪除

配置核心可以根據需要與愛好使用下面命令中的一個:

#make config (基於文字的最為傳統的配置介面)

#make menuconfig (基於文字選單的配置介面)

#make xconfig (基於圖形視窗模式的配置介面)

#make oldconfig (如果只想在原來核心配置的基礎上修改一些小地方,會省去不少麻煩)

進行配置時,大部分選項可以使用其預設值,只有小部分需要根據使用者不同的需要選擇。例如,如果需要核心支援DOS分割槽的檔案系統,則要在檔案系統部分選擇FAT或DOS系統支援;系統如果配有網路卡、PCMCIA卡等,需要在網路配置中選擇相應卡的型別。

選擇相應的配置時,有三種選擇,它們分別代表的含義如下:

 “Y”-將該功能編譯進核心

 “N”-不將該功能編譯進核心

 “M”-將該功能編譯成可以在需要時動態插入到核心中的模組。

將與核心其它部分關係較遠且不經常使用的部分功能程式碼編譯成為可載入模組,有利於減小核心的長度,減小核心消耗的記憶體,簡化該功能相應的環境改變時對核心的影響。許多功能都可以這樣處理,例如像上面提到的網路卡的支援、對FAT等檔案系統的支援。

其實現在編譯核心最關鍵的地方就是配置核心。我一般用make menuconfig配置核心。

配置2.6.0核心時如果你的主機板是Intel晶片的話,你用預設配製也許就可以得到一個滿意的核心哦。做法是make  menuconfig後離開時選擇儲存。

這裡的難點是pci,如果你硬碟是IDE的那一定要選擇好你主機板上南橋晶片。SCSI的話就是要選擇上你的SCSI卡型號。

還有就是網路卡,音效卡晶片的型號了,他們的型號你都可以用lspci 查詢到比如我的是。

[root@leo boot]# lspci

00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)

00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)

00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB

00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)

00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter

00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)

編譯配置

在這一部分涉及幾個重要模組的配置請,特別注意.一般用"make menuconfig"命令來配置核心.

輸入以上命令後出現一個選單介面,使用者可以對需要的模組.下面著重講幾個重要的配置

1)檔案系統

請務必要選中ext3檔案系統,

File systems--->

[*] Ext3 journalling file system support

[*] Ext3 Security Labels

[*] JBD (ext3) debugging support

  以上三項一定要選上,而且要內建(即 標*). 這個非常重要,在配置完後一定要檢查一下.config檔案有沒有"CONFIG_EXT3_FS=y"這一項. 如果不 是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在執行核心時就會遇上以下錯 誤: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed

2)網路卡驅動

  請務必把自己網路卡對應的驅動編譯進核心,比較普遍的網路卡是realtek 8139,以下就是這種網路卡的配置,以供參考

Device Drivers--->

Networking support--->

Ethernet (10 or 100Mbit) --->

<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

3)音效卡驅動

  也要選擇自己音效卡對應的驅動編譯進核心,比較普遍的音效卡是i810_audio,以下就是這種音效卡的配置,以供參考

Device Drivers --->

Sound --->

<*> Sound card support

Advanced Linux Sound Architecture --->

<*> Advanced Linux Sound Architecture

<*> Sequencer support

< > Sequencer dummy client

<*> OSS Mixer API

<*> OSS PCM (digital audio) API[*] OSS Sequencer API

<*> RTC Timer support

PCI devices --->

<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

Open Sound System --->

< > Open Sound System (DEPRECATED)

以上三項配置關係到新核心能否正常執行,請備加註意.其他的配置如果不是很瞭解,大可以按預設的選擇.

#make dep (確保關鍵檔案在正確的位置) 2.5.*-2.6.0都不需要了。其實2.4.*某些核心也不需要了。

#make clean (確保所有有關檔案都處於最新版本狀態)

#make zImage (編譯壓縮形式的核心)

在需要核心支援較多的外設和功能時,核心可能變得很大,此時可以編譯大核心:

#make bzImage

編譯的時間與機器的硬體條件及核心的配置等因素有關,所獲得的核心的位置在/usr/src/linux/arch/i386/boot目錄下,當然這裡假設使用者的CPU是x86型的。

如果選擇了可載入模組,編譯完核心後,要對選擇的模組進行編譯:

#make modules (編譯選擇的模組)

#make module_install (將編譯後的模組轉移到系統標準位置)

# make install

上面的命令"make install"將:

 (1)把壓縮核心映象拷貝到/boot目錄下, 並建立相應的System.map符號連結;

 (2)修改bootloader的配置檔案;

 (3)呼叫mkinitrd程式建立核心的initrd映象. 對於GRUB而言, 將在/boot/grub/grub.conf配置檔案增加如下類似的配置行:

      title Red Hat Linux (2.***)

      root(hd0, 1)

      kernel /boot/vmlinuz-2.*** ro root=LABEL=/

      initrd /boot/initrd-2.***.img

模組在系統中的標準目錄位於/lib/modules/x.y.z,後面的x.y.z是版本號,為安全起見,在執行#make  modules_install之前最好對/lib/modules進行備份。模組通常是帶有副檔名.o的檔案,使用命令#lsmod可以對當前核心的模組進行列表。

我一般是make bzImage;make modules;make module_install; make install

執行新核心之前,請檢查一下/boot/grub/grub.conf的內容,下面的配置可作參考

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

#          initrd /initrd-version.img

#boot=/dev/hda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Fedora Core (2.6.18.2)

        root (hd0,0)

        kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

        initrd /initrd-2.6.18.2.img

title Fedora Core (2.6.18-1.2798.fc6)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

        initrd /initrd-2.6.18-1.2798.fc6.img

現在重啟機器,即可測試最新的核心。

 

 

4、簡述Linux啟動過程

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

計算機開機是一個神祕的過程。我們只是按了開機鍵,就看到螢幕上的進度條或者一行行的輸出,直到我們到達登入介面。然而,計算機開機又是個異常脆弱的過程,我們滿心期望的登入介面可能並不會出現,而是一個命令列或者錯誤資訊。瞭解計算機開機過程有助於我們修復開機可能出現的問題。

1) 最初始階段:

當我們開啟計算機電源,計算機會自動從主機板的BIOS(Basic Input/OutputSystem)讀取其中所儲存的程式。這一程式通常知道一些直接連線在主機板上的硬體(硬碟,網路介面,鍵盤,串列埠,並口)。現在大部分的BIOS允許你從軟盤、光碟或者硬碟中選擇一個來啟動計算機。

下一步,計算機將從你所選擇的儲存裝置中讀取起始的512 bytes(比如光碟一開是的512 bytes,如果我們從光碟啟動的話)。這512 bytes叫做主開機記錄MBR (masterboot record)。MBR會告訴電腦從該裝置的某一個分割槽(partition)來裝載引導載入程式(boot loader)。Boot loader儲存有作業系統(OS)的相關資訊,比如作業系統名稱,作業系統核心(kernel)所在位置等。常用的boot loader有GRUB和LILO。

隨後,boot loader會幫助我們載入kernel。kernel實際上是一個用來操作計算機的程式,它是計算機作業系統的核心,主要的任務是管理計算機的硬體資源,充當軟體和硬體的介面。作業系統上的任何操作都要通過kernel傳達給硬體。Windows和Linux各自有自己kernel。狹義的作業系統就是指kernel,廣義的作業系統包括kernel以及kernel之上的各種應用。

(Linus Torvalds與其說是Linux之父,不如說是Linux kernel之父。他依然負責Linux kernel的開發和維護。至於Ubuntu, Red Hat, 它們都是基於相同的kernel之上,囊括了不同的應用和介面構成的一個更加完整的作業系統版本。)

實際上,我們可以在多個分割槽安裝boot loader,每個boot loader對應不同的作業系統,在讀取MBR的時候選擇我們想要啟動的boot loader。這就是多作業系統的原理。

小結:BIOS -> MBR ->boot loader -> kernel

2) kernel

如果我們載入的是Linux kernel,Linux kernel開始工作。kernel會首先預留自己執行所需的記憶體空間,然後通過驅動程式(driver)檢測計算機硬體。這樣,作業系統就可以知道自己有哪些硬體可用。隨後,kernel會啟動一個init程式。它是Linux系統中的1號程式(Linux系統沒有0號程式)。到此,kernel就完成了在計算機啟動階段的工作,交接給init來管理。

小結: kernel -> init process

3) initprocess

(根據boot loader的選項,Linux此時可以進入單使用者模式(singleuser mode)。在此模式下,初始指令碼還沒有開始執行,我們可以檢測並修復計算機可能存在的錯誤)

隨後,init會執行一系列的初始指令碼(startup scripts),這些指令碼是Linux中常見的shell scripts。這些指令碼執行如下功能:

設定計算機名稱,時區,檢測檔案系統,掛載硬碟,清空臨時檔案,設定網路……

當這些初始指令碼,作業系統已經完全準備好了,只是,還沒有人可以登入!!!init會給出登入(login)對話方塊,或者是圖形化的登入介面。

輸入使用者名稱(比如說vamei)和密碼,DONE!

在此後的過程中,你將以使用者(user)vamei的身份操作電腦。此外,根據你建立使用者時的設定,Linux還會將你歸到某個組(group)中,比如可以是stupid組,或者是vamei組。

所以你將是使用者vamei,同時是vamei組的組員。(注意,組vamei和使用者vamei只是重名而已,就好想你可以叫Dell, 同時還是Dell公司的老闆一樣。你完全也可以是使用者vamei,同時為stupid組的組員)

總結:

BIOS ->MBR -> boot loader -> kernel -> init process -> login

使用者,組。

 

 

 

5.你說下你技術的強項和不足?

 

6.如果給你300臺伺服器,你該怎麼去管理?

 

7.在一個系統架構中,我們為了避免單點故障,會怎麼做?

 

1

系統叢集高可用

 

8、 xen環境下,如何調整虛擬機器記憶體及vcpu數?

1

2

更改虛擬機器分配的CPU數量。要更改此設定,既可以利用虛擬機器管理器(Virtual Machine Manager)進行,也可以使用xm vcpu-set命令。例如,將domain 1分配的VCPU數改為4個,則:

xm vcpu-set 1 4

 

 

9、簡述下一般調整哪些核心引數

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

linux 核心引數調整說明

所有的TCP/IP調優引數都位於/proc/sys/net/目錄。例如, 下面是最重要的一些調優引數, 後面是它們的含義:

1. /proc/sys/net/core/rmem_max — 最大的TCP資料接收緩衝。

2. /proc/sys/net/core/wmem_max — 最大的TCP資料傳送緩衝。

3. /proc/sys/net/ipv4/tcp_timestamps — 時間戳在(請參考RFC 1323)TCP的包頭增加12個位元組。

4. /proc/sys/net/ipv4/tcp_sack — 有選擇的應答。

5. /proc/sys/net/ipv4/tcp_window_scaling — 支援更大的TCP視窗. 如果TCP視窗最大超過65535(64KB), 必須設定該數值為1

6. rmem_default — 預設的接收視窗大小。

7. rmem_max — 接收視窗的最大大小。

8. wmem_default — 預設的傳送視窗大小。

9. wmem_max — 傳送視窗的最大大小。

/proc目錄下的所有內容都是臨時性的, 所以重啟動系統後任何修改都會丟失。

建議在系統啟動時自動修改TCP/IP引數:

把下面程式碼增加到/etc/rc.local檔案, 然後儲存檔案, 系統重新引導的時候會自動修改下面的TCP/IP引數:

echo 256960 > /proc/sys/net/core/rmem_default

echo 256960 > /proc/sys/net/core/rmem_max

echo 256960 > /proc/sys/net/core/wmem_default

echo 256960 > /proc/sys/net/core/wmem_max

echo 0 > /proc/sys/net/ipv4/tcp_timestamps

echo 1 > /proc/sys/net/ipv4/tcp_sack

echo 1 > /proc/sys/net/ipv4/tcp_window_scaling

TCP/IP引數都是自解釋的, TCP視窗大小設定為256960, 禁止TCP的時間戳(取消在每個資料包的頭中增加12位元組), 支援更大的TCP視窗和TCP有選擇的應答。

上面數值的設定是根據互連網連線和最大頻寬/延遲率來決定。

注: 上面例項中的數值可以實際應用, 但它只包含了一部分引數。

另外一個方法: 使用 /etc/sysctl.conf 在系統啟動時把引數配置成您所設定的值:

net.core.rmem_default = 256960

net.core.rmem_max = 256960

net.core.wmem_default = 256960

net.core.wmem_max = 256960

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_sack =1

net.ipv4.tcp_window_scaling = 1

設定Linux核心引數

配置 Linux 核心引數(2種方法),修改後不用重啟動更新: /sbin/sysctl -p

第一種:開啟/etc/sysctl.conf 複製如下內容

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

第二種:開啟終端

cat >> /etc/sysctl.conf<

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

EOF

這裡,對每個引數值做個簡要的解釋和說明。

1)shmmax:該引數定義了共享記憶體段的最大尺寸(以位元組為單位)。預設為32M,對於oracle來說,該預設值太低了,通常將其設定為2G。

2)shmmni:這個核心引數用於設定系統範圍內共享記憶體段的最大數量。該引數的預設值是 4096 。通常不需要更改。

3)shmall:該參數列示系統一次可以使用的共享記憶體總量(以頁為單位)。預設值就是2097152,通常不需要修改。

4)sem:該參數列示設定的訊號量。

5)file-max:該參數列示檔案控制程式碼的最大數量。檔案控制程式碼設定表示在linux系統中可以開啟的檔案數量。

修改好核心以後,執行下面的命令使新的配置生效。

[root @linux1 /root]# /sbin/sysctl-p

以 root 使用者身份執行以下命令來驗證您的設定:

/sbin/sysctl -a | grep shm

/sbin/sysctl -a | grep sem

/sbin/sysctl -a | grep file-max

/sbin/sysctl -a | grep ip_local_port_range

例如:

# /sbin/sysctl -a | grep shm

kernel.shmmni = 4096

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shm-use-bigpages = 0

# /sbin/sysctl -a | grep sem

kernel.sem = 250 32000 100 128

# /sbin/sysctl -a | grep file-max

fs.file-max = 65536

# /sbin/sysctl -a | grep ip_local_port_range

net.ipv4.ip_local_port_range = 1024 65000

如果系統的引數設定的比上述引數值小,則編輯/etc/sysctl.conf 檔案,新增或更改這些引數。完成後,執行以下命令啟用更改:

/sbin/sysctl -p

 

 

10、最大開啟檔案數如何調整

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

修改下Linux的配置:

修改 /etc/sysctl.conf,增加fs.file-max = 8061540

修改 /etc/security/limit.conf,增加 * soft 8192 和 * hard 16384

ulimit -n 4096

也就是限制使用者的最大檔案開啟數為4096

當前設定最大開啟檔案數可以通過如下命令檢視。

ulimit -n

這個數字說明了一個普通使用者能夠在一個單獨會話中所能開啟最大的檔案數目。注意。如果是root,以下操作不能使ulimit -n的輸出增加。因為使用者root使用者不受這個ulimit限制。只有普通使用者才會受這個限制。

為了提高最大開啟檔案數到預設值1024以上,需要在系統上修改2個地方。在這個案例中,我們將最大開啟檔案數增加到2048。所有的步驟需要root使用者操作。普通使用者需要重新登入才能使設定生效。

1. 按照最大開啟檔案數量的需求設定系統,並且通過檢查/proc/sys/fs/file-max檔案來確認最大開啟檔案數已經被正確設定。

# cat /proc/sys/fs/file-max

如果設定值太小,修改檔案/etc/sysctl.conf的變數到合適的值。這樣會在每次重啟之後生效。如果設定值夠大,跳過下步。

# echo 2048 > /proc/sys/fs/file-max編輯檔案/etc/sysctl.conf,插入下行。   fs.file-max = 2048

2. 在/etc/security/limits.conf檔案中設定最大開啟檔案數,下面是一行提示:

#<domain><type><item> <value>新增如下這行。

* – nofile 2048

這行設定了每個使用者的預設開啟檔案數為2048。注意”nofile”項有兩個可能的限制措施。

就是<type>項下的hard和soft。要使修改過得最大開啟檔案數生效,必須對這兩種限制進行設定。

如果使用”-”字元設定<type>, 則hard和soft設定會同時被設定。

硬限制表明soft限制中所能設定的最大值。 soft限制指的是當前系統生效的設定值。

hard限制值可以被普通使用者降低。但是不能增加。 soft限制不能設定的比hard限制更高。只有root使用者才能夠增加hard限制值。

eg:

我在google上搜尋過關於ulimit命令的一些用法,其中有

ulimit -n 4096

也就是限制使用者的最大檔案開啟數為4096

在網上查了關於怎麼檢視檔案開啟數的文章大致有兩種說法

/proc/sys/fs/file-nr

該檔案與 file-max 相關,它有三個值:

已分配檔案控制程式碼的數目

已使用檔案控制程式碼的數目

檔案控制程式碼的最大數目

該檔案是隻讀的,僅用於顯示資訊。

[root@linux /]# cat /proc/sys/fs/file-max

8061540

[root@linux /]# cat /proc/sys/fs/file-nr

900 0 8061540

檢視所有程式的檔案開啟數

lsof |wc -l

檢視某個程式開啟的檔案數

lsof -p pid |wc -l

檢視java程式的PID

[root@linux /]# ps -ef |grep java

root 1040797800 14:50 pts/100:00:00 grep java

kill -9 9780 就能全部殺掉 java程式。 pid 就是9780 

[root@linux /]# lsof |wc -l

1238

[root@linux /]# lsof -p 9780 |wc -l

18

相關文章