2.linux刷題

2019年1月3日第1輪

  1. linux文件的權限 –rwxr-xr-x是什麼意思,怎樣變更文件夾以及下面所有文件的擁有者。
    解析:
    屬主有讀、寫、執行權限;而屬組用戶和其他用戶只有讀、執行權限;chown [-R] [用戶名稱] [文件或目錄]
    擴展:
    第一位是 - 代表是文件,第一位是d代表是目錄
    第2~10個字符當中的每3個爲一組,左邊三個字符表示所有者權限,中間3個字符表示與所有者同一組的用戶的權限,右邊3個字符是其他用戶的權限。這三個一組共9個字符,代表的意義如下:
    r(Read,讀取):對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽目錄的權限。代表數字爲4。
    w(Write,寫入):對文件而言,具有新增、修改文件內容的權限;對目錄來說,具有刪除、移動目錄內文件的權限。代表數字爲2。
    x(eXecute,執行):對文件而言,具有執行文件的權限;對目錄了來說該用戶具有進入目錄的權限。代表數字爲1。
    -:表示不具有該項權限。
    chown將指定文件的擁有者改爲指定的用戶或組,用戶可以是用戶名或者用戶ID;組可以是組名或者組ID;文件是以空格分開的要改變權限的文件列表,支持通配符。系統管理員經常使用chown命令,在將文件拷貝到另一個用戶的名錄下之後,讓用戶擁有使用該文件的權限。
    命令格式:chown [選項]… [所有者][:[組]] 文件…
    -R 處理指定目錄以及其子目錄下的所有文件
  2. linux下給文件start.sh設置權限爲自己可讀可修改可執行,組內用戶爲可讀可執行不可修改,其餘用戶沒有任何權限,那麼設置該文件權限的命令爲:chmod start.sh 750
    解析:
    linux中權限有九位二進制數表示XXX YYY ZZZ,前一個XXX表示owner的權限,YYY表示group的權限(也就是同組用戶的權限),ZZZ表示other的權限(非同組用戶的權限)。根據本題要求,XXX=111,YYY=101,ZZZ=000,所以是750
  3. linux系統中某文件的組外成員的權限爲只讀;所有者有全部權限;組內的權限爲讀與寫,則該文件的權限爲:764
    解析:
    文件/文件夾有三種權限,讀-寫-執行,對應於,rwx,爲了方便都會轉成二進制 0 和 1 。只讀爲100,所有權限爲111,讀寫爲110,轉換後爲4,7,6
  4. 如果你使用一個普通賬戶telnet遠程登錄到linux系統中,如何改變身份以root權限管理系統? su命令
    解析:
    su和su -是有區別的,su - 會切換環境變量,su只是切換用戶。
    su是在用戶間切換,可以是從普通用戶切換到root用戶,也可以是從root用戶切換到普通用戶。如果當前是root用戶,那麼切換成普通用戶test用以下命令:
    su - test
    如果要切換回root用戶,那麼用以下命令:
    su或su -
    用戶名root可以省略不寫。
    切換回root用戶時要輸入root密碼。一般直接輸入exit命令來切換回root用戶,這樣就不用輸入密碼。
  5. Linux crontab中* * * * * /usr/local/run.sh這句話5個*號分別代表什麼?
    解析:
    分鐘 小時 日 月 星期(分食日月粥)
    在這裏插入圖片描述
  6. 下面選項關於linux下查看cpu,內存,swap,硬盤信息的命令描述正確的是?
    cat /proc/cpuinfo 查看CPU相關參數的linux系統命令
    cat /proc/meminfo 查看linux系統內存信息的linux系統命令
    fdisk -l: 查看硬盤信息
    cat /proc/swaps :查看所有swap分區的信息
    du -h:查看當前目錄下所有目錄以及子目錄的大小
    hdparm命令可以查看硬盤信息
  7. 文件目錄data當前權限爲rwx — ---,只需要增加用戶組可讀權限,但不允許寫操作,具體方法爲:chmod+050data
    解析:
    別忘了,文件夾首先要可訪問纔行,因此不論幹什麼必須加上x權限!
  8. 不算 main 這個進程自身,創建了19個進程。
