【牛客 錯題集】Linux系統方面錯題合集

前言:牛客Linux322道所有刷完,有些題目較老,甚至考覈5系統,如今7都出來了幾年了 = = 還有些題目解析的很好部分也摘錄了進來。不少涉及嵌入式開發的選擇題一樣的摘錄的做爲了解使用


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下列那些命令能夠看到文件的大小? ls 顯示目錄內容 df 查看文件系統佔用的磁盤空間使用狀況 du 查看指定文件和目錄所佔用的空間大小 Unix系統和宗,下列那些能夠用於進程間的通信: socket、共享內存、消息隊列、信號量
unix進程間的通訊方式 (1)管道(Pipe):管道可用於具備親緣關係進程間的通訊,容許一個進程和另外一個與它有共同祖先的進程之間進行通訊。 (2)命名管道(named pipe):命名管道克服了管道沒有名字的限制,所以,除具備管道所具備的功能外,它還容許無親緣關係進程間的通訊。命名管道在文件系統中有對應的文件名。命名管道經過命令mkfifo或系統調用mkfifo來建立。 (3)信號(Signal):信號是比較複雜的通訊方式,用於通知接受進程有某種事件發生,除了用於進程間通訊外,進程還能夠發送信號給進程自己;linux除了支持Unix早期信號語義函數sigal外,還支持語義符合Posix.1標準的信號函數sigaction(實際上,該函數是基於BSD的,BSD爲了實現可靠信號機制,又可以統一對外接口,用sigaction函數從新實現了signal函數)。 (4)消息(Message)隊列:消息隊列是消息的連接表,包括Posix消息隊列system V消息隊列。有足夠權限的進程能夠向隊列中添加消息,被賦予讀權限的進程則能夠讀走隊列中的消息。消息隊列克服了信號承載信息量少,管道只能承載無格式字節流以及緩衝區大小受限等缺 (5)共享內存:使得多個進程能夠訪問同一塊內存空間,是最快的可用IPC形式。是針對其餘通訊機制運行效率較低而設計的。每每與其它通訊機制,如信號量結合使用,來達到進程間的同步及互斥。 (6)內存映射(mapped memory):內存映射容許任何多個進程間通訊,每個使用該機制的進程經過把一個共享的文件映射到本身的進程地址空間來實現它。 (7)信號量(semaphore):主要做爲進程間以及同一進程不一樣線程之間的同步手段。 (8)套接口(Socket):更爲通常的進程間通訊機制,可用於不一樣機器之間的進程間通訊。起初是由Unix系統的BSD分支開發出來的,但如今通常能夠移植到其它類Unix系統上:Linux和System V的變種都支持套接字。 如下函數中,和其餘函數不屬於一類的是(pwrite) fwrite putc pwrite putchar getline scanf fwrite:將數據寫入文件流; putc:將一個字符寫入文件流; putchar:向終端輸出一個字符; getline:從輸入流中讀入一個字符串; scanf:格式輸入函數; 以上爲爲庫函數 pwrite是系統調用,寫入起始地址的偏移量,寫入地址=文件開始+offset 常見文件系統 系統函數 1 fcntl 文件控制 2 open 打開文件 3 creat 建立新文件 4 close 關閉文件描述字 5 read 讀文件 6 write 寫文件 7 readv 從文件讀入數據到緩衝數組中 8 writev 將緩衝數組裏的數據寫入文件 9 pread 對文件隨機讀 10 pwrite 對文件隨機寫 在Linux系統中,在運行一個程序時,程序中未初始化的全局變量會被加載到如下的哪一個內存段中?(BSS) BSS TEXT DATA STACK BBS(Block Started by Symbol)一般是指用來存放程序中未初始化的全局變量和靜態變量的一塊內存區域。特色是:可讀寫的,在程序執行以前BSS段會自動清0.因此,未初始化的全局變量在程序執行以前已經變成0了。 數據段:data segment一般是指用來存放程序中已初始化的全局變量的一塊內存區域。數據段屬於靜態內存分配。 代碼段:code segment/text segment一般是指用來存放程序執行代碼的一塊內存區域。這部分區域的大小在程序容許前就已經肯定,而且內存區域一般屬於只讀,某些架構也容許代碼段爲可寫,即容許修改程序。在代碼段中,也有可能包含一些只讀的常數變量,例如字符串常量等。 :head堆是用於存放進程運行中被動態分配的內存段,它的大小並不固定,可動態擴張或縮減。當進程調用malloc等函數分配內存時,新分配的內存就被動態添加到堆上(堆被擴張);當利用free等函數釋放內存時,被釋放的內存從堆中被剔除(堆被縮減) :stack堆又被稱爲堆棧,是用戶存放程序臨時建立的局部變量,也就是說咱們函數括弧「{}」中定義的變量(但不包括static聲明的變量,static意味着在數據段中存放變量)。除此以外,在函數被調用是,其參數也會被壓入發起調用的進程棧中,而且待到調用結束後,函數的返回值也會被存放回棧中。因爲棧的先進先出特色,因此棧特別方便用來保存/恢復調用現場。從這個意義上來說,咱們能夠把堆棧當作一個寄存、交換臨時數據的內存區 下面關於i節點描述錯誤的是?(A) i節點和文件名是一一對應的 i節點能描述文件佔用的塊數 i節點描述了文件大小和指向數據塊的指針 經過i節點實現文件的邏輯結構和物理結構的轉換 inode是index node 簡寫,中文翻譯爲索引節點,在linux系統中,文件的管理採用inode實現,具體內容包括: 文件的字節數 文件擁有着的user id 文件的group id 文件的讀、寫、執行權限 文件的時間戳,共有三個:ctime指inode上一次變更的時間,mtime指文件內容上一次變更的時間,atime指文件上一次打開的時間。 文件數據block的位置 反而,文件名並非文件管理必須使用的,只是爲了方便用戶,對inode起的一個別名(能夠這麼理解,由於inode編號是數字,記憶困難),正常狀況下一個inode對應一個文件,一個文件名對應一個inode,此時對應關係是一對一的,可是經過硬連接創建一個鏈接(又起了一個名字)以後,就會出現多個文件名對應同一個inode的狀況。
後面有詳細關於軟硬連接說明) 1:軟連接就至關於快捷方式,刪除源文件,快捷方式就沒有意義了。 2:硬連接至關於備份了文件,可是還能夠和源文件內容同步,刪除源文件,硬連接文件任然有效。 3:軟連接能夠跨文件系統,可是硬連接不能 4:軟連接的源文件的inode不相同,可是硬連接文件和源文件inode相同 5:軟連接能夠連接目錄,硬連接不行
在Redhat公司發佈的Linux版本中,若要使得用戶登錄驗證,須要修改如下腳本。(/etc/shadow) /etc/inittab /etc/passwd //用戶基本信息 /etc/shadow //用戶密碼 /etc/group 如下那些命令能夠打印文件(demo.log)中包含ERP的行到標準輸出(D) sed ‘/ERP/a\’ demo.log sed '/ERP/P' demo.log sed '/ERP/d' demo.log sed -n '/ERP/p' demo.log sed命令用於行的新增/刪除,行的替換/顯示,搜尋並替換,直接修改文件。 -n:使用安靜slient模式。通過sed名令特殊處理的那一行纔會被列出來 -p:打印,將某個選擇的數據印出來。一般p會與參數sed -n一塊兒用 -d:刪除 -a:新增 關於unix系統代碼段和數據段分開的目的: 可共享正文 可共享數據 可重入 可保護代碼爲只讀 更好的內存回收策略 1)防止程序指令被修改,設置代碼段權限爲只讀,設置數據段權限爲可讀寫 2)代碼段和數據段分開有利於提升程序的局部性,現代CPU緩存通常設計爲數據緩存和指令緩存分離,指令和數據分開存放能夠提升CPU緩存命中率。 3)共享指令,當系統運行多個程序的副本時,它們指令時同樣的,所以內存只需保存一份程序的指令代碼。每一個副本進程的數據區是進程私有,能夠節省內存。 linxu用戶磁盤配額配置文件aquota.user的默認訪問權限是(600) 644 755 600 700 設定linux系統默認爲字符模式,須要修改的配置文件是(B) /etc/fstab /etc/inittab /etc/boot /etc/inttab.conf Linux下有7個運行級別: 0 系統停機模式,系統默認運行級別不能設置爲0,不然不能正常啓動,機器關閉。 1 單用戶模式,root權限,用於系統維護,禁止遠程登錄,就像Windows下的安全模式登陸。 2 多用戶模式,沒有NFS網絡支持。 3 完整的多用戶文本模式,有NFS,登錄後進入控制檯命令行模式。 4 系統未使用,保留通常不用,在一些特殊狀況下能夠用它來作一些事情。例如在筆記本電腦的電池用盡時,能夠切換到這個模式來作一些設置。 5 圖形化模式,登錄後進入圖形GUI模式,X Window系統。 6 重啓模式,默認運行級別不能設爲6,不然不能正常啓動。運行init 6機器就會重啓。 新建一個管理員用戶admin,須要使用的參數(A) useradd -u 0 -o admin //-o選項,則能夠重複使用其餘用戶的標識號; useradd -g -o admin //表示建立用戶組 useradd -p -d admin //-p表示建立密碼 useradd -e -f admin // -e指定帳號的有效期限 缺省表示永久有效 -f指定在密碼過時後多少天即關閉該帳號 如何刪除一個非空子目錄/tmp (B) del /tmp/* rm -rf /tmp rm -Ra /tmp/* rm -rf /tmp/* //沒讀清題目刪除一個目錄 在一臺linux服務器上經過rpm方式安裝了dhcp軟件包,下列關於dhcp服務器配置文件「dhcpd.conf」說法正確的是(CD)多選 軟件包安裝好後,dhcpd.conf文件就位於「/etc/」目錄下 dhcpd.conf文件默認狀況下內容爲空 dhcpd.conf文件缺省不存在,須要手工創建 dhcpd.conf文件的配置能夠參考模板文件"dhcpd.conf.sample"進行 linux中包括兩種連接:硬連接(Hard link)和軟連接(soft link),下列說法正確的是() 軟連接能夠跨文件系統進行鏈接,硬鏈接不能夠 當刪除原文件的時候硬連接文件仍然存在,且內容不變 硬連接被刪除,磁盤上的數據文件會同時被刪除 硬連接會從新創建一個inode,軟連接不會 硬連接與軟連接的區別 硬鏈接是不會創建inode的,他只是在文件原來的inode link count域再增長1而已,也所以硬連接是不能夠跨越文件系統的。相反都是軟鏈接會從新創建一個inode,固然inode的結構跟其餘的不同,他只是一個指明源文件的字符串信息。一旦刪除源文件,那麼軟鏈接將變得毫無心義。而硬連接刪除的時候,系統調用會檢查inode link count的數值,若是他大於等於1,那麼inode不會被回收。所以文件的內容不會被刪除。 硬連接其實是爲文件建一個別名,連接文件和原文件其實是同一個文件。能夠經過ls -i來查看一下,這兩個文件的inode號是同一個,說明它們是同一個文件;而軟連接創建的是一個指向,即連接文件內的內容是指向原文件的指針,它們是兩個文件。 軟連接能夠跨文件系統,硬連接不能夠;軟連接能夠對一個不存在的文件名(filename)進行連接(固然此時若是你vi這個軟連接文件,linux會自動新建一個文件名爲filename的文件),硬連接不能夠(其文件必須存在,inode必須存在);軟連接能夠對目錄進行鏈接,硬連接不能夠。兩種連接均可以經過命令 ln 來建立。ln 默認建立的是硬連接。使用 -s 開關能夠建立軟連接。 硬鏈接無論有多少個,都指向的是同一個 I 節點,會把結點鏈接數增長,只要結點的鏈接數不是 0 ,文件就一直存在無論你刪除的是源文件仍是鏈接的文件。只要有一個存在文件就存在。 當你修改源文件或者鏈接文件任何一個的時候,其餘的文件都會作同步的修改。軟連接不直接使用 i 節點號做爲文件指針 , 而是使用文件路徑名做爲指針。因此刪除鏈接文件對源文件無影響,可是刪除源文件,鏈接文件就會找不到要指向的文件。軟連接有本身的 i 節點 , 並在磁盤上有一小片空間存放路徑名。 軟鏈接能夠對目錄進行鏈接。 下面堆linux下mysqldump備份命令及參數描述正確的是(A) mysqldump -h ip -uroot -p DBNAME >bck.sql mysqldump -Pip -hDBNAME>bck.sql mysqldump -uip -P DBNAME>bck.sql mysqldump -h ip -uDBNAME>bck.sql -h:表示主機名或ip地址,因此bc錯誤 -P:表示數據庫鏈接的TCP/IP端口號 -u:表示用戶名而不是數據庫名,因此D錯誤 -p:表示數據庫訪問密碼 下面關於andriod dvm的進程和linux的進程,應用程序的進程說法正確的是(D) DVM指dalivk的虛擬機,每個Android應用程序都在它本身的進程中運行,都擁有一個獨立的Dalvik虛擬機實例,而每個DVM不必定都是在Linux中的一個進程,因此說不是一個概念 DVM指dalivk的虛擬機,每個andriod應用系統程序都在它本身的進程中運行,不必定擁有一個獨立的Dalvik虛擬機實例,而每個DVM都是在Linux中的一個進程,因此說能夠認爲是同一個概念 DVM指dalivk的虛擬機,每個andriod應用系統程序都在它本身的進程中運行,不必定擁有一個獨立的Dalvik虛擬機實例,而每個DVM不必定都是在Linux中的一個進程,因此說不是一個概念 DVM指dalivk的虛擬機,每個Android應用程序都在它本身的進程中運行,都擁有一個獨立的Dalvik虛擬機實例,而每個DVM都是在Linux中的一個進程,因此說能夠認爲是同一個概念 Android系統用的就是Linux的內核,DVM能夠理解成在Linux上跑的程序,每一個應用程序運行時,都會啓動一個DVM實例,也就是一個Linux的進程,所以DVM進程和Linux進程其實是一回事。 統計日誌中ip登錄次數,下面能夠正確統計的爲 (C D) cat catalina.log | awk -F ' ' '{print $3}' | sort | uniq -c | head -10 cat catalina.log | awk '{print $3}' | uniq -c | wc -l cat catalina.log | awk -F ' ' '{print $3}' | sort | uniq -c | wc -l cat catalina.log | awk '{print $3}' | sort -k1nr | uniq -c | wc –l 答案 C D 知識點: 一、awk -F ' ' '{print $3}' 指定空格是分隔符進行分割,取第三個。(不指定默認分隔符也是空格) 二、uniq -c(uniq命令能夠去除排序過的文件中的重複行,所以uniq常常和sort合用。也就是說,爲了使uniq起做用,全部的重複行必須是相鄰的。參數 - c :進行計數) 三、wc -l 行計數。 A : head -10 統計不完整。不符合題目意思 B : 沒排序。重複行不相鄰。故uniq -c 沒法起到正確的做用。故統計結果錯誤。 答案C、D仔細一看,沒毛病。。 創建動態路由須要用到的文件有(B) /etc/hosts //設定用戶自已的IP與名字的對應表 /etc/gateways //設定路由器 7系統好像沒有 /etc/resolv.conf //設置DNS 終止一個前臺進程可能用到的命令和操做 kill //後臺進程 ctrl+c //前臺進程 shut down halt 下列不是Linux系統進程類型的是 交互進程 //由shell啓動的進程,既可在前臺運行,也可在後臺運行; 批處理進程 //與終端沒有聯繫,是一個進程序列; 守護進程 //linux系統啓動時啓動的進程,並在後臺運行 就緒進程 //就緒指的是進程三狀態之一 按照進程的功能和運行的程序分類,進程可劃分爲兩大類: (1) 系統進程:能夠執行內存資源分配和進程切換等管理工做;並且,該進程的運行不受用戶的干預,即便是root用戶也不能干預系統進程的運行。 (2) 用戶進程:經過執行用戶程序、應用程序或內核以外的系統程序而產生的進程,此類進程能夠在用戶的控制下運行或關閉。 針對用戶進程,又能夠分爲交互進程、批處理進程和守護進程三類。 (1) 交互進程:由一個shell終端啓動的進程,在執行過程當中,須要與用戶進行交互操做,能夠運行於前臺,也能夠運行在後臺。 (2) 批處理進程:該進程是一個進程集合,負責按順序啓動其餘的進程。 (3) 守護進程:守護進程是一直運行的一種進程,常常在linux系統啓動時啓動,在系統關閉時終止。它們獨立於控制終端而且週期性的執行某種任務或等待處理某些發生的事件。例如httpd進程,一直處於運行狀態,等待用戶的訪問。還有常常用的crond進程,這個進程相似與windows的計劃任務,能夠週期性的執行用戶設定的某些任務。 一個文件名字爲rr.Z,能夠用來解壓縮的命令是: tar gzip compress uncompress compress 是一個至關古老的 unix 檔案 壓縮 指令,壓縮後的檔案會加上一個 .Z 延伸檔名以區別未壓縮的檔案,壓縮後的檔案能夠以 u nc ompress解壓 。若要將數個檔案壓成一個壓縮檔,必須先將檔案 tar 起來再壓縮。因爲 g zip 能夠產生更理想的壓縮比例,通常人多已改用gzip 爲檔案壓縮工具。 linux 經常使用壓縮格式 .zip .gz .bz2 .tar.gz .tar.bz2 zip 壓縮文件名 源文件 ——壓縮文件 zip -r 壓縮文件名 源文件 ——壓縮目錄 mkdir 名字——建立目錄 touch 名字 ——建立文件 unzip 壓縮文件 ——解壓 .zip文件 gzip 源文件 ——壓縮爲.gz格式的壓縮文件,源文件會消失 gzip -c 源文件 > 壓縮文件 ——壓縮爲.gz格式的壓縮文件,源文件會消失 gzip -r 目錄 ——壓縮目錄下的全部子文件,但不能壓縮目錄 gzip -d 壓縮文件 ——解壓 .gz文件 gunzip 壓縮文件名 ——解壓 .gz文件 bzip2 源文件 ——壓縮爲 .bz2格式,不保留源文件 bzip2 -k 源文件 ——壓縮後保留源文件 注意bzip2 不能壓縮目錄 bzip2 -d 壓縮文件 ——解壓縮,-k保留壓縮文件 bunzip2 壓縮文件 ——解壓縮 tar -cvf 打包文件名 源文件 tar -zcvf 壓縮報名.tar.gz 源文件 ——壓縮爲.tar.gz格式 tar -zxvf 壓縮報名.tar.gz ——解壓縮.tar.gz包 tar -jcvf 壓縮報名.tar.bz2 源文件 ——壓縮爲.tar.bz2格式 tar -jxvf 壓縮報名.tar.bz2 ——解壓縮.tar.bz2包 Samba 服務器的配置文件是D httpd.conf inetd.conf rc.samba smb.conf WEB服務器配置文件 http.conf 啓動腳本配置文件 initd.conf samba腳本 rc.samba samba服務配置文件 smb.conf Linux 有三個查看文件的命令,若但願在查看文件內容過程當中能夠用光標上下移動來查看文件內容,應使用命令。 cat more less menu cat,less,more均可以查看,只是查看的方式不同,less可讓光標上下移動,more只能用enter鍵往下翻,cat的話直接跳到最後一頁了 FTP服務器有兩個端口,其中21端口用於鏈接,20端口用於傳輸數據 進行FTP文件傳輸中,客戶端首先鏈接到FTP服務器的21端口,進行用戶的認證,認證成功後,要傳輸文件時,服務器會開一個端口爲20來進行傳輸數據文件。 也就是說,端口20纔是真正傳輸所用到的端口,端口21只用於FTP的登錄認證。咱們日常下載文件時,會遇到下載到99%時,文件不完成,不能成功的下載。實際上是由於文件下載完畢後,還要在21端口再行進行用戶認證,而下載文件的時間若是過長,客戶機與服務器的21端口的鏈接會被服務器認爲是超時鏈接而中斷掉,就是這個緣由。解決方法就是設置21端口的響應時間。 tar -zcvf 目標文件 源文件 z表示使用gzip壓縮 j表示使用bzip2壓縮 c表示壓縮 x表示解壓縮 進程間通信方式有那些?
管道
消息隊列
共享內存
文件和記錄鎖定

