文章目錄
- 選擇題
- 多選題
- 判斷題
- 填空題
- 簡答題
- 編程題
選擇題
1:當打開vi文本編輯器編輯文件時,vi處于(A)模式
A: 命令模式
B: 編輯模式
C: 實模式
D: 虛模式
2:下列有關fork()函數返回值說法錯誤的是(D)
A: 函數城公安返回時,一次返回兩個值,錯誤時返回-1
B: 返回值等于0表示子進程
C: 返回值大于0表示父進程
D: 大于0的返回值為父進程的PID
3:下列進程間通信方式中能實現不同計算機間進程通信的方式是 (C)
A: 管道
B: 消息隊列
C: 套接字
D: 共享內存
4:當打開vi文本編輯器編輯文件時,vi處于( A )模式。
A命令模式 B編輯模式
C 實模式 D虛模式
5:下列有關fork( )函數返回值說法錯誤的是( D )。
A: 函數返回時,一次返回兩個值,錯誤時返回-1
B: 返回值等于0表示子進程
C: 返回值大于0表示父進程
D: 大于0的返回值為父進程的PID
6:下列進程間通信方式中能實現不同計算機間進程通信的方式是 (C) 。
A: 管道 B: 消息隊列
C: 套接字 D: 共享內存
7:Valgrind包括很多工具,__C__是valgrind應用最廣泛的工具,一個重量級的內存檢查器,能夠發現開發中絕大多數內存錯誤使用情況,比如:使用未初始化的內存,使用已經釋放了的內存,內存訪問越界等。
A. Callgrind B. Cachegrind
C.Memcheck D. Helgrind
8:dup()系統調用的功能是__B__
A. 調節讀寫的偏移量 B. 復制文件描述符
C. 關閉文件描述符 D. 根據文件的描述符來操作文件特
9:chmod()系統調用的作用是__B_
A.獲取文件屬性 B.修改文件權限
C. 獲取文件存取權限 D. 設置文件存取權限屏蔽字
10:下列__B__系統調用可以更改目錄?
A. mkdir() B. chdir()
C. opendir() D. readdir()
11:條件變量不能和互斥鎖結合使用。( B )
A: 是 B: 否
12 . ____D__是Linux的創始人。
A. Turbolinux B. AT&T Bell Laboratry
C. University of Helsinki D. Linus Torvalds
13.在Linux中,完整路徑中的目錄間分隔符是__A____。
A. / B. \ C. | D. -
14 . 在Linux中,如果當前目錄是/root/aaa/china,則下面____B__是china目錄的父目錄。
A. /root/ B. /root/aaa C. / D. /aaa
15 . 下面___A___可被用來關閉Linux系統。
A. init 0 B. init 1 C. init 5 D. init 6
16 . 在使用mkdir命令創建新的目錄時,在其父目錄不存在時先創建父目錄的選項是___D___。
A. -m B. –d C. -f D. –p
17 . 更改一個文件權限的命令是____C__。
A. change B. attrib C. chmod D. at
18 . Linux的每類用戶擁有三種權限,其中不包含的權限是___D___。
A. r B. w C. x D. m
19 .下面___D___表示不管cmd1是否執行成功,都要執行cmd2命令。
A. cmd1;cmd2 B. cmd1|cmd2 C. cmd1&&cmd2 D. cmd1||cmd2
20 . 使用cd ~ 命令后,我們會進入___A___目錄。
A. 用戶的主目錄 B. / C. ~ D. /tmp
21 . 用ls –l 命令列出下面的文件列表,__C____文件是目錄。
A. -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello
B. -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey
C. drwxr–r-- 1 hel users 1024 Sep 10 08:10 zhang
D. lrwxr–r-- 1 hel users 2024 Sep 12 08:12 cheng
22 . 在Linux系統中,硬件設備大部分是安裝在____D__目錄下的。
A. /mnt B. /swap C. /proc D. /dev
23 . 按____B__鍵能中止當前運行的命令。
A. Ctrl –D B. Ctrl –C C. Ctrl –B D. Ctrl -F
24 . 下面對Linux命令的描述__C____是正確的。
A. 不是大小寫敏感的 B. 都是大寫的
C. 大小寫敏感 D. 都是小寫
25 . 為了保證系統的安全,現在的linux系統一般將/etc/passwd密碼文件加密后,保存為____D__文件。
A. /etc/group B. /etc/netgroup C. /etc/libsafe.notify D. /etc/shadow
26 . 我們將邏輯分區建立在___D___分區上。
A. 從分區 B. 第二分區 C. 主分區 D. 擴展分區
27 . 我們一般使用____B__工具來對硬盤建立分區
A. mknod B. fdisk C. format D.mkfs
28 . 在vi中強制退出不保存的命令是____D__。
A. :q B. :w C. :wq D. :q!
29 . 在vi編輯器中的命令模式下,撤銷上一次對文本的操作,可使用__C____令。
A. 上箭頭 B. 下箭頭 C. u D. *
30 . 在Linux系統中的腳本文件一般以_B_____開頭。
A. $/bin/sh B. #!/bin/bash C. use /bin/sh D. shell=/bin/sh
31 . 在添加用戶的時候可以使用____A__參數來指定用戶的用戶主目錄。
A. -d B. -s C. -c D. –g
32 . 關于swap分區,下面__D____的敘述是正確的。
A. 用于存儲備份數據的分區
B. 用于存儲內存出錯信息的分區
C. 在Linux引導時用于裝載內核的分區
D. 作為虛擬內存的一個分區
33 . 在Linux中,系統管理員(root)狀態下的提示符是___B___。
A. $ B. # C. % D. >
34 . 下面___C___參數可以刪除一個用戶并同時刪除用戶的主目錄。
A. rmuser -r B. deluser -r C. userdel –r D. usermgr –r
35 . 下面____D__命令可被用來重啟Linux系統。
A. init 0 B. init 1 C. init 5 D. init 6
36 . 顯示一個文件最后幾行的命令是___B___。
A. tac B. tail C. rear D. last
37 . With a Linux 2.2 Kernel-based machine configuration of 133 MHZ, 32 MB RAM and a 1 GB HD, how much swap should be configured? D
A. 512MB B. 256MB C. 128MB D. 64MB
38 . Which command removes all subdirectories in /tmp, regardless of whether they are non-existent or in use? D
A. del /tmp/* B. rm -rf /tmp C. rm -Ra /tmp/* D. rm -rf /tmp/*
39 . Your unmask is set to 002. If you create a new file, what will the permission of the new file be? A
A. –rw-rw-r-- B. rwxrwx-w- C. ------w- D. rwxrwxr-x
40 . Linux is a(n) A_ operating system, meaning the source code is freely available.
A. Open sourced B. User licensed C. Closed source D. Open binary
41 . What command can be used to shutdown the computer? A
A. shutdown B. close C. init 3 D. delete
42 .將當前目錄下的壓縮歸檔文件myfile.tar.gz解壓至/tmp下,應該用( A )
A.tar –zxvf myfile.tar.gz –C /tmp
B.tar –zxvf myfile.tar.gz –c /tmp
C.tar –jxvf myfile.tar.gz –C /tmp
D.tar –zxvf myfile.tar.gz –d /tmp
43 .對名為passwd的文件用chmod 743對權限進行了修改,那么passwd文件現在的權限是( C )
A.rwxr-xr–
B.rw-r–r--
C.rwxr—wx
D.rwxr-x-wx
44 .如果想給腳本編輯器加入行號顯示應該編輯( D )文件
A./etc/.bashrc
B./etc/.vimrc
C./etc/bashrc
D./etc/vimrc
45 . linux操作系統關機可使用的命令是(C )
A.reboot
B.init 6
C.init 0
D.shutdown –r now
45 . 所有用戶登錄的缺省配置文件是( B )
A./etc/profile
B./etc/login.defs
C./etc/.login
D./etc/passwd
多選題
1.以下哪幾種是vim的工作模式( ABD ) (多選)
A.命令行模式
B.編輯模式
C.刪除模式
D.底行模式
2 . 關于硬鏈接的描述正確的 ( BE )
A.跨文件系統
B.不可以跨文件系統
C.為鏈接文件創建新的i節點
D.可以做目錄的連接
E.鏈接文件的i節點同被鏈接文件的i節點
3 .在shell編程中關于$2的描述正確的是 ( CE )
A.程序后攜帶了兩個位置參數
B.宏替換
C.程序后面攜帶的第二個位置參數
D.攜帶位置參數的個數
E.用$2引用第二個位置參數
4 .關于sed描述正確的是 ( ABD )
A.sed 是Linux系統中的流編輯器
B.sed 是UNIX系統中的流編輯器
C.sed 網絡文件系統的類型
D.利用管道對標準輸入/標準輸入的數據進行編輯和組合
E.sed是NFS的應用程序
5 . 關于限制磁盤限額,描述正確的是(ABD )
A.使用edquota可以監控系統所有用戶使用的磁盤空間,并在接近極限時提示用戶
B.用戶組的磁盤限額是用戶組內所有用戶予設磁盤空間總和
C.單個用戶的磁盤限額就是該用戶所在用戶組內所有磁盤限額的總合
D.在Linux系統下限制用戶使用的磁盤空間可以使用edquota
E.用戶組的磁盤限額就是該用戶組內擁有最大磁盤限額值的用戶的磁盤限額
判斷題
1 . 用戶zhangsan使用su命令變更到lisi用戶時,需要輸入lisi用戶的口令。( T )
2 . 為了能讓其它用戶使用cd命令進入該目錄,需要設置讀權限。( F )
3 . linux系統給每個進程分配唯一的進程ID,用戶在進程存在期間用進程ID標識一個進程。( T )
4 . 普通用戶也可以增加進程的優先級。( F )
5 ./分區越大約好,因為/越大,Linux啟動速度越快。( F )
6 . 環境變量不會因為shell的改變而丟失。( F )
7 . 如果使用ln命令將生成了一個指向文件file的硬鏈接file1,如果你將文件file刪除,還能夠訪問file1。( F )
8 . 某些變量在一開始執行腳本時就被設定且不再改變,它們被稱為本地變量。( T )
9 . 將字符串放在一對雙引號之間,則雙引號內的所有字符的特殊含義都被忽略。( F )
10 . 輸入重定向是指把命令的標準輸入重定向到指定的文件中。( T )
填空題
1:用GCC編譯過程可以被細分為四個階段:預處理、編譯、匯編和 連接
2:編譯有線程的文件要加 -lpthread 參數
3:父進程等待子進程的結束,可以使用的函數是 wait() 和 waitpid() 。
4:__ mkdir __命令用來創建目錄。
5:vim三種模式:分別是命令模式,輸入模式和底線命令模式。在命令模式下按下__:__就進入了底線命令模式。
6:用GCC編譯過程可以被細分為四個階段:預處理、編譯、匯編和 連接
7:編譯有線程的文件要加 -lpthread 參數。
8:父進程等待子進程的結束,可以使用的函數是 wait() 和 waitpid() 。
9:創建線程的函數是 pthread_create()
10:初始化互斥鎖的宏是 PTHREAD_MUTEX_INIT ;
初始化條件變量的宏是 PTHREAD_COND_INIT ;
初始化讀寫鎖的宏是 PTHREAD_RWLOCK_INITIALIZER 。
11.標準I/O提供了三種類型的緩沖,分別是全緩沖、__ 行緩沖 __和不帶緩沖。
12 . vi編輯器具有三種工作模式:命令模式、文本輸入模式 和末行模式。
13 . 唯一標識每一個用戶的是用戶______UID____ 。
14 . 某文件的權限為:lrw- r-- r-,用數值形式表示該權限,則該八進制數為:0644__,該文件屬性是____連接文件______。
15 . 安裝Linux系統對硬盤分區時,必須有兩種分區:__根分區(/) 、交換分區(swap)__。
16 . 將前一個命令的標準輸出作為后一個命令的標準輸入,稱之為____管道______。
17 . 為腳本程序file文件所有者增加執行權的命令及參數是_ chmod 100 file_____________。
18 . 在常用的shell預定義變量中,______$?_____是命令執行后返回的狀態。
19 . 顯示Linux系統中正在運行的全部進程,應使用的命令及參數是___ps –a______。
20 . 在Linux系統中,權限最高的是______root_____用戶。
21 . 在shell編程中, if的結束標志是_______fi____。
22 . “init”命令是所有進程的祖先,它的進程號始終為______1_____。
23 . 設當前目錄下有以下文件:
① a ② a.exe ③ b ④ b.txt ⑤ abc ⑥ abc.exe
⑦ c.txt ⑧ ba ⑨ ac ⑩ bc.txt ⑾ a.xy ⑿ca.yz
請使用通配符將下列信息表示出來。
A: ②,⑥,⑾ ______ a???*_____________
B: ④,⑦,⑩ ________*.txt___________
C: ⑾,⑿ _________*.[xy][yz]__________
D: ⑧,⑨ ________[ab][ac]___________
E: ②,④,⑥,⑦,⑩ ______*.???_____________
23.chown命令的作用是 改變文件或文件夾所屬用戶 。
24.安裝桌面linux最少需要兩個分區,分別是 SWAP、/ 。
25.用于復制文件的命令是 cp ,用于復制目錄的命令是 cp -r 。
26.swap分區如果分配過大會帶來 浪費硬盤空間、頻繁死機問題 。
27.使用rpm可以很容易對rpm形式的軟件包進行安裝升級和 查詢、卸載 及校驗等操作。
簡答題
1.請詳細說明什么是shell,以及它的作用。
shell就是命令解釋器,它提供了用戶與操作系統之間基于命令行的交互界面,(2分)用戶命令行輸入命令,由shell對它們進行解釋,并將其送往操作系統執行。(3分)
2.按下列要求請你寫出步驟完成題目(注意請把命令格式寫完整) (10分)
A.建立組hello
B.建立用戶Bill,該用戶屬于hello組
C.設置Bill密碼為123
D.建立一個新的組bye
E.把Bill改到新建的bye組中
- groupadd hello (1分)
- useradd -d /home/Bill –g hello -s /bin/bash Bill(1分)
- passwd Bill 輸入123回車 再次輸入123回車(1分)
- groupadd bye(1分)
- usermod -g bye Bill(1分)
3.請簡述進程與線程的區別。
1.進程有自己獨立的地址空間;而線程共享進程的地址空間;
2.一個程序至少有一個進程,一個進程至少有一個線程;
3.線程是處理器調度的基本單位,但進程不是;
4.二者均可并發執行
5.多線程比多進程成本低,但性能更低。
4 .現有一個文件夾book,需要你歸檔壓縮為book.tar.bz2的文件,請寫出壓縮及解壓的步驟。
1)tar -jcvf book.tar.bz2 book(3分)
2)tar -jxvf book.tar.bz2(2分)
5 .請你簡述常見的三種磁盤陣列的名稱,優點及為什么會具有此種優點。
Raid 0
又叫磁盤分條,需要大于等于2塊磁盤完成,速度最快,沒有容錯功能,因為數據是分成奇數條和偶數條分條同時在兩個硬盤中同時寫入,所以速度最快,磁盤空間利用率100%。(2分)
Raid 1 鏡像卷 ,兩塊硬盤實現,速度不快,有容錯功能,空間利用率50%。因為把相同的數據寫入了2遍所以有容錯功能。(2分)
Raid5 大于等于3塊硬盤實現,有容錯功能,速度較快。磁盤空間利用率(n-1)/n.因為三塊磁盤,其中2塊磁盤在做raid 0,剩下的一塊硬盤是校驗。(1分)
6 .請簡述主分區、擴展分區、邏輯分區的關系。 (注意語言準確性)
一塊硬盤中刨除主分區以外剩余所有的空間都是擴展分區,所有的邏輯分區之和組成擴展分區。(1分)
linux中1-4是預留給主分區和擴展分區的,主分區至少要有1個,之多可以有4個,擴展分區至多只能有1個或者沒有,但是主分區加上擴張分區數量不能超過4個。(2分)
擴展分區下必須再分邏輯分區,不然空間不能被格式化,邏輯分區的數量沒有限制。(2分)
編程題
1:編寫兩個線程,其中一個線程接收用戶輸入,一個線程輸出用戶輸入的數據,要求用線程同步方法進行處理,不能采用類似sleep(x)的等待語句,不能影響程序的執行效率
#include"stdio.h"
#include"pthread.h"
#include"semaphore.h" static char datbuf[105] ;
static int n;
sem_t sem1,sem2;void *do_input(void *pvoid)
{int i;sem_wait(&sem1); printf("please input data\n");scanf("%s",datbuf);sem_post(&sem2);pthread_exit(NULL);}void *do_show(void *pvoid)
{int i;sem_wait(&sem2);printf("output data:\n");printf("%s",datbuf);sem_post(&sem1);pthread_exit(NULL);
}int main()
{pthread_t tid1,tid2;int ret;ret = sem_init(&sem1,0,1);ret += sem_init(&sem2,0,0);if(ret != 0){printf("Any semaphore inittialization failed\n");return ret;}pthread_create(&tid1,NULL,&do_input,NULL);pthread_create(&tid2,NULL,&do_show,NULL);pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0;
}
2:請編寫一個簡單的基于TCP的服務器、客戶端模擬系統。該模擬系統中服務器端一直監聽本機的6666號端口,如果收到連接請求,將接收請求并接收客戶端發來的消息;客戶端與服務器端建立連接并發送一條消息。
在終端在tcp_server.c 編寫服務端代碼
在終端在tcp_client.c 編寫客戶端代碼
代碼如下:
tcp_server.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>void error_handling(char *message);int main(int argc, char *argv[])
{int serv_sock;int clnt_sock;struct sockaddr_in serv_addr;struct sockaddr_in clnt_addr;socklen_t clnt_addr_size;char message[]="Hello World!";if(argc!=2){printf("Usage : %s <port>\n", argv[0]);exit(1);}serv_sock=socket(PF_INET, SOCK_STREAM, 0);if(serv_sock == -1)error_handling("socket() error");memset(&serv_addr, 0, sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);serv_addr.sin_port=htons(atoi(argv[1]));if(bind(serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr))==-1)error_handling("bind() error"); if(listen(serv_sock, 5)==-1)error_handling("listen() error");clnt_addr_size=sizeof(clnt_addr); clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr,&clnt_addr_size);if(clnt_sock==-1)error_handling("accept() error"); write(clnt_sock, message, sizeof(message));close(clnt_sock);close(serv_sock);return 0;
}void error_handling(char *message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}
tcp_client.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>void error_handling(char *message);int main(int argc, char* argv[])
{int sock;struct sockaddr_in serv_addr;char message[30];int str_len=0;int idx=0, read_len=0;if(argc!=3){printf("Usage : %s <IP> <port>\n", argv[0]);exit(1);}sock=socket(PF_INET, SOCK_STREAM, 0);if(sock == -1)error_handling("socket() error");memset(&serv_addr, 0, sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr=inet_addr(argv[1]);serv_addr.sin_port=htons(atoi(argv[2]));if(connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1) error_handling("connect() error!");while(read_len=read(sock, &message[idx++], 1)){if(read_len==-1)error_handling("read() error!");str_len+=read_len;}printf("Message from server: %s \n", message);printf("Function read call count: %d \n", str_len);close(sock);return 0;
}void error_handling(char *message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}
設置服務端口號為6666
再打開一個終端作為客戶端接收信息
3. 編寫shell程序,
(1)使用for循環計算100以內所有奇數的和。
#! /bin/bash
#定義變量,并賦初值為0
sum=0; (2分)
#for循環開始,設置起始數值為1,結束數值為100,步長為2
for i in {1..100..2} (3分)
do (1分)#將數累加let "sum+=i" (1分)
done
echo "the sum is $sum" (1分)
(2)使用while循環計算100以內所有偶數的和。
#! /bin/bash#定義初始化變量SUM=0 (1分)i=0 (1分)# 開始while循環while [[ "$i" -le 100 ]] (2分) do (1分)SUM=$(( $SUM + i )) (1分)i=$((i+2)) (1分)doneecho $SUM
4.編寫一個shell程序,統計出linux系統內
(1)所有用戶使用的shell,及各種shell使用的次數,
(2)按照使用次數升序排一次。
(3)按照使用次數降序排一次。
cut -d’:’-f7 /etc/passwd |sort |uniq –c (8分) 統計出passwd中各種shell的使用次數
cut -d: -f7 /etc/passwd|sort|uniq -c|sort -n (6分) 統計出passwd中各種shell的使用次數,升序排序
cut -d: -f7 /etc/passwd|sort|uniq -c|sort -n|tac (6分) 統計出passwd中各種shell的使用次數,升序排序