int main(int argc, char* argv[])
{
   fork();
   fork() && fork() || fork();
   fork();
}

解析:
fork()是一個分叉函數, 返回值: 若成功調用一次則返回兩個值,子進程返回0,父進程 返回子進程標記;否則,出錯返回-1
每一次fork()就翻倍;
在這裏插入圖片描述

  1. 進程間通訊方式有哪些?
    管道
    消息隊列
    共享內存
    文件和記錄鎖定
    解析:
    UNIX中有如下的通信方式:
  1. 文件和記錄鎖定。
    爲避免兩個進程間同時要求訪問同一共享資源而引起訪問和操作的混亂,在進程對共享資源進行訪問前必須對其進行鎖定,該進程訪問完後再釋放。這是UNIX爲共享資源提供的互斥性保障。
    2 )管道。
    管道一般用於兩個不同進程之間的通信。當一個進程創建一個管道,並調用fork創建自己的一個子進程後,父進程關閉讀管道端,子進程關閉寫管道端,這樣 提供了兩個進程之間數據流動的一種方式。
    3 ) FIFO 。
    FIFO是一種先進先出的隊列。它類似於一個管道,只允許數據的單向流動。每個FIFO都有一個名字,允許不相關的進程訪問同一個FIFO。因此也成爲命名管。
    4)消息隊列。
    UNIX下不同進程之間可實現共享資源的一種機制;UNIX允許不同進程將格式化的數據流以消息形式發送給任意進程。對消息隊列具有操作權限的進程都可以使用msget完成對消息隊列的操作控制。通過使用消息類型,進程可以按任何順序讀消息,或爲消息安排優先級順序。
    5 )信號燈。
    作爲進程間通訊的一種方法,它不是用於交換大批數據,而用於多進程之間的同步(協調對共享存儲段的存取)。
    6 )共享內存。
    通過信號燈實現存儲共享(類似“紅燈停、綠燈行”)
  1. linux系統中的/var/log/lastlog日誌記錄了所有用戶最後登錄的記錄,可以用lastlog命令查看。
    /var/run/utmp日誌記錄了正在登錄本系統中的用戶信息,可以用last -f命令查看
    解析:
    B. 執行last指令時,它會讀取位於/var/log/wtmp的文件,並把該給文件的內容記錄的登錄系統的用戶名單全部顯示出來。
    C. wtmp是二進制文件,他們不能被諸如tail命令剪貼或合併,需要使用who、w、users、last和ac來使用這兩個文件包含的信息。