//漏掉了文件和記錄鎖定,

UNIX中有以下的通訊方式:

1) 文件和記錄鎖定。

爲避免兩個進程間同時要求訪問同一共享資源而引發訪問和操做的混亂,在進程對

共享資源進行訪問前必須對其進行鎖定,該進程訪問完後再釋放。這是UNIX爲共享

資源提供的互斥性保障。

  2 )管道。

管道通常用於兩個不一樣進程之間的通訊。當一個進程建立一個管道,並調用fork創

建本身的一個子進程後,父進程關閉讀管道端,子進程關閉寫管道端,這樣 提供了

兩個進程之間數據流動的一種方式。

  3 ) FIFO 。

FIFO是一種先進先出的隊列。它相似於一個管道,只容許數據的單向流動。每一個

FIFO都有一個名字,容許不相關的進程訪問同一個FIFO。所以也成爲命名管。

 4)消息隊列。

UNIX下不一樣進程之間可實現共享資源的一種機制;UNIX容許不一樣進程將格式化的數

據流以消息形式發送給任意

進程。對消息隊列具備操做權限的進程均可以使用msget完成對消息隊列的操做控制

。經過使用消息類型,進程能夠按任何順序讀消息,或爲消息安排優先級順序。

  5 )信號燈。

做爲進程間通信的一種方法,它不是用於交換大批數據,而用於多進程之間的同步

(協調對共享存儲段的存取)。

  6 )共享內存。

經過信號燈實現存儲共享(相似「紅燈停、綠燈行」)

文件操做的惟一依據是?(B)

文件名
文件句柄
物理地址

文件句柄是惟一標識,至關於ID
在文件I/O中,要從一個文件讀取數據,應用程序首先要調用操做系統函數並傳送文件名,並選一個到該文件的路徑來打開文件。該函數取回一個順序號,即文件句柄(file handle),該文件句柄對於打開的文件是惟一的識別依據。要從文件中讀取一塊數據,應用程序須要調用函數ReadFile,並將文件句柄在內存中的地址和要拷貝的字節數據傳送給操做系統。當完成任務後,在經過調用系統函數來關閉該文件。


在CPU和物理內存之間進行地址轉換時,(B)將地址從虛擬(邏輯)地址空間映射到物理地址空間
TCB
MMU
CACHE
DMA

TCB 線程控制塊;PCB,進程控制塊
MMU(Memory Management Unit)內存管理單元,是中央處理器用來管理虛擬內存和物理內存寄存器的控制線路,同時也負責虛擬內存映射爲物理內存等
CACHE 這道題環境應該是指高速緩衝存儲器
DMA (direct memory access)直接內存存儲,傳輸數據從一個地址空間到另外一個地址空間

下面那些命令能夠查看file文件的第300-500行的內容?

cat file1 | tail -n +300 | head -n 200
cat file1| head -n 500 | tail -n +300
sed -n '300,500p' file1

下面哪些是死鎖發生的必要條件? ABCD
互斥條件
請求和保持
不可剝奪
循環等待

互斥條件,請求和保持,不可剝奪,這三個條件可能發生死鎖,但不必定會發生死鎖,這三個條件再加上循環等待才必定會發生死鎖

系統當前已經加載的全部文件系統在______文件中獲得反映

/usr/sbin/cfdisk
/sbin/fdisk
/etc/mtab
/etc/fstab

/etc/mtab:記載的是如今系統已經掛載的文家系統,包括操做系統創建的虛擬文件等;而/etc/fstab/是系統準備掛載的
/etc/fstab:記錄了計算機上硬盤分區的相關消息,啓動Linux的時候,檢查分區的fsck命令,和掛載分區的mount命令,都須要fstab中的信息。來正確的檢查和掛載硬盤

dstab不必定都是已經掛載上了

vivek但願將他的login ID 從vivek改成viv,應該執行下列那個命令?

usermod -l viv vivek
usermod -l vivek viv
usermod -m viv vivek
usermod -m vivek viv

 usermod(選項)(參數):參數若爲兩個,順序通常爲  usermod (選項)  目標參數  原始參數
-c<備註>:修改用戶賬號的備註文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改賬號的有效期限;
-f<緩衝天數>:修改在密碼過時後多少天即關閉該賬號;
-g<羣組>:修改用戶所屬的羣組;
-G<羣組>;修改用戶所屬的附加羣組;
-l<賬號名稱>:修改用戶賬號名稱;    使用格式:usermod -l  new_name  old_name
-L:鎖定用戶密碼,使密碼無效;
-s:修改用戶登入後所使用的shell;
-u:修改用戶ID;
-U:解除密碼鎖定。

在linux中用使用tar命令將文件aaa打包爲bak.tar。  A

tar -cf bak.tar  aaa
tar -xf bak.tar  aaa
tar -czf bak.tar  aaa
tar -rf bak.tar  aaa

//打包就好了,因此不須要+z壓縮
 tar 主要命令:

-c 建立包
-x 解包
-t 列出包中的內容
-r 增長文件到指定包中
-u 更新包中的文件
這五個是獨立的命令,壓縮解壓都要用到其中一個,能夠和別的命令連用但只能用其中一個。下面的參數是根據須要在壓縮或解壓檔案時可選的。

可選命令:
-j 建立或解開包時 使用bzip2 進行壓縮或解壓
-z 建立或解開包時 使用gzip 進行壓縮或解壓
-Z 建立或解開包時 使用compress 進行壓縮或解壓
-f 後面跟指定的包文件名
-v 顯示打包/解包過程
-C 指定解包後的路徑


 Linux下多少個"-"將被打印: (B)
    
int main(void){
  int i;
  for(i=0;i<4;i++){
  fork();
  printf("-\n");
 }
 return 0;
}

 



16
30
32
15


i=0時,主進程和其建立的子進程分別打印'-',  打印2個
i=1時,以前兩個進程打印'-', 每一個進程又建立新的子進程, 共打印4個'-'
i=2時,以前的四個進程分別打印'-', 並建立新的子進程, 故共打印8個'-'
i=3時,以前的8個進程分別打印'-', 並建立新的子進程,故共打印16個'-'
綜上所述, 共打印2+4+8+16=30個


fork的題能夠按如下公式來算。

主進程1分爲2,每一個子進程1分爲2,構成一個二叉樹,樹高等於循環的次數n。
最後一層是最後獲得的子進程數,它是偶數,等於2^n,前面有一題,循環5次有32個進程。

本題是求fork了多少次,即二叉數的節點數,它等於2^(n+1)-1,注意第一次fork後就會打印2個模槓,實際上沒有第0次。
因此是2^(n+1) - 1 -1當n=4時,得30.


關於linux的I/O複用接口select和epoll,下列說法錯誤的是(C)

