linux面試題


1、Linux掛載Winodws共享文件夾:

  1)在windows下建立一個共享文件夾。
  2)確認你的linux安裝了samba軟件包及其客戶端程序(smbclient),因為samba就是提供linux與windows互訪的程序。
  3)開始查看windows下的共享文件目錄:smbclient –L //192.168.1.1,如果連接正常,就可以看到windows下的共享目錄了(字符形式)。
  4)掛載共享目錄:mount –t cifs –ousername=“”,passwd=“”//192.168.1.1/共享文件夾/ /mnt/

2、查看http的並發請求數及其TCP連接狀態:

  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'

3、用tcpdump嗅探80端口的訪問看看誰最高:

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print$1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr|head -20
1)tcpdump -i eth0 -tnn dst port 80 -c 1000:統計本機中目標端口為80的數據包,-tnn:直接以IP及port number顯示,而非主機名與服務名稱,並且不顯示時間戳。-c 1000:統計1000個數據包。
2)awk -F"." '{print$1"."$2"."$3"."$4}':對tcpdump的輸出一行一行得進行處理,以.作為分隔域,將遠程主機IP依次打印出來。
3)sort:對輸出的訪問端IP進行排序。
4)uniq –c:將相同行合並,並統計相同行的數量。
5)sort –nr:以相同行數量進行排序,反向排序,最大的放在最前面。
6)head -20:提取前20行。

4、統計指定目錄的文件個數:

  find / -type f | wc –l
  1)find / -type f:找出根目錄下,一般文件。
  2)wc –l:統計行數。

5、查看IP連接數(訪問本機的遠程主機數量):

netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' |sort | uniq -c | sort –rn
1)netstat –n:列出本機的所有網絡連接,包括TCP/UDP和Unix socket兩部分。
2)awk '/^tcp/ {print $5}':/^tcp/:條件是以tcp開頭的行,^:在此處代表行首的意思。{print $5:將第5個字段打印出來,代表遠程主機的IP和port,默認是以tab作為分隔域。
3)awk -F: '{print $1}':“-F:”:以:作為分隔域;打印第一個字段,將port去掉,只顯示IP。
4)sort:將IP進行排序。
5)uniq –c:將相同行合並,並統計相同行的數量。
6)sort –nr:以相同行數量進行排序,反向排序,最大的放在最前面。

6、shell下32位隨機密碼生成(數字加字母):

方法1:(有點問題)
cat /dev/urandom | sed –e ‘s/[^a-zA-Z0-9]//g’|strings –n 32|head –n 1
1)/dev/urandom:產生隨機數的文件。
2)sed –e ‘s/[^a-zA-Z0-9]//g’:將產生的數據,一行一行進行處理,非字母數字內容刪除掉。
3)string –n 32:設置字符串的位數為32位,也是對每一行進行處理。
4)head –n 1:提取第一行的內容。

方法2:
cat /proc/sys/kernel/random/uuid| md5sum| cut –c 1 -32
1)cat /proc/sys/kernel/random/uuid:讀取UUID碼文件,每次獲得的數據都會不同,為8-4-4-4-12形式數字加字母的字符串。
2)md5sum :將UUID碼轉換為MD5碼(有問題?);
3)cut –c 1-32:選取每行中的1-32字符的內容。

7、統計出apache的access.log中訪問量最多的5個IP:

  cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|sort -rn|head -n 5
  1)查看日志文件即可

8、如何查看二進制文件的內容:

  hexdump -C [filename]:使用hexdump命令即可。

9、ps aux 中VSZ代表什么意思 ,RSS代表什么:

1)ps aux:查看系統正在運行的所有進程。
[1]a:顯示所有與終端相關的進程,由終端發起的.
[2]x:顯示所有與終端無關的進程.
[3]u:顯示用戶導向的用戶列表.
1)VSZ:虛擬內存集,進程占用的虛擬內存空間
2)RSS :物理內存集,進程占用實際物理內存空間.
3)S:可中斷的睡眠態
4)R:運行態
5)D:不可中斷的睡眠態
6)T:停止態
7)Z:僵死態