2019年1月3日第2輪

  1. shell不僅僅是用戶命令解釋器,同時一種強大的編程語言,linux缺省的shell是:bash。
    解析:
    bash是Linux系統默認使用的shell,它由Brian Fox和Chet Ramey共同完成,是BourneAgainShell的縮寫,內部命令一共有40個(可使用help命令查看)。Linux使用它作爲默認的shell是因爲它有諸如以下的特色:
    可以使用類似DOS下面的doskey的功能,用方向鍵查閱和快速輸入並修改命令。
    自動通過查找匹配的方式給出以某字符串開頭的命令。
    包含了自身的幫助功能,你只要在提示符下面鍵入help就可以得到相關的幫助。
  2. 寫出完成以下功能的gdb命令。gdb查看線程信息:info thread
    擴展:
    backtrace bt 打印當前的函數調用棧的所有信息。
    info threads 顯示當前可調試的所有線程,每個線程會有一個GDB爲其分配的ID,後面操作線程的時候會用到這個ID。 前面有*的是當前調試的線程。
    set scheduler-locking 線程調試 顯示線程狀態,off 不鎖定任何線程
    info break 可列出所有斷點信息,info break 後也可設置要查看的break num
  3. linux下偵測主機到目的主機之前所經過的路由的命令:traceroute
    擴展:
    ping命令用來檢測兩部主機之間的信道是否暢通;
    route命令用來顯示目前本機路由表的內容,並對路由表作相應的修改;
    tranceroute命令用來探測路由的經過;
    ifconfig命令用來檢測和設置本機的網絡接口;
  4. 你嘗試登出時收到一個錯誤消息,顯示你還有任務未完成,你需要使用下面哪個命令:kill PID-of-the-process
    擴展:
    kill pid讓進程正常退出
    kill %job number 直接殺掉進程
  5. 什麼命令用來查看硬盤被佔用了多少空間和剩餘多少空間:df
    擴展:
    A du(disk usage) 命令功能說明:統計目錄(或文件)所佔磁盤空間的大小
    B df(disk file) 命令功能說明: 用於顯示文件系統的磁盤使用情況
    C free 命令功能說明: 可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩衝區
    D vmstat 命令功能說明: 命令報告關於內核線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息
  6. tar命令用於解壓的參數是:-x
    擴展:
    -c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。相當於打包。
    -x 從檔案文件中釋放文件。相當於拆包。
    -z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮或解壓? 一般格式爲xx.tar.gz或xx. tgz
    -j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮或解壓?一般格式爲xx.tar.bz2
    -v :壓縮的過程中顯示文件!這個常用
    -f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加其他參數!
    -p :使用原文件的原來屬性(屬性不會依據使用者而變)
    –exclude FILE:在壓縮的過程中,不要將 FILE 打包!
  7. 在Linux中,下列都是正確的:
    tar -czvf filename.tgz *可以壓縮部分文件
    httpd.conf是apache的主配置文件
    tar -xzvf filename.tgz解壓縮tar文件
    /etc/ld.so.conf 此文件記錄了編譯時使用的動態庫的路徑,也就是加載so庫的路徑。
  8. vi編輯器裏面如何刪除最後一行?G;dd
    解析:
    gg到頂部;G = shift + g到底部。dd刪除行。
  9. 在RHEL5系統中使用vi編輯文件時,要將某文本文件第1行到5行的內容複製到文件中的指定位置,以下( )操作能實現該功能。
    解析:
    將光標移到第1行,在vi命令模式下輸入5yy,然後將光標移到制定位置,按p鍵
    使用末行命令1,5y,然後將光標移到制定位置,按p鍵
    擴展:
    nyy:複製以下n行
    n,my:指定n到m行復制
    p:在光標下一行粘貼
    P(大寫):在光標上一行粘貼(插入)
  10. Redhat 9所支持的安裝方式有
    通過HTTP進行網絡安裝
    通過NFS進行網絡安裝
    從本地硬盤驅動器進行安裝
    解析:
    光盤安裝 (常規情況) 硬盤安裝 (無光驅情況)
    網絡安裝-NFS方式 (適合於批量安裝大量服務器,和kickstart自動安裝一起使用)
    網絡安裝-FTP方式 (適合於批量安裝大量服務器,和kickstart自動安裝一起使
    網絡安裝-HTTP方式 (適合於批量安裝大量服務器,和kickstart自動安裝一起使

2019年1月3日第3輪

  1. 增加一個用戶的命令是:useradd
  2. 在linux文件系統權限中(rwx),只讀權限對應的數值爲4,只寫權限對應的數值爲2,執行權限對應的數值爲1.
  3. linux中su命令可以將普通用戶轉換成超級用戶?
  4. int main()
    {
    char *p = “hello,world”;
    return 0;
    }
    p和"hello,world"存儲在內存哪個區域?棧,只讀存儲區。
    解析:
    根據C語言中的特性和定義p是一個局部變量,而C語言中局部變量存在於棧中,"hello wrold"是一個字符串字面常量,因此存儲於程序的只讀存儲區中,p在這裏其實只是指向了"hello wrold"在只讀存儲區中的地址而已。局部變量存放在棧中,堆中存放的是new和malloc開闢出的,而程序中定義的常量存放在只讀存儲區。
    擴展:
    (1)從靜態存儲區域分配:
    內存在程序編譯時就已經分配好,這塊內存在程序的整個運行期間都存在。速度快、不容易出錯,因爲有系統會善後。例如全局變量,static變量等。
    (2)在棧上分配:
    在執行函數時,函數內局部變量的存儲單元都在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,效率很高,但是分配的內存容量有限。
    (3)從堆上分配:
    即動態內存分配。程序在運行的時候用malloc或new申請任意大小的內存,程序員自己負責在何時用free或delete釋放內存。動態內存的生存期由程序員決定,使用非常靈活。如果在堆上分配了空間,就有責任回收它,否則運行的程序會出現內存泄漏,另外頻繁地分配和釋放不同大小的堆空間將會產生堆內碎塊。
    一個C、C++程序編譯時內存分爲5大存儲區:堆區、棧區、全局區、文字常量區、程序代碼區。
  5. 查找當前目錄一個月(30天)以前大於100M的日誌文件(.log)並刪除。
find  . -name "*.log" –mtime +30 –type f –size +100M |xargs rm –rf {} ;

解析:這個絕對學到了!!
find 查找
. 在當前目錄查找
-name 指定文件名
-mtime 指定修改時間(以天爲單位) +xx 修改時間大於xx天 -xx修改時間小於xx天
-type 應該是指定文件類型
-size 指定文件大小 +xx文件大小大於xx -xx文件大小小於xx
xargs 把前一命令輸入當作後一命令輸出,通常配合管道使用

  1. 下面對linux下mysqldump備份命令及參數描述正確的是:
mysqldump -h ip -uroot -p DBNAME >bck.sql

解析:
-h表示主機名或IP地址,所以BC錯
-P表示數據庫連接的TCP/IP端口號
-u表示用戶名而不是數據庫名,所以D錯
-p表示數據庫訪問密碼

  1. 下列不是Linux系統進程類型的是:就緒進程。
    解析: http://ixdba.blog.51cto.com/2895551/543737/
    按照進程的功能和運行的程序分類,進程可劃分爲兩大類:
    (1) 系統進程:可以執行內存資源分配和進程切換等管理工作;而且,該進程的運行不受用戶的干預,即使是root用戶也不能干預系統進程的運行。
    (2) 用戶進程:通過執行用戶程序、應用程序或內核之外的系統程序而產生的進程,此類進程可以在用戶的控制下運行或關閉。
    針對用戶進程,又可以分爲交互進程、批處理進程和守護進程三類。
    (1) 交互進程:由一個shell終端啓動的進程,在執行過程中,需要與用戶進行交互操作,可以運行於前臺,也可以運行在後臺。
    (2) 批處理進程:該進程是一個進程集合,負責按順序啓動其他的進程。
    (3) 守護進程:守護進程是一直運行的一種進程,經常在linux系統啓動時啓動,在系統關閉時終止。它們獨立於控制終端並且週期性的執行某種任務或等待處理某些發生的事件。例如httpd進程,一直處於運行狀態,等待用戶的訪問。還有經常用的crond進程,這個進程類似與windows的計劃任務,可以週期性的執行用戶設定的某些任務。

  2. 網絡管理員查看進程時,發現有三個掛起進程,現繼續運行作業號爲2的進程,下列方式正確的有:fg 2
    解析:
    exec 使用vfork函數時,通常需要exec配合使用
    fg(Foreground) 將進程搬到前臺運行的命令
    bg(Background) 將進程搬到後臺運行的命令
    jobs 查看當前有多少在後臺運行的命令

  3. 將文件file1複製爲file2可以用下面哪些命令?
    解析:
    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
    | :管道命令操作符,處理經由前面一個指令傳出的正確輸出信息,然後,傳遞給下一個命令,作爲標準的輸入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章