select調用時會進行線性遍歷,epoll採用回調函數機制,不須要線性遍歷
select的最大鏈接數爲FD_SETSIZE
select較適合於有大量併發鏈接,且活躍連接較多的場景
epoll較適用於有大量併發鏈接,但活躍鏈接很少的場景
epoll的效率不隨FD數目增長而線性降低
epoll經過共享存儲實現內核和用戶的數據交互

select 和 epoll效率差別的緣由:select採用輪詢方式處理鏈接,epoll是觸發式處理鏈接。
Select:
1.Socket數量限制:該限制可操做的Socket數由FD_SETSIZE決定,內核默認32*32=1024.
2.操做限制:經過遍歷FD_SETSIZE(1024)個Socket來完成調度,無論哪一個Socket是活躍的,都遍歷一遍。

Epoll
1.Socket數量無限制:該模式下的Socket對應的fd列表由一個數組來保存,大小不限制(默認4k)。
2.操做無限制:基於內核提供的反射模式,有活躍Socket時,內核訪問該Socket的callback,不須要遍歷輪詢。
但當全部的Socket都活躍的時候,全部的callback都被喚醒,會致使資源的競爭。既然都是要處理全部的Socket,
那麼遍歷是最簡單最有效的實現方式

 select

    select能監控的描述符個數由內核中的FD_SETSIZE限制,僅爲1024,這也是select最大的缺點,由於如今的服務器併發量遠遠不止1024。即便能從新編譯內核改變FD_SETSIZE的值,但這並不能提升select的性能。
    每次調用select都會線性掃描全部描述符的狀態,在select結束後,用戶也要線性掃描fd_set數組才知道哪些描述符準備就緒,等於說每次調用複雜度都是O(n)的,在併發量大的狀況下,每次掃描都是至關耗時的,頗有可能有未處理的鏈接等待超時。
    每次調用select都要在用戶空間和內核空間裏進行內存複製fd描述符等信息。

poll

    poll使用pollfd結構來存儲fd,突破了select中描述符數目的限制。
    與select的後兩點相似,poll仍然須要將pollfd數組拷貝到內核空間,以後依次掃描fd的狀態,總體複雜度依然是O(n)的,在併發量大的狀況下服務器性能會快速降低。

epoll

    epoll維護的描述符數目不受到限制,並且性能不會隨着描述符數目的增長而降低。
    服務器的特色是常常維護着大量鏈接,但其中某一時刻讀寫的操做符數量卻很少。epoll先經過epoll_ctl註冊一個描述符到內核中,並一直維護着而不像poll每次操做都將全部要監控的描述符傳遞給內核;在描述符讀寫就緒時,經過回掉函數將本身加入就緒隊列中,以後epoll_wait返回該就緒隊列。也就是說,epoll基本不作無用的操做,時間複雜度僅與活躍的客戶端數有關,而不會隨着描述符數目的增長而降低。
    epoll在傳遞內核與用戶空間的消息時使用了內存共享,而不是內存拷貝,這也使得epoll的效率比poll和select更高。

在退出unix系統帳戶以後還須要繼續運行某個進程,那麼可用(D)
awk
sed
crontab
nohup

nohup命令:若是你正在運行一個進程,並且你以爲在退出賬戶時該進程還不會結束,那麼能夠使用nohup命令。該命令能夠在你退出賬戶/關閉終端以後繼續運行相應的進程。nohup就是不掛起的意思

下面哪一個命令不是用來查看網絡故障?
telnet
ping
init
netstat

A選項:telnet命令一般用來遠程登陸。telnet程序是基於TELNET協議的遠程登陸客戶端程序。Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工做的能力。
B選項:Linux系統的ping命令是經常使用的網絡命令,它一般用來測試與目標主機的連通性,咱們常常會說「ping一下某機器,看是否是開着」、不能打開網頁時會說「你先ping網關地址192.168.1.1試試」。它經過發送ICMP ECHO_REQUEST數據包到網絡主機(send ICMP ECHO_REQUEST to network hosts),並顯示響應狀況,這樣咱們就能夠根據它輸出的信息來肯定目標主機是否可訪問(但這不是絕對的)。有些服務器爲了防止經過ping探測到,經過防火牆設置了禁止ping或者在內核參數中禁止ping,這樣就不能經過ping肯定該主機是否還處於開啓狀態。
C選項: init init 命令進程和做業管理 init 命令是 Linux 下的進程初始化工具, init 進程是全部 Linux 進程的父進程,它的進程號爲 1 。 init 命令是 Linux 操做系統中不可缺乏的程序之一, init 進程是 Linux 內核引導運行的,是系統中的第一個進程。
D選項: n etstat命令用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,通常用於檢驗本機各端口的網絡鏈接狀況。 n etstat是在內核中訪問網絡及相關信息的程序,它能提供TCP鏈接,TCP和UDP監聽,進程內存管理的相關報告。 若是你的計算機有時候接收到的數據報致使出錯數據或故障,你沒必要感到奇怪,TCP/IP能夠允許這些類型的錯誤,並可以自動重發數據報。但若是累計的出錯狀況數目佔到所接收的IP數據報至關大的百分比,或者它的數目正迅速增長,那麼你就應該使用 n etstat查一查爲何會出現這些狀況了。


 若是參數列表個數爲1則執行$<1 , 若是參數列表個數爲2則執行$<2<$ ,其餘狀況則……,補充下面的命令
    
Case (  ) in (B)
1>
   $<1
2>
   $<2<$1
Default > 
   echo ……

 



$$
$#
$@
$*


$# 是傳給腳本的參數個數
$0是腳本自己的名字
$1是傳遞給該shell腳本的第一個參數
$2是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的全部參數的列表
$* 是以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個
$$ 是腳本運行的當前進程ID號
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤

 請問下面的程序最後會產生多少個進程:
    
#include<stdio.h>
#include<unistd.h>
Int main( )
{
    int i;
    for(i = 0; i<5;i++){
        int pid = fork();
        if(pid == 0){
            //do something
        } else {
            //do something
        }
    }
// do somthing,sleep
return 0;
}

 


5   10   15   32

25=32。
每個fork()出來的新進程,和父進程使用相同的代碼段,複製父進程的數據段和堆棧段,不過有「邏輯」複製和「物理」複製之分,在本題沒有影響。也就是說每個fork()出的新進程和父進程有相同大小的i,而且執行位置也是同樣的。


i = 0時,生成兩個進程
i = 1時,兩個進程各生成兩個進程
i = 2時,4個進程各生成兩個進程
i = 3時,8個進程各生成兩個進程
i = 4時,16個進程各生成兩個進程,總共32個

若基於Linux操做系統所開發的ARM應用程序源文件名爲test.c,那麼要生成該程序代碼的調試信息,編譯時使用的GCC命令正確的是?  (D)

arm-linux-gcc -c -o test.o test.c
arm-linux-gcc -S -o test.o test.c
arm-linux-gcc -o test test.c
arm-linux-gcc -g -o test test.c

 D
-o參數用於指定輸出的文本,若是不指定輸出文件則默認輸出.out文件
-c參數將對源程序test.c進行預處理、編譯、彙編操做,生成test.0文件
-S參數將對源程序test.c進行預處理、編譯,生成test.s文件
-g選項,加入GDB可以使用的調試信息,使用GDB調試時比較方便
因此選D

 arm-linux-gcc  -g -o example example.c
-g選項,加入GDB可以 使用 的調試信息, 使用 GDB調試時比較方便

arm-linux-gcc  -o example example.c
   不加-c、-S、-E參數,編譯器將執行預處理、編譯、彙編、鏈接操做直接生成可執行代碼。
    -o參數用於指定輸出的文件,輸出文件名爲example,若是不指定輸出文件,則默認輸出a.out
  arm-linux-gcc  -c -o example.o example.c
   -c參數將對源程序example.c進行預處理、編譯、彙編操做,生成example.0文件
   去掉指定輸出選項"-o example.o"自動輸出爲example.o,因此說在這裏-o加不加均可以
arm-linux-gcc  -S -o example.s example.c
   -S參數將對源程序example.c進行預處理、編譯,生成example.s文件
   -o選項同上

使用pthread庫的多線程程序編譯時須要加什麼鏈接參數?

-pthread
-fthis-is-varialble
fcond-mismatch
-MMD


A,由於:-fthis-is-varialble 就是向傳統c++看齊,能夠使用this當通常變量使用.
-fcond-mismatch容許 條件表達式 的第二和第三參數 類型不匹配 ,表達式的值將爲void類型
-MMD和-MM相同,可是輸出將導入到.d的文件裏面

int main()
{
    char *p = "hello,world";
    return 0;
}

 


p和"hello,world"存儲在內存哪一個區域?

棧,堆
棧,棧
堆,只讀存儲區
棧,只讀存儲區


(1)從靜態存儲區域分配:
內存在程序編譯時就已經分配好,這塊內存在程序的整個運行期間都存在。速度快、不容易出錯,由於有系統會善後。例如全局變量,static變量等。
(2)在棧上分配:
在執行函數時,函數內局部變量的存儲單元都在棧上建立,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,效率很高,可是分配的內存容量有限。
(3)從堆上分配:
即動態內存分配。程序在運行的時候用malloc或new申請任意大小的內存,程序員本身負責在什麼時候用free或delete釋放內存。動態內存的生存期由程序員決定,使用很是靈活。若是在堆上分配了空間,就有責任回收它,不然運行的程序會出現內存泄漏,另外頻繁地分配和釋放不一樣大小的堆空間將會產生堆內碎塊。
一個C、C++程序編譯時內存分爲5大存儲區:堆區、棧區、全局區、文字常量區、程序代碼區。

關於Linux系統的負載(Load),如下表述正確的是______。 (B、C)
經過就緒和運行的進程數來反映
能夠經過TOP命令查看
能夠經過uptime查看
Load:2.5,1.3,1.1表示系統的負載壓力在逐漸減小

 D三個數分別表明不一樣時間段的系統平均負載(一分鐘、五分鐘、以及十五分鐘),它們的數字固然是越小越好。數字越高,說明服務器的負載越大,這也多是服務器出現某種問題的信號。可是一分鐘和五分鐘的平均負載大於十五分鐘的,不是負載在變小吧。

Linux中,一個端口可以接受tcp連接數量的理論上限是? (D)
1024
65535
65535 * 65535
無上限

一個端口能夠創建的鏈接數量沒有理論上限,上限就是你係統的性能

 不算 main 這個進程自身,到底建立了多少個進程啊? (B)
int main(int argc, char* argv[])
{
   fork();
   fork() && fork() || fork();
   fork();
}

 


18   19   20   21

 fork()是一個分叉函數, 返回值: 若成功調用一次則返回兩個值,子進程返回0,父進程   返回子進程標記;不然,出錯返回-1
每一次fork()就翻倍;
   fork();
   fork() && fork() || fork();
   fork();
第一條和第三條分別X2;關鍵在第二條語句。第二條有 5個分支;
A&&B||C
   A爲假,跳過B,判斷C-----------------------2
   A爲真,判斷B,若B爲真,跳過C-----------1
                          若B爲假,判斷C  ------------2

故總數爲2*(2+1+2)*2=10;減去本身就是19.


此題考查兩個知識點:
1.fork()是一個分叉函數,返回值: 若成功調用一次則返回兩個值,子進程返回0, 父進程 返回子進程標記;不然,出錯返回-1。
2.  A&& B|| C的考查,  A&&B,若是A=0,就沒有必要繼續執行&&B了;A非0,就須要繼續執行&&B。  
    A||B,若是A非0,就沒有必要繼續執行||B了,A=0,就須要繼續執行||B。  
因此,第一次fork()以後,進程數爲2,
第二條,
A&& B|| C
A執行後,返回兩個分別爲0,和非0,按照上面2的規則,執行狀況一共是5條路徑,因此結束後共有進程數2*5,最後一條執行完畢,再次加倍,2*5*2=20,減去main()主進程,共有19個

關於 linux 的進程,下面說法不正確的是:  (A)

殭屍進程會被 init 進程接管,不會形成資源浪費;
孤兒進程的父進程在它以前退出,會被 init 進程接管,不會形成資源浪費;
進程是資源管理的最小單位,而線程是程序執行的最小單位。Linux 下的線程本質上用進程實現;
子進程若是對資源只是進行讀操做,那麼徹底和父進程共享物理地址空間。

 linux提供了一種機制能夠保證只要父進程想知道子進程結束時的狀態信息, 就能夠獲得。這種機制就是: 在每一個進程退出的時候,內核釋放該進程全部的資源,包括打開的文件,佔用的內存等。 可是仍然爲其保留必定的信息(包括進程號the process ID,退出狀態the termination status of the process,運行時間the amount of CPU time taken by the process等)。直到父進程經過wait / waitpid來取時才釋放。

        孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那麼那些子進程將成爲孤兒進程。孤兒進程將被init進程(進程號爲1)所收養,並由init進程對它們完成狀態收集工做。
        殭屍進程:一個進程使用fork建立子進程,若是子進程退出,而父進程並無調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中。這種進程稱之爲僵死進程。

         僵死進程並非問題的根源,罪魁禍首是產生出大量僵死進程的那個父進程,因此,解決方法就是kill那個父進程,因而殭屍進程就能夠被init進程接收,釋放。


linux下查看磁盤掛載狀態的命令式?  (B)

rpm   mount   netstat   df

//選了D df爲磁盤空間查看命令   


Linux執行ls,會引發哪些系統調用(B、C、D)
 
nmap
read
execve
fork

任何shell都會執行 exec 和 fork
而    ls會執行read
三個加起來


 下列哪一個git命令不是合併代碼用的:
git pull --rebase
git merge
git cherry-pick
git blame
執行git blame;命令時,會逐行顯示文件,並在每一行的行首顯示commit號,提交者,最先的提交日期等

你被須要檢查系統中的設備狀況,須要檢查哪一個log日誌?
/var/log/tmp
/var/log/lastlog
/var/log/messages
/var/log/utmp


    /var/log/messages — 包括總體系統信息,其中也包含系統啓動期間的日誌。此外,mail,cron,daemon,kern和auth等內容也記錄在var/log/messages日誌中。
    /var/log/dmesg — 包含內核緩衝信息(kernel ring buffer)。在系統啓動時,會在屏幕上顯示許多與硬件有關的信息。能夠用dmesg查看它們。
    /var/log/auth.log — 包含系統受權信息,包括用戶登陸和使用的權限機制等。
    /var/log/boot.log — 包含系統啓動時的日誌。
    /var/log/daemon.log — 包含各類系統後臺守護進程日誌信息。
    /var/log/dpkg.log – 包括安裝或dpkg命令清除軟件包的日誌。
    /var/log/kern.log – 包含內核產生的日誌,有助於在定製內核時解決問題。
    /var/log/lastlog — 記錄全部用戶的最近信息。這不是一個ASCII文件,所以須要用lastlog命令查看內容。
    /var/log/maillog /var/log/mail.log — 包含來着系統運行電子郵件服務器的日誌信息。例如,sendmail日誌信息就所有送到這個文件中。
    /var/log/user.log — 記錄全部等級用戶信息的日誌。
    /var/log/Xorg.x.log — 來自X的日誌信息。
    /var/log/alternatives.log – 更新替代信息都記錄在這個文件中。
    /var/log/btmp – 記錄全部失敗登陸信息。使用last命令能夠查看btmp文件。例如,」last -f /var/log/btmp | more「。
    /var/log/cups — 涉及全部打印信息的日誌。
    /var/log/anaconda.log — 在安裝Linux時,全部安裝信息都儲存在這個文件中。
    /var/log/yum.log — 包含使用yum安裝的軟件包信息。
    /var/log/cron — 每當cron進程開始一個工做時,就會將相關信息記錄在這個文件中。
    /var/log/secure — 包含驗證和受權方面信息。例如,sshd會將全部信息記錄(其中包括失敗登陸)在這裏。
    /var/log/wtmp或/var/log/utmp — 包含登陸信息。使用wtmp能夠找出誰正在登錄進入系統,誰使用命令顯示這個文件或信息等。
    /var/log/faillog – 包含用戶登陸失敗信息。此外,錯誤登陸命令也會記錄在本文件中。

除了上述Log文件之外, /var/log還基於系統的具體應用包含如下一些子目錄:

    /var/log/httpd/或/var/log/apache2 — 包含服務器access_log和error_log信息。
    /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
    /var/log/mail/ –  這個子目錄包含郵件服務器的額外日誌。
    /var/log/prelink/ — 包含.so文件被prelink修改的信息。
    /var/log/audit/ — 包含被 Linux audit daemon儲存的信息。
    /var/log/samba/ – 包含由samba存儲的信息。
    /var/log/sa/ — 包含每日由sysstat軟件包收集的sar文件。
    /var/log/sssd/ – 用於守護進程安全服務。


局域網的網絡地址192.168.1.0/24,局域網絡鏈接其它網絡的網關地址是192.168.1.1。主機192.168.1.20訪問172.16.1.0/24網絡時,其路由設置正確的是?
route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
route add default 192.168.1.0 netmask 172.168.1.1 metric 1

-net 後面跟的是目標網絡,gw就是gateway(網關入口)就是你從哪一個網關去到那個目標網絡。

設fp已定義,執行語句fp=fopen("file","w");後,如下針對文本文件file操做敘述的選項錯誤的是: (B、C、D)
能夠隨意讀和寫
只能寫不能讀
能夠在原有內容後追加寫
寫操做結束後能夠從頭開始讀
fopen(「file」,」w」)打開文件,並賦值爲「w」權限,即寫權限,則B正確,A錯誤,由於這裏不具備讀權限;對於C的解釋:用「w」打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名創建該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。因此C錯誤;對於D的解釋:D所描述的權限應該是「w+」而非「w」,因此D錯誤;

有一個文件ip.txt,每行一條ip記錄,共若干行,下面哪一個命令能夠實現「統計出現次數最多的前3個ip及其次數」?(B)

uniq -c ip.txt│sort -nr│head -n 3
sort ip.txt│uniq -c│sort -rn│head -n 3
cat ip.txt │count -n│sort -rn│head -n 3
cat ip.txt │sort │uniq -c│sort -rn│top -n 3

sort | uniq -c| 搭配使用,而且須要優先sort 再uniq -c 才能再輸出行前面加上每行在文件中出現的次數;
count命令不存在,
top命令能夠實時動態地查看系統的總體運行狀況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。

 sort 是按ASCII碼排序
-n   依照數值的大小排序。
-r   以相反的順序來排序。
uniq -c 是去重並顯示個數
head -n 3 爲取前3行

你在一臺Windows 2000 Server 上部署了幾個web 站點,這些Web 站點都已啓用了日誌。你用一個第三方的報表工具來分析web站點產生的日誌文件,你發現全部從上午7:00到午夜的數據都被包含在次日的日誌文件中。你但願這些數據包含在當天的日誌文件中,你該怎麼作?
確保日誌類型被設置爲W3C
在web站點的日誌屬性中修改日誌翻轉屬性
在web服務器的時間屬性中修改時間區域設置
在web服務器上配置時間服務器使用LocalSystem帳戶

下面哪些屬於,Fork後子進程保留了父進程的什麼?AC
環境變量
父進程的文件鎖,pending alarms和pending signals
當前工做目錄
進程號
 使用fork函數獲得的子進程從父進程的繼承了整個進程的地址空間,包括:進程上下文、進程堆棧、內存信息、打開的文件描述符、信號控制設置、進程優先級、進程組號、當前工做目錄、根目錄、資源限制、控制終端等。

子進程與父進程的區別在於:

一、父進程設置的鎖,子進程不繼承(由於若是是排它鎖,被繼承的話,矛盾了)

二、各自的進程ID和父進程ID不一樣

三、子進程的未決告警被清除;

四、子進程的未決信號集設置爲空集。

子進程繼承父進程

    用戶號UIDs和用戶組號GIDs
    環境Environment
    堆棧
    共享內存
    打開文件的描述符
    執行時關閉(Close-on-exec)標誌
    信號(Signal)控制設定
    進程組號
    當前工做目錄
    根目錄
    文件方式建立屏蔽字
    資源限制
    控制終端

子進程獨有

    進程號PID
    不一樣的父進程號
    本身的文件描述符和目錄流的拷貝
    子進程不繼承父進程的進程正文(text),數據和其餘鎖定內存(memory locks)
    不繼承異步輸入和輸出

父進程和子進程擁有獨立的地址空間和PID參數。
子進程從父進程繼承了用戶號和用戶組號,用戶信息,目錄信息,環境(表),打開的文件描述符,堆棧,(共享)內存等。
通過fork()之後,父進程和子進程擁有相同內容的代碼段、數據段和用戶堆棧,就像父進程把本身克隆了一遍。事實上,父進程只複製了本身的PCB塊。而代碼段,數據段和用戶堆棧內存空間並無複製一份,而是與子進程共享。只有當子進程在運行中出現寫操做時,纔會產生中斷,併爲子進程分配內存空間。因爲父進程的PCB和子進程的同樣,因此在PCB中斷中所記錄的父進程佔有的資源,也是與子進程共享使用的。這裏的「共享」一詞意味着「競爭」

下面有關Ext2和ext3文件系統的描述,錯誤的是?AD

ext2/ext3文件系統使用索引節點來記錄文件信息,包含了一個文件的長度、建立及修改時間、權限、所屬關係、磁盤中的位置等信息
ext3增長了日誌功能,即便在非正常關機後,系統也不須要檢查文件系統
ext3文件系統可以極大地提升文件系統的完整性,避免了意外宕機對文件系統的破壞
ext3支持 1EB 的文件系統,以及 16TB 的文件。

EXT二、EXT3:linux環境上的文件系統。ext2/ext3文件系統使用索引節點來記錄文件信息,做用像windows的文件分配表。索引節點是一個結構,它包含了一個文件的長度、建立及修改時間、權限、所屬關係、磁盤中的位置等信息。

EXT二、EXT3的區別以下:
(1)ext2和ext3的格式徹底相同,只是在ext3硬盤最後面有一部分空間用來存放Journal(日誌)的記錄;
(2)在ext2中,寫資料到硬盤中時,先將資料寫入緩存中,當緩存寫滿時纔會寫入硬盤中;
(3)在ext3中,寫資料到硬盤中時,先將資料寫入緩存中,鞀緩存寫滿時系統先通知Journal,再將資料寫入硬盤,完成後再通知Journal,資料已完成寫入工做;
(4)是否有Journal的差異:
在ext2中,系統開機時會去檢查有效位(Valid bit),若是值爲1,表示系統上次有正常關機;若是爲0,表示上次關機未正常關機,那系統就會從頭檢查硬盤中的資料,這樣時間會很長;
在ext3中,也就是有Journal機制裏,系統開機時檢查Journal的資料,來查看是否有錯誤產生,這樣就快了不少;
(5)tune2fs –j 將ext2轉換成ext3

Ext3 目前所支持的最大16TB 文件系統和最大2TB 文件,Ext4 分別支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系統,以及 16TB 的文件。

vsftpd服務流量控制的參數( )BC
system_max_rate
local_max_rate
anon_max_rate
guest_max_rate


訪問速率設置:
anon_max_rate=0
設置匿名登入者使用的最大傳輸速度,單位爲B/s,0 表示不限制速度。默認值爲0。
local_max_rate=0
本地用戶使用的最大傳輸速度,單位爲B/s,0 表示不限制速度。預設值爲0。

下列哪一個命令能夠看到文件的大小? C
ls   df   du   find
du : disk usage df: disk. free

man 5 passwd D

顯示關於passwd的前五處說明文檔顯示關於passwd的前五處說明文檔
顯示passwd命令的使用方法
顯示passwd命令的說明的前五行
顯示passwd文件的結構

當前目錄下有a和b兩個文件,執行命令「ls>c」,請問文件c裏面的內容是什麼?

a   b   ab   abc

使用ls命令產生的輸出爲當前路徑下的全部文件名。>c即表明將結果輸出至c中,若沒有c則先產生c文件,即內容裏含有abc

下列關於管道(Pipe)通訊的敘述中,正確的是()     C
一個管道能夠實現雙向數據傳輸
管道的容量僅受磁盤容量大小限制
進程對管道進行讀操做和寫操做均可能被阻塞
一個管道只能有一個讀進程或一個寫進程對其操做

 管道其實是一種固定大小的緩衝區,管道對於管道兩端的進程而言,就是一個文
件,但它不是普通的文件,它不屬於某種文件系統,而是自立門戶,單獨構成一種文件系統,而且只存在於內存中。它相似於通訊中半雙工信道的進程通訊機制,一個管道能夠實現雙向 的數據傳輸,而同一個時刻只能最多有一個方向的傳輸,不能兩個方向同時進行。管道的容 量大小一般爲內存上的一頁,它的大小並非受磁盤容量大小的限制。當管道滿時,進程在 寫管道會被阻塞,而當管道空時,進程讀管道會被阻塞,所以選 C。

管道是半雙工的,讀寫不能同時雙向進行數據操做。管道的容量還受其它因素的影響,管道緩衝區的大小也會影響程序的執行結果。管道必須打開一個讀端和一個寫端。若寫端關閉,讀端只能返回0。如讀端關閉,寫端返回錯誤值-1

命令:[-z」」]&&echo 0 ||echo 1的輸出是什麼 0
1   0   

[ -z "" ] 命令判斷雙引號中變量的字符串長度是否爲0,
[ -z "" ] && echo 0 || echo 1
    ^                ^             ^
命令1         命令2     命令3

本題即:  先判斷 「」 變量中是否無值,成功
                 而後根據 && 符特性,當命令1執行成功時執行命令2,也就是執行echo 0
                 而後根據 || 符特性,前一個命令不能執行才執行後一個,命令2 echo 0 執行成功,因此命令3 echo 1 不執行
                 命令結束

在CPU和物理內存之間進行地址轉換時,( )將地址從虛擬(邏輯)地址空間映射到物理地址空間

TCB
MMU
CACHE
DMA

MMU 是Memory Manage Unit的縮寫,便是存儲管理單元,其功能是和物理內存之間進行地址轉換 在CPU和物理內存之間進行地址轉換,將地址從邏輯空間映映射到物理地址空間。
 A.TCB,線程控制塊;PCB,進程控制塊
B.MMU(Memory Management Unit) 內存管理單元,是中央處理器用來管理虛擬內存和物理內存寄存器的控制線路,同時也負責虛擬內存映射爲物理內存等。
C.CACHE,感受在這道題裏應該指的是高速緩衝存儲器。
D.DMA,(direct memory access)直接內存存儲,傳輸數據從一個地址空間到另外一個地址空間。


 64位Linux系統裏,下面幾個sizeof的運行結果是()D
1
2
3
4
5
6
    
int intValue = 1024;
char str[] = 「Tencent」;
const char* ch = str;
sizeof(intValue) = __a__;
sizeof(str) = ___b__;
sizeof(ch) = __c___;

 



a=1,b=1,c=1
a=4,b=4,c=4
a=4,b=8,c=4
a=4,b=8,c=8


64位操做系統
char :1個字節(固定)
*(即指針變量): 8個字節
short int : 2個字節(固定)
int: 4個字節(固定)
unsigned int : 4個字節(固定)
float: 4個字節(固定)
double: 8個字節(固定)
long: 8個字節
unsigned long: 8個字節(變化*其實就是尋址控件的地址長度數值)
long long: 8個字節(固定)

b末尾還有一個\0

在RHEL5系統中使用vi編輯文件report.txt時,要自下而上查找字符串「2006」,應該在命令模式下使用(   )B
/2006
?2006
#2006
%2006

/從上到下查找
?從下到上查找

下面的內存管理模式中,會產生外零頭的是()BD

頁式
段式
請求頁式
請求段式

 操做系統在分配內存時,有時候會產生一些空閒可是沒法被正常使用的內存區域,這些就是內存碎片,或者稱爲內存零頭,這些內存零頭一共分爲兩類:內零頭和外零頭。
內零頭是指進程在向操做系統請求內存分配時,系統知足了進程所須要的內存需求後,還額外還多分了一些內存給該進程,也就是說額外多出來的這部份內存歸該進程全部,其餘進程是沒法訪問的。
外零頭是指內存中存在着一些空閒的內存區域,這些內存區域雖然不歸任何進程全部,可是由於內存區域過小,沒法知足其餘進程所申請的內存大小而造成的內存零頭。
頁式存儲管理是以頁爲單位(頁面的大小由系統肯定,且大小是固定的)向進程分配內存的,例如:假設內存總共有100K,分爲10頁,每頁大小爲10K。如今進程A提出申請56K內存,由於頁式存儲管理是以頁爲單位進程內存分配的,因此係統會向進程A提供6個頁面,也就是60K的內存空間,那麼在最後一頁中進程只使用了6K,從而多出了4K的內存碎片,可是這4K的內存碎片系統已經分配給進程A了,其餘進程是沒法再訪問這些內存區域的,這種內存碎片就是內零頭。
段式存儲管理是段(段的大小是程序邏輯肯定,且大小不是固定的)爲單位向進程進行內存分配的,進程申請多少內存,系統就給進程分配多少內存,這樣就不會產生內零頭,可是段式分配會產生外零頭。
例如:假設內存總的大小爲100K,如今進程A向系統申請60K的內存,系統在知足了進程A的內存申請要求後,還剩下40K的空閒內存區域;這時若是進程B向系統申請50K的內存區域,而系統只剩下了40K的內存區域,雖然這40K的內存區域不歸任何進程全部,可是由於大小沒法知足進程B的要求,因此也沒法分配給進程B,這樣就產生了外零頭。請求段式存儲管理是在段式存儲管理的基礎上增長了請求調段功能和段置換功能。
因此段式和請求段式存儲管理會產生外零頭,選BD


頁式-內零頭
段式-外零頭


有關線程說法正確的是( )AC
線程是程序的多個順序的流動態執行
線程有本身獨立的地址空間
線程不可以獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制
線程是系統進行資源分配和調度的一個獨立單位


進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,是操做系統進行資源分配和調度的一個獨立單位;
線程是進程的一個實體,一個進程中包含多個線程。是CPU調度和分派的基本單位,是比進程更小的能獨立運行的基本單位
B進程有獨立的地址空間,線程沒有。線程是共享進程的地址空間,所以B錯誤
D進程是 操做系統進行資源分配和調度的一個獨立單位,而線程只是CPU調度和分派的基本單位,所以D錯誤


apache目錄訪問控制的參數有( )

authname
authtype
authhost
authuserfile


AuthName:驗證窗口的名稱

AuthType:驗證的類型,這裏定義的是Basic

AuthUserFile:驗證所使用的賬號密碼配置文件

Require:指定能夠登陸網頁的用戶

Linux系統中,已經將DHCP服務器架設好,客戶端的網絡接口eth0,能夠經過( )命令得到服務器分配的IP地址。ABD
dhclient
ifdown eth0;
ifdown eth0;ifup eth0
ifconfig
service network stop;service network start

在xdm的配置目錄中,哪一個文件用來設置在用戶經過xdm登陸後自動起動的應用程序?B
The Xsession file
The Xsetup_0 file
The Xstart_up file
The GiveConsole file

 xdm (X Display Manager)是一種圖形化的登陸界面。配置文件都放在/etc/X11/xdm目錄下
Xsession文件決定了用戶會話的風格,包含用戶會話使用的命令
Xsetup_0文件中的程序會和圖形登陸界面一塊兒運行
GiveConsole文件決定了在Xwindows移交給用戶以前要執行的一些程序。

linux下解釋: ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500。    B
向規則鏈增長一條規則,規則匹配的對象是IP爲192.168.3.112,tos等於0x10的包,使用路由表2,優先選擇1500的端口

向規則鏈增長一條規則,規則匹配的對象是IP爲192.168.3.112,tos等於0x10的包,使用路由表2,這條規則的優先級是1500

向規則鏈增長一條規則,規則匹配的對象是IP爲192.168.3.112,tos等於0x10的包,不使用路由表2,優先選擇1500的端口

命令語法不正確
規則包含3個要素:

什麼樣的包,將應用本規則(所謂的SELECTOR,多是filter更能反映其做用);

符合本規則的包將對其採起什麼動做(ACTION),例如用那個表;

本規則的優先級別。優先級別越高的規則越先匹配(數值越小優先級別越高)。
pref是preference(優先)的縮寫

在RHEL5系統vi編輯器的末行模式中,若須要將文件中每一行的第一個「Linux」替換爲「RHEL5」,能夠使用(  )
:s/Linux/RHEL5

:s/Linux/RHEL5/g

:%s/Linux/RHEL5

:%s/Linux/RHEL5/g

A選項:指將當前行中的第一個linux換爲RHEL5
B選項:指將當前行中全部的linux換爲RHEL5
C選項:指將文件中每一行的第一個linux換爲RHEL5
D選項:整個文檔範圍內的linux換爲RHEL5

:S 表示當前行     g表示對應範圍內的全部
%S表示整個文檔


:s/old/new 將當前行中查找到的第一個字符「old」 串替換爲「new」

:s/old/new/g 將當前行中查找到的全部字符串「old」 替換爲「new」

:#,#s/old/new/g 在行號「#,#」範圍內替換全部的字符串「old」爲「new」

:%s/old/new/g 在整個文件範圍內替換全部的字符串「old」爲「new」

:s/old/new/c 在替換命令末尾加入c命令,將對每一個替換動做提示用戶進行確認

使用什麼命令把打印任務放到打印隊列中去打印D

lprm

lpq

lpd

lpr

答案: lpr
lprm 命令用於將一個工做由打印機貯列中移除
lpq 命令用於查看一個打印隊列的狀態,該程序能夠查看打印機隊列狀態及其所包含的打印任務。
lpd 命令 是一個常駐的打印機管理程序,它會根據 /etc/printcap 的內容來管理本地或遠端的打印機。
lpr(line printer,按行打印)實用程序用來將一個或多個文件放入打印隊列等待打印。

在Linux系統中搭建DHCP服務器時,若須要給客戶機指定默認網關地址爲192.168.1.1,能夠在dhcpd.conf配置文件中進行( )設置


option default-gate-way 192.168.1.1;

option gateways 192.168.1.1;

option routers 192.168.1.1;

option router-servers 192.168.1.1;

option routers 192.168.1.1:網關IP設置

什麼命令用來查看硬盤被佔用了多少空間和剩餘多少空間?B


du

df

free

vmstat

 Linux系統中,用戶文件描述符0表示 __ ___ 。 A

標準輸入設備文件描述符

標準輸出設備文件描述符

管道文件描述符

標準錯誤輸出設備文件描述符


文件描述符0:標準輸入設備
文件描述符1:標準輸出設備
文件描述符2:標準錯誤輸出設備

 linux 建立文件的命令有() BCDE

ls

touch

cat

vi/vim

>

 ls用來顯示目標列表
當前位置:首頁 » 文件和目錄管理 » ls ls命令 目錄基本操做 ls命令用來顯示目標列表

當前位置:首頁 » 文件和目錄管理 » ls ls命令 目錄基本操做 ls命令用來顯示目標列表

touch命令
建立空白文件或修改文件時間

cat主要有三大功能:
1.一次顯示整個文件。
2.從鍵盤建立一個文件。
   只能建立新文件,不能編輯已有文件.
3.將幾個文件合併爲一個文件

vi/vim可用來建立文件編輯文件並保存

> 是定向輸出到文件,若是文件不存在,就建立文件;若是文件存在,就將其清空;

將光盤/dev/hdc卸載的命令是?AC

umount /mnt/cdrom /dev/hdc

mount /dev/hdc

umount /dev/hdc

mount /mnt/cdrom /dev/hdc


掛載設備使用mount,卸載設備使用umount,有三種方式,經過設備名,掛載點或者設備名和掛載點
如題目所示:
umount /dev/hdc
umount /mnt/cdrom
umount /mnt/cdrom /dev/hdc

在linux編程中,如下哪一個TCP的套接字選項與nagle算法的開啓和關閉有關?


TCP_MAXSEG

TCP_NODELAY

TCP_SYNCNT

TCP_KEEPALIVE

 當有一個TCP數據段不足MSS,好比要發送700Byte數據,MSS爲1460Byte的狀況。nagle算法會延遲這個數據段的發送,等待,直到有足夠的數據填充成一個完整數據段。也許有人會問,這有什麼影響呢?沒有太大的影響,整體上來講,這種措施能節省沒必要要的資源消耗。可是要發送的整體數據很小時,這種措施就是拖後腿了。好比,用戶請求一個網頁,大約十幾KB的數據,TCP先發送了八九個數據包,剩下幾百字節一直不發送,要等到另外一個RTT才發送,這時候前面發送數據的ACK已經返回了。這樣的用戶體驗是很很差的。 因此,如今不少服務器都選擇主動關閉nagle算法,由於帶寬夠大,資源消耗不是問題,速度反而是個大問題。
從上述描述中,禁用 nagle,實質就是不在延遲 TCP_NODELAY

下述是Linux下多線程編程經常使用的pthread庫提供的函數名和意義,說法正確的有?ABCD



pthread_create 建立一個線程

pthread_join用來等待一個線程的結束

pthread_mutex_init 初始化一個線程互斥鎖

pthread_exit結束一個線程
 pthread_join()函數等待線程指定的線程
終止。 若是線程已經終止,那麼pthread_join()
當即返回。 指定的線程必須可接合線程。


若是retval不是NULL,那麼pthread_join()退出狀態的副本
目標線程(即。 目標線程提供的價值
pthread_exit(3))* retval所指向的位置。 若是瀝青量
線程被取消了,那麼PTHREAD_CANCELED放在* retval。


若是多個線程同時試圖加入相同的線程,
結果是未定義的。 若是線程調用pthread_join()
取消,而後目標仍可接合線程(即。 ,它將
不分離)。

如下哪些命令能夠查看當前系統的啓動時間(ABD)


w

top

ps

uptime

//漏了W
ps   查看當前系統中的進程
who -b   查看當前系統的啓動時間
last reboot   查看當前系統的啓動時間
w    查看當前系統的啓動時間
top   查看當前系統的啓動時間
uptime    查看當前系統的啓動時間

編譯內核時,能夠使用哪些命令對內核進行配置?ABCD


make config

make menuconfig

make oldconfig

make xconfig

在Linux主機上徹底安裝了RHEL5,這時系統會默認安裝DHCP服務器軟件包,下面關於DHCP服務器的配置文件描述正確的是(BD)

DHCP服務器的配置文件爲/etc/dhcp/dhcpd.conf

DHCP服務器的配置文件爲/etc/dhcpd.conf

DHCP服務器的配置文件默認是存在的,不須要建立

DHCP服務器的配置文件默認是不存在的,須要手工建立

對於Linux說法,下列說法正確的是()A


線性訪問內存非法時,當前線程會進入信號處理函數

用mv命令移動文件時,文件的修改時間會發生變化

ulimit -c設置的是函數調用棧的大小

malloc函數是應用程序向操做系統申請內存的接口

 A
B:不會變化
C:ulimit用於shell啓動進程所佔用的資源.-c size:設置core文件的最大值.單位:blocks
D:malloc的全稱是memory allocation,中文叫動態內存分配,當沒法知道內存具體位置的時候,想要綁定真正的內存空間,就須要用到動態的分配內存。

若是系統的umask設置爲244,建立一個新文件後,它的權限:()


--w-r--r--

-r-xr--r--

-r---w--w-

-r-x-wx-wx

 umask是從權限中「拿走」相應的位,且文件建立時不能賦予執行權限.
建立時,文件 默認666,目錄默認777,減去umask的位就是結果。

Linux系統中某個可執行文件屬於root而且有setid,當一個普通用戶 mike運行這個程序時,產生的進程的有效用戶和實際用戶分別是?

root mike

root root

mike root

mike mike

deamon mike

mike deamon

setuid位是讓普通用戶能夠以root用戶的角色運行只有root賬號才能運行的程序或命令。
所以當程序設置了setid權限位時,普通用戶會臨時變成root權限,但實際用戶任然是原來的mike。

調用setid使進程成長爲一個會話組長,setid調用成功後,進程成爲新的會話組長和進程組長,並與原來的登錄會話和進程組脫離,因爲會話過程對控制終端的獨佔性,進程同時與控制終端脫離。
這也是在建立daemon程序時,常常用到的一個步驟。

從四個選項選出不一樣的一個。B


telnet

rsync

wget

scp

linux下,這些四個命令或者工具,都在特定目錄下對應有相應的可執行程序,終端下輸入的參數,對應的是源碼中函數的參數,因此工具或者命令,它們的都是可執行程序。
telnet爲用戶提供了在本地計算機上完成遠程主機工做的能力,使用Telnet協議,是TCP/IP 協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。;
wget 是一個從網絡上自動下載文件的自由工具,支持經過HTTP、HTTPS、FTP三個最多見的TCP/IP協議下載,並能夠使用HTTP代理。
scp是有Security的文件copy,能夠把當前一個文件copy到遠程另一臺主機上,基於SSH登陸,SSH採用面向鏈接的TCP協議傳輸 ,應用22號端口 安全係數較高。
rsync是類unix系統下的數據鏡像備份工具——remote sync。支持本地複製,或者與其餘SSH、rsync主機同步。能夠使用scp、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接。
我的認爲,rsync支持的協議更多,能夠是面向鏈接的(tcp協議),也能夠是無鏈接的(udp協議,socket中能夠選擇),然而上面三個採用的都是面向鏈接的協議(Telnet,TCP,HTTP, SSH等),必定程度上保證可靠性。

關於靜態庫與動態庫的區別,如下說法錯誤的是()C


加載動態庫的程序運行速度相對較快

靜態庫會被添加爲程序的一部分進行使用

動態庫可用節省內存和磁盤空間

靜態庫從新編譯,須要將應用程序從新編譯

動態庫的函數到實際使用的時候才加載到內存,因此運行速度較慢

linux的系統調用是指D

由內核發起的調用

glibc函數庫裏的函數

由系統管理員運行的程序

是用戶進程調用內核功能的接口

所謂系統調用,就是內核提供的、功能十分強大的一系列的函數。這些系統調用是在內核中實現的,再經過必定的方式把系統調用給用戶,通常都經過門(gate)陷入(trap)實現。系統調用是用戶程序和內核交互的接口。

bash中,須要將腳本demo.sh的標準輸出和標準錯誤輸出重定向至文件demo.log,如下哪些用法是正確的()ABC


bash  demo.sh &>demo.log

bash  demo.sh>&demo.log

bash  demo.sh >demo.log 2>&1

bash  demo.sh 2>demo.log 1>demo.log

 該題考察Linux下的輸入/輸出重定向。在Linux中,每一個打開的文件被賦予一個文件描述符(file descriptor),包括標準輸入(stdin),標準輸出(stdout)和標準錯誤輸出(stderr),由0,1,2分別描述。

    A選項,command &> file 表示將標準輸出(stdout)和標準錯誤輸出(stderr)重定向至指定的文件file中。

    B選項,語法錯誤。正確的語法是M >& N,M和N都是文件描述符,M在不指定的狀況下默認是文件描述符1。

    C選項,command > file 2>&1,是由兩部分組成。首先command>file表示將標準輸出(stdout)重定向到文件file中。接下來的2>&1表示將標準錯誤輸出(stderr)輸出到文件描述符1指定的位置,即標準輸出(stdout)的位置,因爲標準輸出已經衝定向到文件file中,因此標準錯誤輸出也會重定向到文件file中。

    D選項,command 2> file 1> file,也可當作是由兩部分組成。首先command 2> file,表示將標準錯誤輸出(stderr)重定向到文件file中;1> file,表示將標準輸出(stdout)重定向到文件file中。 最終的file中不會包含標準錯誤輸出(stderr)的信息,由於會被以後的標準輸出(stdout)覆蓋。


下列有關Nginx配置文件nginx.conf的敘述正確的是()


nginx進程數設置爲CPU總核心數最佳

虛擬主機配置多個域名時,各域名間應用逗號隔開

sendfile on;表示爲開啓高效文件傳輸模式,對於執行下載操做等相關應用時,應設置爲on

設置工做模式與鏈接數上限時,應考慮單個進程最大鏈接數(最大鏈接數=鏈接數*進程數)


參考網絡上的一篇總結。  Nginx配置文件nginx.conf中文詳解
詳見:http://www.2cto.com/os/201212/176520.html
A. 進程數設置爲CPU總核心數最佳。  (正確)
B. 配置虛擬主機,多個域名時,用 空格 分隔。 (錯誤)
C. 設定http服務器中 sendfile on;   #開啓高效文件傳輸模式
     普通應用設置爲on;
     用於進行下載等應用磁盤IO重負載應用,設置爲off,以平衡磁盤與網絡I/O處理速度,下降系統的負載。(錯誤)
D. 工做模式與鏈接數上限 :(最大鏈接數 = 鏈接數 * 進程數)(正確)

程序員小李經過管道統計prog.c函數中for語句經過的次數,須要使用的指令分別是BC

vi

grep

wc

sort

grep 「for」  proc.c  | wc -l  

Redhat 9所支持的安裝方式有?


經過HTTP進行網絡安裝

經過Telnet進行網絡安裝

經過NFS進行網絡安裝

從本地硬盤驅動器進行安裝

光盤安裝 (常規狀況) 硬盤安裝 (無光驅狀況)
網絡安裝-NFS方式 (適合於批量安裝大量服務器,和kickstart自動安裝一塊兒使用)
網絡安裝-FTP方式 (適合於批量安裝大量服務器,和kickstart自動安裝一塊兒使
網絡安裝-HTTP方式 (適合於批量安裝大量服務器,和kickstart自動安裝一塊兒使

Linux系統上,下面哪些文件是與用戶管理相關的配置文件()ABC


/etc/passwd

/etc/shadow

/etc/group

/etc/password

在Linux系統下,你用vi編輯器對文本文件test.txt進行了修改,想保存對該文件所作的修改並正常退出vi編輯器,能夠(   )。AD


在命令模式下執行ZZ命令

在命令模式下執行WQ命令

在末行模式下執行:q!

在末行模式下執行:wq

//漏了A

在bash中,下列哪些語句是賦值語句?()C


a ="test"

$a ="test"

a="test"

$a="test"

 bash中有兩個內置的命令declare 和 typeset 可用於建立變量。除了使用內置命令來建立和設置變量外,還能夠直接賦值,格式爲:變量名=變量值

  注意:變量名前面不該加美圓「$」符號。(和PHP不一樣)

         等號「=」先後不能夠有空格。

         Shell中不須要顯式的語法來聲明變量。

         變量名不能夠直接和其餘字符相連,若是想相連,必須用括號:    echo 「this is $(he)llo!」

下面說法哪一個正確的: D


各個線程擁有相同的堆棧

i++是線程安全的,不須要同步

x=y是線程安全的,不須要同步

對進程來講,其虛擬內存的大小不受物理內存大小的限制

線程有本身的棧,但沒有堆因此A錯。普通整數的通常賦值、增量和減量語句會產生多條機器指令,操做均不具備原子性,須要同步,BC錯。虛擬存儲器具備請求調入和置換功能,因此虛擬內存的大小不受物理內存大小的限制。D對

你嘗試登出時收到一個錯誤消息,顯示你還有任務未完成,你須要使用下面哪一個命令?A



kill PID-of-the-process

kill job-number-of-process

kill

kill PID-of-the-last-command

答案A
B不行
想使用命令結束一個正在運行的job:
kill %job number

大家公司有三個辦事處,這三個辦事處的電腦在公司網絡上都屬於一個Windows 2000域。全部的服務器都裝有Windows 2000Server 系統,此網絡經過幀中繼鏈接。你在名爲Mon1服務器上安裝了一個第三方網絡管理套件。你須要確保這個新的軟件能結合並管理網絡中現有的設備。你該怎麼作?


在Mon1上安裝SNMP

除了Mon1,全部的計算機都安裝SNMP

在Mon1上的TCP/IP安裝屬性中配置SNMP服務選項

在除了Mon1的全部計算機上的TCP/IP安裝屬性中配置SNMP服務選項


SNMP基於TCP/IP協議工做,對網絡中支持SNMP協議的設備進行管理。換句話說就是全部 支持 SNMP協議的 設備 ,均可以由SNMP統一管理,那麼管理員能夠使用統一的操做進行,不用擔憂下面的設備是linux,mac,win仍是路由器,防火牆。
而後NMS是 一個網管平臺,也叫管理站,負責網管命令的發出、數據存儲、及數據分析。被管理的設備上要運行SNMP代理,代理實現設備與管理站的SNMP通訊。
如今題目的意思就是 Mon1服務器安裝那個NMS管理站,因此其餘被他管的設備就要安裝SNMP服務做爲代理。
就比如各個國家的人組成一個公司。老大說中文,他就安裝一箇中文管理軟件,屬下英國人、西班牙人、意大利人就各自安裝語言翻譯器做爲代理吧。

如下哪個命令只查找源代碼、二進制文件和幫助文件,而不是因此類型的文件?此命令查找的目錄是由環境變量$PATH指定的



whereis

whatis

which

apropos

 whereis命令只能用於程序名的搜索,並且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。若是省略參數,則返回全部信息。
和find相比,whereis查找的速度很是快,這是由於linux系統會將 系統內的全部文件都記錄在一個數據庫文件中,當使用whereis和下面即將介紹的locate時,會從數據庫中查找數據,而不是像find命令那樣,通 過遍歷硬盤來查找,效率天然會很高。
可是該數據庫文件並非實時更新,默認狀況下時一星期更新一次,所以,咱們在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛創建文件,卻沒法查找到,緣由就是由於數據庫文件沒有被更新。
1.命令格式:
whereis [-bmsu] [BMS 目錄名 -f ] 文件名
2.命令功能:
whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬於原始代碼,二進制文件,或是幫助文件。whereis 程序還具備搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。
3.命令參數:
-b   定位可執行文件。
-m   定位幫助文件。
-s   定位源代碼文件。
-u   搜索默認路徑下除可執行文件、源代碼文件、幫助文件之外的其它文件。
-B   指定搜索可執行文件的路徑。
-M   指定搜索幫助文件的路徑。
-S   指定搜索源代碼文件的路徑。

下面有關bash配置文件,說法正確的是?

.bash_logout:退出shell時,要執行的命令

.bash_profile:每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該文件僅僅執行一次!默認狀況下

/etc/bash.bashrc 該文件包含專用於我的的bash shell的bash信息,當登陸時以及每次打開新的shell時,該文件被讀取

/etc/profile:此文件爲系統的每一個用戶設置環境信息,當用戶第一次登陸時,該文件被執行
 正確答案:A、B、D
.bash_profile 相似於編程中的構造函數,當登陸shell時,shell會尋找該文件作環境初始化。
.bashrc 是在bash環境時.bash_profile的替補。
.bash_logout 相似於編程中的析構函數,當登陸shell退出時,shell會尋找該文件,並按其指示辦事。
/etc/profile是系統文件,對系統下全體用戶起做用
 C選項中:/etc/bash.bashrc 對全部用戶起做用
而容易混淆的: ~/.bashrc 是對擁有當前home目錄的用戶起做用,也就是當前用戶。


TCP的握手與分手,可能出現的情形有()。



握手須要3次通訊

分手須要進行4次通訊

FIN和ACK 在同一包裏

ACK 和SYN 在同一包裏

ABCD, C正確,理論上在接受到fin後,接收方剛好也要關閉鏈接,則能夠在一個包內發送fin和ack(這從tcp包頭格式能夠看出是正確的,fin和ack不是在同一個bit位上的,因此爲何不能同時發),其次在tcp狀態轉移圖中也能夠看到從fin_wait1直接到time_wait的狀況,這種狀況就就同時接受到fin和ack的結果

運行在多核處理器上的Linux環境中,若臨界區很是短,且不容許線程上下文切換的狀況下,使用下列哪一種機制知足上述需求而且性能最好?A


SpinLock

Mutex

Semaphore

Condition variable

spinlock在多處理器多線程環境的場景中有很普遍的使用,通常要求使用spinlock的臨界區儘可能簡短,這樣獲取的鎖能夠儘快釋放,以知足其餘忙等的線程。Spinlock和mutex不一樣,spinlock不會致使線程的狀態切換(用戶態->內核態),可是spinlock使用不當(如臨界區執行時間過長)會致使cpu busy飆高。

Linux下兩個進程能夠同時打開同一個文件,這時以下描述錯誤的是:D



兩個進程中分別產生生成兩個獨立的fd

兩個進程能夠任意對文件進行讀寫操做,操做系統並不保證寫的原子性

進程能夠經過系統調用對文件加鎖,從而實現對文件內容的保護

任何一個進程刪除該文件時,另一個進程會當即出現讀寫失敗

兩個進程能夠分別讀取文件的不一樣部分而不會相互影響

一個進程對文件長度和內容的修改另一個進程能夠當即感知

應該選D, 通常刪除都是文件索引,若是兩個文件同時打開同一個文件,一個線程執行刪除操做,只要另外一個線程不退出,就能夠繼續對該文件進行操做,一旦退出才找不到該文件的索引節點而報錯

下面有關內核線程和用戶線程說法錯誤的是?C

用戶線程因 I/O 而處於等待狀態時,整個進程就會被調度程序切換爲等待狀態,其餘線程得不到運行的機會

內核線程只運行在內核態,不受用戶態上下文的影響。

用戶線程和內核線程的調度都須要通過內核態。

內核線程有利於發揮多處理器的併發優點,但卻佔用了更多的系統開支。
線程一般被定義爲一個進程中代碼的不一樣執行路線。從實現方式上劃分,線程有兩種類型:「用戶級線程」和「內核級線程」。 用戶線程指不須要內核支持而在用戶程序中實現的線程,其不依賴於操做系統核心,應用進程利用線程庫提供建立、同步、調度和管理線程的函數來控制用戶線程。這種線程甚至在象 DOS 這樣的操做系統中也可實現,但線程的調度須要用戶程序完成,這有些相似 Windows 3.x 的協做式多任務。另一種則須要內核的參與,由內核完成線程的調度。其依賴於操做系統核心,由內核的內部需求進行建立和撤銷,這兩種模型各有其好處和缺點。用戶線程不須要額外的內核開支,而且用戶態線程的實現方式能夠被定製或修改以適應特殊應用的要求,可是當一個線程因 I/O 而處於等待狀態時,整個進程就會被調度程序切換爲等待狀態敏感詞線程得不到運行的機會;而內核線程則沒有各個限制,有利於發揮多處理器的併發優點,但卻佔用了更多的系統開支。 Windows NT和OS/2支持內核線程。Linux 支持內核級的多線程
用戶線程指不須要內核支持而在用戶程序中實現的線程,其不依賴於操做系統核心,應用進程利用線程庫提供建立、同步、調度和管理線程的函數來控制用戶線程

在 Linux 中查看 ARP 緩存記錄的命令是?A

"arp –a"

"arp –d"

"arp -L"

"arp –D"

 arp緩存就是IP地址和MAC地址關係緩存列表。在Windows下 arp -d [$ip] 不指定IP地址時清除全部arp緩存 。在Linux下 arp -d $ip 必須指定IP地址才能執行這條命令的此參數, 全部在Linux系統下 arp -d $ip 命令只能清除一個IP地址的對應MAC地址緩存


arp -a   查看緩存記錄
arp -d   刪除某些內容

將文件file1複製爲file2能夠用下面哪些命令()ABCDE


cp file1 file2

cat file1 >file2

cat < file1 >file2

dd if=file1 of=file2

cat file1 | cat >file2

 cp命令 :cp指令用於複製文件或目錄。
        將文件file1複製成文件file2命令以下:cp file1 file2
cat命令 :cat命令是linux下的一個文本輸出命令,一般是用於觀看某個文件的內容的。
         一次顯示整個文件命令以下: cat filename
> : linux中的數據流重導向:輸出導向,覆蓋導向的文件內容。
< : linux中的數據流重導向:輸入導向,理解爲本來由鍵盤輸入改成文本輸入
dd命令 : 做用是用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。
        參數:if  輸入文件(或設備名稱)  of  輸出文件(或設備名稱)
       將文件file1拷貝到文件file2中命令以下:  dd if=file1 of=file2
| :管道命令操做符,處理經由前面一個指令傳出的正確輸出信息,而後,傳遞給下一個命令,做爲標準的輸入

在Linux上,對於多進程,子進程繼承了父進程的下列哪些?



進程地址空間

共享內存

信號掩碼

已打開的文件描述符

以上都不是

 子進程繼承父進程

    用戶號UIDs和用戶組號GIDs
    環境Environment
    堆棧
    共享內存
    打開文件的描述符
    執行時關閉(Close-on-exec)標誌
    信號(Signal)控制設定
    進程組號
    當前工做目錄
    根目錄
    文件方式建立屏蔽字
    資源限制
    控制終端

子進程獨有

    進程號PID
    不一樣的父進程號
    本身的文件描述符和目錄流的拷貝
    子進程不繼承父進程的進程正文(text),數據和其餘鎖定內存(memory locks)
    不繼承異步輸入和輸出

父進程和子進程擁有獨立的地址空間和PID參數。
子進程從父進程繼承了用戶號和用戶組號,用戶信息,目錄信息,環境(表),打開的文件描述符,堆棧,(共享)內存等。
通過fork()之後,父進程和子進程擁有相同內容的代碼段、數據段和用戶堆棧,就像父進程把本身克隆了一遍。事實上,父進程只複製了本身的PCB塊。而代碼段,數據段和用戶堆棧內存空間並無複製一份,而是與子進程共享。只有當子進程在運行中出現寫操做時,纔會產生中斷,併爲子進程分配內存空間。因爲父進程的PCB和子進程的同樣,因此在PCB中斷中所記錄的父進程佔有的資源,也是與子進程共享使用的。這裏的「共享」一詞意味着「競爭」            

在/etc/fstab文件中指定的文件系統加載參數中, 參數通常用於CD-ROM等移動設備D


defaults

sw

rw和ro

noauto

題目的意思是什麼參數通常用於CD-ROM等移動設備
參數 default表示和使用默認設置
        sw 表示自動掛載的可讀寫分區
        ro 表示掛載只讀權限的
        rw 表示掛載讀寫權限的
因此選擇D。表示手動掛載的,也用於CD-ROW等移動設備

linux中調用write發送網絡數據返回n(n>0)表示(B )


對端已收到n個字節

本地已發送n個字節

系統網絡buff收到 n個字節

系統調用失敗

 B
已發送,但不保證對方收到
write函數的返回值的含義原本就是這樣

下列關於網絡編程的描述中,錯誤的是?


一個 Socket 能夠綁定多個網卡

客戶端和服務器端均可以主動關閉 Socket

Socket 支持阻塞模式和非阻塞模式

TCP 和 UDP 協議不能綁定同一端口

 TCP、UDP能夠綁定同一端口來進行通訊。
相似於文件描述符,每一個端口都擁有一個叫端口號(port   number)的整數型標識符,用於區別不一樣端口。因爲TCP/IP傳輸層的兩個協議TCP和UDP是徹底獨立的兩個軟件模塊,所以各自的端口號也相互獨立,如TCP有一個255號端口,UDP也能夠有一個255號端口,兩者並不衝突。

下面有關孤兒進程和殭屍進程的描述,說法錯誤的是?D


孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那麼那些子進程將成爲孤兒進程。

殭屍進程:一個進程使用fork建立子進程,若是子進程退出,而父進程並無調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中。這種進程稱之爲僵死進程。

孤兒進程將被init進程(進程號爲1)所收養,並由init進程對它們完成狀態收集工做。

孤兒進程和殭屍進程均可能使系統不能產生新的進程,都應該避免

 孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那麼那些子進程將成爲孤兒進程。孤兒進程將被init進程(進程號爲1)所收養,並由init進程對它們完成狀態收集工做。

殭屍進程:一個進程使用fork建立子進程,若是子進程退出,而父進程並無調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中。這種進程稱之爲僵死進程。

若是進程不調用wait / waitpid的話,  那麼保留的那段信息就不會釋放,其進程號就會一直被佔用,可是系統所能使用的進程號是有限的,若是大量的產生僵死進程,將由於沒有可用的進程號而致使系統不能產生新的進程. 此即爲殭屍進程的危害,應當避免。

孤兒進程是沒有父進程的進程,孤兒進程這個重任就落到了init進程身上 ,init進程就好像是一個民政局,專門負責處理孤兒進程的善後工做。每當出現一個孤兒進程的時候,內核就把孤 兒進程的父進程設置爲init,而init進程會循環地wait()它的已經退出的子進程。這樣,當一個孤兒進程淒涼地結束了其生命週期的時候,init進程就會表明黨和政府出面處理它的一切善後工做。 所以孤兒進程並不會有什麼危害。

內核不包括的子系統是 D


進程管理系統

內存管理系統

I/O管理系統

硬件管理系統

內核分爲進程管理子系統,內存管理子系統,io管理子系統,文件管理子系統


下面那些命令能夠用來查看Linux主機的默認路由()AD


route

ifconfig

ping

netstat

 答案:A

A,route命令用來顯示目前本機路由表的內容,而且還能夠針對路由表中的記錄來進行相應的添加、刪除或修改等操做。
B,ifconfig命令用來來檢測和設置本機的網絡接口。

C,ping命令用來檢測兩部主機之間的傳輸信道是否暢通,或遠程主機是否正常

D,netstat命令用來查看主機的鏈接狀態

如下哪些命令能夠獲取linux主機的負載相關指標ABD


uptime

top

ls

sar

crontab

 uptime命令過去只顯示系統運行多久。如今,能夠顯示系統已經運行了多長時間,信息顯示依次爲:如今時間、系統已經運行了多長時間、目前有多少登錄用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均負載。
top命令能夠查看系統總體狀態
最後一些輸出信息的解釋:
load average: 0.09, 0.05, 0.01
三個數分別表明不一樣時間段的系統平均負載(一分鐘、五 分鐘、以及十五分鐘),它們的數字是越小越好。在多核處理中,系統的均值不該該高於處理器核心的總數量
進程使用的內存能夠用top,有3個列VIRT RES SHR, 標示了進程使用的內存狀況, VIRT標識這個進程能夠使用的內存總大小, 包括這個進程真實使用的內存, 映射過的文件, 和別的進程共享的內存等. RES標識這個這個進程真實佔用內存的大小. SHR標識能夠和別的進程共享的內存和庫大小.
sar -u輸出顯示CPU信息。-u選項是sar的默認選項。該輸出以百分比顯示CPU的使用狀況
ls跟dos下的dir命令是同樣的都是用來列出目錄下的文件
crontab是一個定時執行任務命令,不能查看系統負載。

批量刪除當前目錄下後綴名爲.c的文件。如a.c、b.c。AB


rm *.c

find . -name "*.c" -maxdepth 1 | xargs rm

find . -name "*.c"   | xargs  rm

以上都不正確

A, B
A沒有問題
B:題目中是說刪除當前目錄下 後綴名爲.c的文件,須要加上-maxdepth 1,表示是當前目錄,不包括其子目錄
因此C這樣是不對的


用 xargs 是因爲不少命令不支持 | 管道來傳遞參數,而平常工做中有有這個必要,因此就有了 xargs 命令

int main{
    fork() || fork()
}

 


共建立了()個進程 A



3

2

1

4

 fork()給子進程返回一個零值,而給父進程返回一個非零值;
在main這個主進程中,首先執行 fork() || fork(), 左邊的fork()返回一個非零值,根據||的短路原則,前面的表達式爲真時,後面的表達式不執行,故包含main的這個主進程建立了一個子進程,
因爲子進程會複製父進程,並且子進程會根據其返回值繼續執行,就是說,在子進程中, fork() ||fork()這條語句左邊表達式的返回值是0, 因此||右邊的表達式要執行,這時在子進程中又建立了一個進程,
即main進程->子進程->子進程,一共建立了3個進程。

在linux網絡編程中,如下關於socket描述符正確的是:ABC


socket存在兩種模式:阻塞和非阻塞

系統調用read從socket中讀取數據時,當read返回0的時候,表示socket中數據讀取完畢

若是socket設置成非阻塞模式,當socket的輸入緩衝區沒有可讀數據時,read操做會返回錯誤

在阻塞socket上調用write函數發送數據,函數返回時,表示數據已經發送出去

我以爲答案是AC.
B:非阻塞模式下,返回0表示對端發送close關閉鏈接;因此我以爲這個也不必定正確。
C:正確.非阻塞模式下,若是緩衝區爲空,那麼read返回-1,同時設置errno=EAGAIN。
D:非阻塞模式下,表示寫入內核socket緩衝區;阻塞模式下表示成功發送出去。

進程A讀取B進程中的某個變量(非共享內存),可行的方式有()



B進程向消息隊列寫入一個包含變量內容的消息,A進程從隊列中讀出

經過本地環路通訊

若是A、B 非親屬,那麼A經過命名管道把這個變量的地址發給B進程

若是 B是A 進程的子進程,那麼B直接讀取變量內容便可


答案:A、B、C
本題考查進程間通訊方式。
A選項爲消息隊列的實現方式。
B選項爲本地socket通訊方式。
C選項爲命名管道通訊方式。
D選項經過fork子進程的方式,可是兩者的地址空間是各自獨立的,子進程沒法讀取父進程的數據,故不可用。

下列關於文件系統中元數據(好比ext2中的inode)的基本做用及ext2和ext3的根本區別描述錯誤的有?B


EXT2 inode用來定義文件系統的結構以及描述系統中每一個文件的管理信息,每一個文件都有且只有一個inode,即便文件中沒有數據,其索引結點也是存在的

EXT2 inode包含文件訪問權限、屬主、組、大小、生成時間、訪問時間、最後修改時間等信息。它是linux管理文件系統的最基本單位,也是文件系統鏈接任何子目錄、文件的橋樑。

ext2文件系統是非日誌文件系統,而ext3有多種日誌模式

ext3文件系統可以極大地提升文件系統的完整性
inode分為內存中的inode和文件系統中的inode,為了避免混淆,我們稱前者為VFS inode, 而後者以EXT2為表明,我們稱為Ext2 inode。下面分別對VFS inodee與Ext2 inode作一下簡單的描述:
  一、VFS inode包含文件訪問許可權、屬主、組、大小、生成時間、訪問時間、最後修改時間等信息。它是linux管理文件系統的最基本單位,也是文件系統連接任何子目錄、文件的橋樑。inode結構中的靜態信息取自物理設備上的文件系統,由文件系統指定的函數填寫,它只存在於內存中,能夠通過inode緩存訪問。雖然每個文件都有相應的inode結點,可是隻有在須要的時候系統才會在內存中為其創建相應的inode數據結構,創建的inode結構將造成一個鏈表,我們能夠通過遍歷這個鏈表去獲得我們須要的文件結點,VFS也為已分配的inode構造緩存和哈希表,以提 高系統性能。inode結構中的struct inode_operations *i_op為我們提供了一個inode操做列表,通過這個列表提供的函數我們能夠對VFS inode結點進行各種操做。每個inode結構都有一個i結點號i_ino,在同一個文件系統中每個i結點號是惟一的。

  二、EXT2 inode用來定義文件系統的結構以及描述系統中每個文件的管理信息,每個文件都有且只有一個inode,即便文件中沒有數據,其索引結點也是存在的。每個文件用一個單獨的Ext2 inode結構來描述,並且每一個inode都有惟一的標誌號。Ext2 inode為內存中的inode結構提供了文件的基本信息,隨著內存中inode結構的變化,系統也將更新Ext2 inode中相應的內容。Ext2 inode對應的是Ext2_inode結構。
EXT2 inode不包含文件的建立時間,ext3 inode包含。因此B錯誤。

init啓動進程須要讀取()配置文件



/sbin/init

/bin/sh

/etc/sysvinit

/etc/inittab


/sbin/init在覈心完整的加載後,開始運行系統的第一支程序,主要的功能就是準備軟件運行的環境,包括系統的主機名稱、網絡配置、語系處理、文件系統格式及其餘服務的啓動等。
/bin/sh解釋腳本的shell命令,開機後運行
/etc/sysvinit就是 system V 風格的 init 系統,顧名思義,它源於 System V 系列 UNIX。sysvinit 中運行模式描述了系統各類預訂的運行模式。
/etc/inittab定義了系統引導時的運行級別, 進入或者切換到一個運行級別時作什麼。

執行指令find / -name 「test.c」,按ctrl+z後的提示有[1] 166,能夠繼續執行的方式有()C



kill 166

Ctrl+h

fg 1

bg 1

fg是將進程放到前臺並喚醒
bg是將進程放到後臺並喚醒

linux下查看當前網絡鏈接的命令。
正確答案: B   你的答案: A (錯誤)

ping

netstat

route

tracert

inux查看網絡連接情況命令:netstat
ping測試網絡是否鏈接
route設置路由表
tracert不是linux命令,在linux下應該是traceroute,追蹤數據包在網絡上傳輸時的路徑

 內存空間被分紅不一樣區域,其中用函數

    void* malloc(unsigned int size);

申請的內存在()
正確答案: C   你的答案: B (錯誤)

程序區

靜態存儲區

動態存儲區

ROM區

靜態儲存:全局變量 靜態變量 Stack:局部變量 系統會自動回收 heap:new malloc

Linux執行ls,會引發哪些系統調用()
正確答案: B C D   你的答案: A B C (錯誤)

nmap

read

execve

fork

任何shell都會執行 exec 和 fork
而    ls會執行read
三個加起來

你被須要檢查系統中的設備狀況,須要檢查哪一個log日誌?
正確答案: C   你的答案: A (錯誤)

/var/log/tmp

/var/log/lastlog

/var/log/messages

/var/log/utmp

 答案:C  

    /var/log/messages — 包括總體系統信息,其中也包含系統啓動期間的日誌。此外,mail,cron,daemon,kern和auth等內容也記錄在var/log/messages日誌中。
    /var/log/dmesg — 包含內核緩衝信息(kernel ring buffer)。在系統啓動時,會在屏幕上顯示許多與硬件有關的信息。能夠用dmesg查看它們。
    /var/log/auth.log — 包含系統受權信息,包括用戶登陸和使用的權限機制等。
    /var/log/boot.log — 包含系統啓動時的日誌。
    /var/log/daemon.log — 包含各類系統後臺守護進程日誌信息。
    /var/log/dpkg.log – 包括安裝或dpkg命令清除軟件包的日誌。
    /var/log/kern.log – 包含內核產生的日誌,有助於在定製內核時解決問題。
    /var/log/lastlog — 記錄全部用戶的最近信息。這不是一個ASCII文件,所以須要用lastlog命令查看內容。
    /var/log/maillog /var/log/mail.log — 包含來着系統運行電子郵件服務器的日誌信息。例如,sendmail日誌信息就所有送到這個文件中。
    /var/log/user.log — 記錄全部等級用戶信息的日誌。
    /var/log/Xorg.x.log — 來自X的日誌信息。
    /var/log/alternatives.log – 更新替代信息都記錄在這個文件中。
    /var/log/btmp – 記錄全部失敗登陸信息。使用last命令能夠查看btmp文件。例如,」last -f /var/log/btmp | more「。
    /var/log/cups — 涉及全部打印信息的日誌。
    /var/log/anaconda.log — 在安裝Linux時,全部安裝信息都儲存在這個文件中。
    /var/log/yum.log — 包含使用yum安裝的軟件包信息。
    /var/log/cron — 每當cron進程開始一個工做時,就會將相關信息記錄在這個文件中。
    /var/log/secure — 包含驗證和受權方面信息。例如,sshd會將全部信息記錄(其中包括失敗登陸)在這裏。
    /var/log/wtmp或/var/log/utmp — 包含登陸信息。使用wtmp能夠找出誰正在登錄進入系統,誰使用命令顯示這個文件或信息等。
    /var/log/faillog – 包含用戶登陸失敗信息。此外,錯誤登陸命令也會記錄在本文件中。

除了上述Log文件之外, /var/log還基於系統的具體應用包含如下一些子目錄:

    /var/log/httpd/或/var/log/apache2 — 包含服務器access_log和error_log信息。
    /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
    /var/log/mail/ –  這個子目錄包含郵件服務器的額外日誌。
    /var/log/prelink/ — 包含.so文件被prelink修改的信息。
    /var/log/audit/ — 包含被 Linux audit daemon儲存的信息。
    /var/log/samba/ – 包含由samba存儲的信息。
    /var/log/sa/ — 包含每日由sysstat軟件包收集的sar文件。
    /var/log/sssd/ – 用於守護進程安全服務。

設fp已定義,執行語句fp=fopen("file","w");後,如下針對文本文件file操做敘述的選項錯誤的是:
正確答案: A C D   你的答案: C D (錯誤)

能夠隨意讀和寫

只能寫不能讀

能夠在原有內容後追加寫

寫操做結束後能夠從頭開始讀

正確答案:ACD;本題考察C語言中的文件操做;
解析:
fopen(「file」,」w」)打開文件,並賦值爲「w」權限,即寫權限,則B正確,A錯誤,由於這裏不具備讀權限;對於C的解釋:用「w」打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名創建該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。因此C錯誤;對於D的解釋:D所描述的權限應該是「w+」而非「w」,因此D錯誤;

有一個文件ip.txt,每行一條ip記錄,共若干行,下面哪一個命令能夠實現「統計出現次數最多的前3個ip及其次數」?()

正確答案: B   你的答案: A (錯誤)

uniq -c ip.txt│sort -nr│head -n 3

sort ip.txt│uniq -c│sort -rn│head -n 3

cat ip.txt │count -n│sort -rn│head -n 3

cat ip.txt │sort │uniq -c│sort -rn│top -n 3

sort | uniq -c| 搭配使用,而且須要優先sort 再uniq -c 才能再輸出行前面加上每行在文件中出現的次數;
 sort 是按ASCII碼排序
-n   依照數值的大小排序。
-r   以相反的順序來排序。
uniq -c 是去重並顯示個數
head -n 3 爲取前3行

關於Linux系統的負載(Load),如下表述正確的是______。
正確答案: B C   你的答案: B (錯誤)

經過就緒和運行的進程數來反映

能夠經過TOP命令查看

能夠經過uptime查看

Load:2.5,1.3,1.1表示系統的負載壓力在逐漸減小

D三個數分別表明不一樣時間段的系統平均負載(一分鐘、五分鐘、以及十五分鐘),它們的數字固然是越小越好。數字越高,說明服務器的負載越大,這也多是服務器出現某種問題的信號。可是一分鐘和五分鐘的平均負載大於十五分鐘的,不是負載在變小吧。

下面選項關於linux下查看cpu,內存,swap,硬盤信息的命令描述錯誤的是?
正確答案: C   你的答案: C

cat  /proc/cpuinfo 查看CPU相關參數的linux系統命令

cat  /proc/meminfo 查看linux系統內存信息的linux系統命令

du -h: 查看硬盤信息

cat /proc/swaps :查看全部swap分區的信息

1.查看CPU信息命令
cat  /proc/cpuinfo

2.查看內存信息命令
cat  /proc/meminfo

3.查看硬盤信息命令
fdisk -l

下面哪一個命令不是用來查看網絡故障?
正確答案: C   你的答案: C

telnet

ping

init

netstat

 A選項:telnet命令一般用來遠程登陸。telnet程序是基於TELNET協議的遠程登陸客戶端程序。Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工做的能力。
B選項:Linux系統的ping命令是經常使用的網絡命令,它一般用來測試與目標主機的連通性,咱們常常會說「ping一下某機器,看是否是開着」、不能打開網頁時會說「你先ping網關地址192.168.1.1試試」。它經過發送ICMP ECHO_REQUEST數據包到網絡主機(send ICMP ECHO_REQUEST to network hosts),並顯示響應狀況,這樣咱們就能夠根據它輸出的信息來肯定目標主機是否可訪問(但這不是絕對的)。有些服務器爲了防止經過ping探測到,經過防火牆設置了禁止ping或者在內核參數中禁止ping,這樣就不能經過ping肯定該主機是否還處於開啓狀態。
C選項: init init 命令進程和做業管理 init 命令是 Linux 下的進程初始化工具, init 進程是全部 Linux 進程的父進程,它的進程號爲 1 。 init 命令是 Linux 操做系統中不可缺乏的程序之一, init 進程是 Linux 內核引導運行的,是系統中的第一個進程。
D選項: n etstat命令用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,通常用於檢驗本機各端口的網絡鏈接狀況。 n etstat是在內核中訪問網絡及相關信息的程序,它能提供TCP鏈接,TCP和UDP監聽,進程內存管理的相關報告。 若是你的計算機有時候接收到的數據報致使出錯數據或故障,你沒必要感到奇怪,TCP/IP能夠允許這些類型的錯誤,並可以自動重發數據報。但若是累計的出錯狀況數目佔到所接收的IP數據報至關大的百分比,或者它的數目正迅速增長,那麼你就應該使用 n etstat查一查爲何會出現這些狀況了。

網絡服務的daemon是:
正確答案: C   你的答案: C

netd

httpd

inetd

lpd

 A:     Netd 就是Network Daemon 的縮寫,表示Network守護進程. Netd負責跟一些涉及網絡的配置,操做,管理,查詢等相關的功能實現,好比,例如帶寬控制(Bandwidth),流量統計,帶寬控制,網絡地址轉換(NAT),我的局域網(pan),PPP連接,soft-ap,共享上網(Tether),配置路由表,interface配置管理,等等.好像Andorid用的
C:    inetd是監視一些網絡請求的 守護進程 ,其根據網絡請求來調用相應的服務進程來處理鏈接請求。它能夠爲多種服務管理鏈接,當 inetd 接到鏈接時,它可以肯定鏈接所需的程序,啓動相應的進程,並把 socket 交給它 。
我的以爲應該選A

下列關於 clone 和 fork 的區別描述正確的有?
正確答案: C   你的答案: C

clone和fork最大不一樣在於fork再也不復制父進程的棧空間,而是本身建立一個新的。

clone和fork最大不一樣在於clone再也不復制父進程的棧空間,而是本身建立一個新的。

clone是fork的升級版本,不只能夠建立進程或者線程,還能夠指定建立新的命名空間(namespace)、有選擇的繼承父進程的內存、甚至能夠將建立出來的進程變成父進程的兄弟進程等等

fork是clone的升級版本,不只能夠建立進程或者線程,還能夠指定建立新的命名空間(namespace)、有選擇的繼承父進程的內存、甚至能夠將建立出來的進程變成父進程的兄弟進程等等

fork() 函數複製時將父進程的因此資源都經過複製數據結構進行了複製,而後傳遞給子進程,因此 fork() 函數不帶參數; clone() 函數則是將部分父進程的資源的數據結構進行復制,複製哪些資源是可選擇的,這個能夠經過參數設定,因此 clone() 函數帶參數,沒有複製的資源能夠經過指針共享給子進程

fork()是所有複製
vfork()是共享內存
clone()是能夠將父進程資源有選擇地複製給子進程,而沒有複製的數據結構則經過指針的複製讓子進程共享,具體要複製哪些資源給子進程,由參數列表中的clone_flags來決定。另外,clone()返回的是子進程的pid。

下面有關linux查看系統負載的命令,說法錯誤的是?
正確答案: D   你的答案: D

uptime命令主要用於獲取主機運行時間和查詢linux系統負載等信息

vmstat命令能夠查看查看cpu負載

sar命令能夠查看網絡接口信息

free命令能夠查看磁盤負載狀況


D錯誤
free - Display amount of tree and used memory in the system
描述的是內存使用狀況,不是磁盤負載

Linux下經過哪一個命令怎麼查看中斷?
正確答案: B   你的答案: B

cat /proc/ioports

cat /proc/interrupts

cat /proc/kcore

cat /proc/kms


/proc/interrupts 顯示使用的中斷
 /proc/ioports 當前使用的I/O端口
 /proc/kcore 系統物理內存映像。與物理內存大小徹底同樣,但不實際佔用這麼多的內存。
 /proc/kmsg  內核輸出的消息,也被送到syslog

Linux下的進程有哪三種狀態?()
正確答案: B   你的答案: B

精確態,模糊態和隨機態

運行態,就緒態和等待態

準備態,執行態和退出態

手動態,自動態和自由態



    運行態 (Running) :              佔有CPU,並在CPU上運行
    就緒態 (Ready):                  已經具有運行條件,但因爲沒有空閒CPU,而暫時不能運行
    等待態 (Waiting/Blocked):   因等待某一事件而暫時不能運行:如等待讀盤結果

查看TCP鏈接的命令是什麼?正確答案: C   你的答案: Ctcpdumptopnetstatifconfigtcpdump是簡單可靠網絡監控的實用工具top 顯示活動進程方面的狀況netstat顯示網絡有關的信息,好比套接口使用狀況、路由、接口、協議(TCP等)等ifconfig是查看活動的網卡信息
相關文章
相關標籤/搜索