10、檢測並修復/dev/hda5:

  umount /dev/hda5 ; e2fsck -p /dev/hda5;mount /dev/hda5:卸載/dev/hda5;-p:不詢問使用者意見,便自動修復文件系統;檢測並修復完畢后,記得再重新掛載/dev/hda5。

11、Linux開機啟動順序:

開機順序:
1)BIOS程序讀取CMOS上的信息到內存中,取得各項硬件的參數,對硬件進行檢測和初始化(POST,Power-on self-test,加電自檢),並決定啟動設備次序。
2)BIOS讀取MBR中的引導裝載程序(boot loader)到內存中。
3)引導裝載程序將內核文件讀入內存,內核加載后,重新檢測硬件並加載各硬件的驅動程序,使硬件准備就緒!
4)運行第一個進程initrd,並逐步啟動各種服務。
5)此外,如果是多系統主機,還包括引導加載程序和grub的內容。每個分區也會有引導扇區(boot sector),用於完成多重引導功能。

12、符號鏈接和硬鏈接的區別:

  1)硬連接(實際連接):在目錄的block中將多個文件名對應一個inode,可以理解為文件的別名,不需要占有額外的inode和block,只需要在目錄的block下添加點數據。只能對文件使用硬連接,對目錄不行。使用命令 ln filename1 filename2,將文件filename1產生一個硬連接(別名)filename2.
  2)符號連接(快捷方式):創建一個文件(inode+block),block記載需連接文件的目錄的inode及該文件的文件名,變形成了符號鏈接,可以理解為快捷方式。符號連接可以針對目錄。ln –s filename1 filename2

13、保存當前磁盤分區的分區表:

  sfdisk -d /dev/sdb >/etc/sdbpar.bak :保存分區表
  1)sfdisk –d /dev/sdb:查看整塊硬盤sdb的分區表。

14、檢測並自動修復文件系統:

  e2fsck - check [a Linux ext2/ext3 file system]
  -B 指定塊大小
  -f 強制檢測.
  -p 自動修復文件系統
  1)與第10題一樣

15、手動安裝grub:

  手動安裝grub
  1.grub-install --boot-directory=[指定boot目錄]
  DEVICE(文件系統)
  2.grub
  grub>root (hd0,0):第一個硬盤的第一個分區
  grub>setup (hd0):
  1)grub為開機后系統的引導程序,提供開機時選擇進入哪個系統(多系統環境)。

16、改內核參數:

  # sysctl
  -p 不用重啟系統,讓內核重讀/etc/sysctl.conf文件
  -a 顯示所有內核參數及其正在使用的值.
  -w 臨時設置/etc/sysctl.conf參數sysctl -w net.ipv4.ip_froward=0

17、在指定范圍內取隨機數:
  echo $[$RANDOM%39]:對39進行取余,余數肯定是39以內的數字.

18、限定apache的HTTP服務器:每秒鍾連接數為1,峰值為3:

iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit--limit 1/second --limit-burst 3 -j ACCEPT
1)–A INPUT:新增加一條INPUT表格規則。
2)–d 172.16.100.1:目標主機的IP即本機。此處也可換乘-i
eth0:eth0為HTTP的對外網卡,表示想要進入此網卡的數據包。
3)–p tcp --dport 80:tcp協議,目標端口為80。
4)–m limit --limit 1/second –limit-burst 3:限制每秒鍾連接數為1,峰值為3。
5)–j ACCEPT:操作為接受。

19、FTP主動與被動模式:

1.主動模式
1)客戶端隨機啟動一個大於1024的端口A,和FTP服務器端的命令端口21,經過三次握手后,建立命令傳送通道。
2)客戶端再啟動一個端口(端口號為:A+1),並通過命令傳送通道,告知服務器端。
3)服務器端接受到端口后(A+1),就主動通過20端口和客戶端A+1端口進行三次握手連接,建立數據傳送通道。
4)但是由於客戶端可能存在防火牆的原因,使得服務器端無法連接到客戶端的A+1端口,這就產生了被動連接模式了。
2.
被動模式
1)客戶端隨機啟動一個大於1024的端口A,和FTP服務器端的端口21,經過三次握手后,建立命令傳送通道。
2)服務器端隨機啟動一個端口B,並通過命令傳送通道告知客戶端。
3)客戶端接受到端口后(B),就啟動端口(A+1),和服務器端的B端口經過三次握手連接,建立數據傳送通道

20、顯示/etc/inittab中以#開頭,且后面跟一個或多個空白字符,而后又跟了任意非空白字符的行:

  grep "^\#[[:space:]]\{1,\}.\{1,\}"/etc/inittab
  1)^:行首;\#:轉義字符;[[:space:]]\{1,\}:代表一個或多個空白字符。
  2).\{1,\}:.:代表一定有一個任意字符。

21、顯示/etc/inittab中包含了:一個數字:(即兩個冒號中間一個數字)的行:

  grep "\:[0-9]\:" /etc/inittab
  1)\:轉義字符
  2)[0-9]:代表一定有0-9中的一個數字,

22、怎么把自己寫的腳本添加到服務里面,即可以使用service命令來調用:

1)編寫測試腳本test#!/bin/bash
chkconfig: - 90 10
description: just a test
echo "Hello,$1"
2)使腳本能夠被service命令調用
[1]mv test /etc/init.d/:將腳本放置到stand alone目錄下。
[2]chmod +x /etc/init.d/test:對文件添加x權限,代表可執行。
[3]chkconfig --add test:增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述文件內增加相關數據。
[4]service test start
:開機系統服務“test”。

23、寫一個腳本,實現批量添加20個用戶,用戶名為user1-20,密碼為user后面跟5個隨機字符:

#!/bin/bash
for i in {1..20};
do
pass=$( cat /proc/sys/kernel/random/uuid| md5sum | cut –c 1 -32):讀取uuid文件,生成一個包含5個數字或字母的隨機數,${cmd}為取得命令的結果。
useradd user${i}:添加用戶user1-user20
echo $pass | passwd user${i} –stdin:給用戶設置密碼,--stdin:通過前一個管道輸出,來作為密碼輸入。
echo "user${i} <=============> $pass">> ./userlist.out:將用戶和密碼以累加的方式寫入到userlist.out文件中。
done
echo 'Sucess,passwd is in userlist.out':添加成功。

24、寫一個腳本,實現判斷192.168.1.0/24網絡里,當前在線的IP有哪些,能ping通則認為在線:

1)方法1,使用ping命令:
#!/bin/bash
ips="192.168.1."
for i in {1..254}; do
ping -W 1 -c 1 ${ips}${i} &>/dev/null && echo"${ips}${i} is up" | tee -a uplog.txt || echo "${ips}${i} isdown"
[1]ping -W 1 -c 1 ${ips}${i}:向指定IP發送ICMP數據包,-W 1:等待1秒鍾;-c 1:ping一次。
[2]&>/dev/null: &>等同2>1&:將錯誤信息和正確信息分開,輸入到/dev/null,此處只有錯誤信息,因此也可使用2>/dev/null。
[3]&& echo "${ips}${i} is up":如果能夠ping通過,輸出IP在線的信息。
[4]|tee -a uplog:以累加方式將在線IP記錄到文件uplog.txt。
[5]|| echo "${ips}${i} is down":如果通過ping不通過,輸出IP不在線的信息。
done
echo "Please read uplog to know which host is online. ":在線用戶在文件uplog中。
2)方法2,使用nmap命令
nmap –sp 192.168.1.0/24:通過數據包檢測,分析局域網內有幾台主機是啟動的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM