Linux常用命令与基本操作、填空题、简答题
文章目錄
- 基本知識點
- 基本操作
- 敘述什么是shell?
- 重啟虛擬機網絡
- 分區
- 查看當前進程
- 查看主機名
- 重啟
- 關機
- 查看IP地址
- 文件搜索
- 掛載
- 查看網絡配置
- linux系統中Vi的三種模式
- 磁盤分區
- 查看硬盤信息
- df,fdisk,lsblk區別
- 進程
- 用戶
- 用戶信息
- 查看用戶密碼信息
- 修改密碼
- 添加用戶
- 修改用戶帳號
- 組
- 添加組
- 刪除組
- 修改組
- 修改用戶的工作組
- 指定要管理的工作組
- 目錄和文件操作
- 文件
- 目錄文件
- 顯示目錄下的內容
- 讀寫權限
- 修改目錄的擁有者
- 修改文件的權限
- rwx權限詳解
- chmod改變權限
- 創建文件夾
- 創建文件
- 編輯文件
- 復制文件和目錄
- 刪除文件或目錄
- 刪除一個或多個空目錄
- 移動文件
- 查看文件夾和文件的內存占用情況
- 操行符
- 壓縮命令
- 項目部署常用命令
- 查看進程號
- 后臺運行jar包
- 查看nginx的安裝目錄
- 填空題
- 簡答題
- 1) 公司新來了一名員工,對員工進行以下操作
- 2) 如果一個文件的權限是-r-w-r-$,解釋清楚-r-w-r- $的每個字符的含義
- 3) 描述邏輯分區是什么?它是怎么來的?如果讓你分區,你如何操作?
- 4) shell腳本的定時性操作
- 5) 寫出提高linux系統安全性的方法 (答案有十二個,只要求寫十個)
- 6) 一個if判斷題,寫一個shell腳本
- 7) 什么是進程?進程資源由哪兩部分組成?
- 8) pid_t fork() 返回值的意義?
- 9) Linux環境中使用kill函數向進程或進程組發送信號
- 10) 共享主存和修改消息隊列狀態
- 11) 父進程調用wait() 可能出現的三種情況?
- 12) 在進程中,return和exit() 的區別?
- 13)什么是孤兒進程?誰負責回收孤兒進程的內核空間資源?
- 14) 僵尸進程是什么?如何消滅僵尸進程?
- 15) 簡述進程對可靠信號和不可靠信號的處理過程
- 16) 簡單介紹一下信號的定義及其分類
- 17) 簡單介紹一下匿名管道及其特點
- 18) 請解釋一下有名管道和匿名管道的區別?
- 19) 什么是線程?進程和線程的區別?
- 20) Please describe the difference of signal() and sigaction() in brief
- 21)在標準IO庫中,rewind函數作用?
- 22)C語言中沒有明確給定初值的全局變量和靜態變量存放在哪兒?
- 23)函數geteuid()用于得到進程的?
- 24)邏輯卷的創建
基本知識點
基本操作
敘述什么是shell?
Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。是一個命令解釋器,它可以用來啟動、掛起、停止、甚至編寫程序。重啟虛擬機網絡
sudo service networking restart分區
主分區,邏輯分區,擴展分區
查看當前進程
ps -aux查看主機名
hostname重啟
shutdown -r now reboot init 6 ctrlaltdel //強制或安全重新啟動服務器關機
shutdown -h now init 0 halt poweroff查看IP地址
#查看外網IP: curl ipinfo.io/ip #查看本機IP: ip addr 或 ifconfig文件搜索
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄 find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件掛載
掛載:linux系統中,若用戶需對某個硬盤設備或文件進行訪問,要將其掛載到一個目錄上。
掛載點命令
mount 進行添加掛載點
卸載掛載點
umount 文件位置
umount /media
查看網絡配置
查看網絡接口信息 ifconfig
測試網絡連接狀態 ping
查看網關地址和路由信息 route netsat
查看主機名稱信息 hostname nslookup
linux系統中Vi的三種模式
1.命令模式
2.文件編輯模式
3.底行模式
磁盤分區
fdisk -l 查看硬盤名稱 物理分區:儲存空間最小的儲存單元卷組:一個或多個物理卷可整合一個卷組
邏輯卷:一個卷組可以劃分出一個或多個邏輯卷,用于建立文件系統 Fstab文件用于管理文件系統信息
查看硬盤信息
# 安裝插件 yum install smartmontools# 查看 /dev/ 下 sda 盤的信息:smartctl --all /dev/sdadf,fdisk,lsblk區別
df:主要是檢查文件系統磁盤內存占用情況
fdisk:一般用來磁盤分區,也可以用來查看磁盤分區情況
lsblk命令用于列出所有可用塊設備的信息,同時能顯示它們之間的依賴關系。
進程
系統進程
用戶進程
守護進程
用戶
超級用戶
系統用戶
普通用戶
用戶信息
passwd
-d 用戶名 刪除用戶的密碼。則該用戶無需密碼即可登錄系統 -S 用戶名 顯示指定用戶賬號的狀態 -u 用戶名 解除指定用戶賬號 -l 用戶名 暫時鎖定指定的用戶賬號 Usedel [-r] 用戶名 刪除指定的用戶賬號 Su [-] [用戶名] 切換用戶身份 Id [用戶名] 查看用戶的UID和GID查看用戶密碼信息
cat /etc/shadow修改密碼
passwd 用戶名添加用戶
useradd(僅限超級管理用戶) -c 指定用戶的全稱修改用戶帳號
usermod可用來修改用戶帳號的各項設定
語法
參數說明:
-c<備注> 修改用戶帳號的備注文字。 -d登入目錄> 修改用戶登入時的目錄。 -e<有效期限> 修改帳號的有效期限。 -f<緩沖天數> 修改在密碼過期后多少天即關閉該帳號。 -g<群組> 修改用戶所屬的群組。 -G<群組> 修改用戶所屬的附加群組。 -l<帳號名稱> 修改用戶帳號名稱。 -L 鎖定用戶密碼,使密碼無效。 -s<shell> 修改用戶登入后所使用的shell。 -u<uid> 修改用戶ID。 -U 解除密碼鎖定。實例
更改登錄目錄
改變用戶的uid
usermod -u 777 root組
添加組
groupadd
指定群組名稱來建立新的群組賬號,需要時可以從系統中取得新的群組值。
此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
groupadd [選項] group
2、選項列表
3、文件
4、實例
創建組,指定組的id
刪除組
刪除組,如果租內有用戶,那么必須先刪除用戶。
此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語法
groupdel 組名 刪除指定的組名
2、選項列表
3、實例
修改組
Linux groupmod命令用于更改群組識別碼或名稱。
需要更改群組的識別碼或名稱時,可用groupmod指令來完成這項工作。
語法
groupmod [-g <群組識別碼> <-o>][-n <新群組名稱>][群組名稱]參數:
-g <群組識別碼> 設置欲使用的群組識別碼。
-o 重復使用群組識別碼。
-n <新群組名稱> 設置欲使用的群組名稱。
實例
修改組名
修改用戶的工作組
Chgrp
功能: 改變文件的擁有組
示例:
請將/home/catch .txt文件的所在組修改成 letter
chgrp letter /home/catch.txt請將 /home/* 目錄下所有的文件和目錄的所在組都修改成letter
chgrp -R letter /home/*指定要管理的工作組
gpasswd命令是Linux下工作組文件/etc/group和/etc/gshadow的管理工具,用于指定要管理的工作組。
選項詳解:
-a : 添加用戶到組-d : 從組刪除用戶-A:指定管理員-M:指定組成員和-A的用途差不多;-r:刪除密碼;-R:限制用戶登入組,只有組中的成員才可以用newgrp加入該組。實例
將userA添加到groupB用戶組里面:
注意:添加用戶到某一個組可以使用 usermod -G groupB userA 這個命令可以添加一個用戶到指定的組,但是以前添加的組就會清空掉,所以想要添加一個用戶到一個組,同時保留以前添加的組時,請使用gpasswd這個命令來添加操作用戶。
將userA設置為groupA的群組管理員:
gpasswd -A userA groupA目錄和文件操作
file: 查詢文件的類型
du:顯示目錄或文件的磁盤占用量(文件系統數據庫的情況)
wc:統計文件的行數、單詞數、字節數和字符數
tree:以樹狀圖逐級列出目錄的內容
cksum:顯示文件的CRC校驗值和字節統計
mk5sum:顯示或檢查MD5(128-bit)
sum:為文件輸出校驗及塊計數
dirname:輸出去除尾“/”字符部分的名稱,名稱不包含“/”則顯示“.”
basename:去除前導的目錄部分后顯示名稱,如果指定后綴的話會去掉后綴
In: 創建鏈接文件
stat:顯示文件或文件系統的狀態
文件
普通文件
目錄文件
設備文件
目錄文件
/bin 普通用戶使用的命令,二進制目錄,存放二進制可執行文件(ls,cat,mkdir等),常用命令一般都在這里。 /etc 目錄存放系統的大部分配置文件和子目錄。存放系統管理和配置文件 /usr 用于存放系統應用程序,比較重要的目錄/usr/local 本地系統管理員軟件安裝目錄(安裝系統級的應用)。這是最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。 /usr/x11r6 存放x window的目錄 /usr/bin 眾多的應用程序 /usr/sbin 超級用戶的一些管理程序 /usr/doc linux文檔 /usr/include linux下開發和編譯應用程序所需要的頭文件 /usr/lib 常用的動態鏈接庫和軟件包的配置文件 /usr/man 幫助文檔 /usr/src 源代碼,linux內核的源代碼就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的庫 /opt 額外安裝的可選應用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里。 /proc 虛擬文件系統目錄,是系統內存的映射??芍苯釉L問這個目錄來獲取系統信息。 /root 超級用戶(系統管理員)的主目錄(特權階級^o^) /temp 用于存放各種臨時文件,是公用的臨時文件存儲點。 /home 普通用戶主目錄,存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示 /lib 庫函數及內核函數, 存放跟文件系統中的程序運行所需要的共享庫及內核模塊。共享庫又叫動態鏈接共享庫,作用類似windows里的.dll文件,存放了根文件系統程序運行所需的共享文件。 /lost+found 默認空的,當系統不正常關機后,這里就成了一些無家可歸的文件的避難所 /sbin 超級用戶管理員使用的命令,存放二進制可執行文件,只有root才能訪問。這里存放的是系統管理員使用的系統級別的管理命令和程序。如ifconfig等。 /boot 超級用戶管理員使用的命令 /dev 用于存放設備文件, /misc 備用文件夾 /mnt 設備掛載點 ,系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統。 /var 用于存放運行時需要改變數據的文件,也是某些大文件的溢出區,比方說各種服務的日志文件(系統啟動日志等。)等。pwd 顯示當前用戶所處的工作目錄的絕對路徑
顯示目錄下的內容
ls --color=never 不是用顏色表示不同類型文件 ls -a 顯示所有文件 ls -l 以長格式顯示文件 ls -d 只顯示目錄 ls -i 查看inode節點 dirs //顯示目錄列表,在只需要顯示目錄的時候比較簡單實用讀寫權限
讀權限r(read):
對文件而言 是讀取文件的內容的權限,對目錄而言是列出目錄下所包含的內容的權限。
寫權限w:
對文件而言是修改文件內容的權限;對目錄而言是在目錄下創建及刪除文件的權限
執行權限 x:
對可執行文件而言 是允許執行改文件的權限,對目錄而言是進入目錄的權限。
(1)符號表示法
Ls -l 文件名 列出某個目錄下每個文件的權限
-rw 讀寫
–: 0
w: 2
x: 1
r: 4
第一個值是文件類型
后面每3個為一組,分別代表用戶的權限 組權限 通用權限
修改目錄的擁有者
Chown 文件擁有人[:文件擁有組] 文件
改變文件的擁有人,可一并修改文件的擁有組
實例:
修改文件所有者
遞歸改變文件所有者和所有組
chown -R tom:leader home/修改文件的權限
chmod是Linux/Unix中修改文件或者目錄權限的命令,通過修改權限可以讓指定的人對文件可讀、可寫、可運行,極大地保證了數據的安全性。
0-9位說明
第0位確定文件類型(說明:
-:普通文件
d:目錄
l : 連接文件,
c: 字符設備文件[鍵盤,鼠標]
b:塊設備文件[硬盤] )
第1-3位確定所有者(該文件的所有者)擁有該文件的權限。
R: 讀
w : 寫權限
x: 執行權限
第4-6位確定所屬組(同用戶組的)擁有該文件的權限
第7-9位確定其他用戶擁有該文件的權限
1: 如果是文件,表示硬鏈接的數目, 如果是目錄,則表示有多少個子目錄
1213: 表示文件大小,如果是目錄,則統一為 4096
rwx權限詳解
rwx作用到文件(重要)
r: 代表可讀(read): 可以讀取,查看
w:代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件.
x: 代表可執行(execute):可以被執行
rwx作用到目錄(重要)
r: 代表可讀(read): 可以讀取,ls查看目錄內容
w:代表可寫(write): 可以修改,目錄內創建+刪除+重命名目錄
x:代表可執行(execute):可以進入該目錄
chmod改變權限
通過chmod指令,可以修改文件或者目錄的權限
u: 文件擁有人
g: 文件擁有組
o: 其他人
a:所有人
一)+ 、-、= 變更權限
示例:
1.使myshare下的所有文件和子目錄都自動擁有工作組為bin
chmod g+s myshare ls -ld myshare/2.給catch文件 的所有者讀寫執行的權限,給所在組讀執行權限,給其它組讀執行權限。
chmod u=rwx, g=rx ,o=rx catch3.給catch文件的所有者除去執行的權限,增加組寫的權限
chmod u-x, g+w catch4.給catch文件的所有用戶添加讀的權限
chmod a+r catch二)第二種方式:通過數字變更權限
數字代表的權限:r=4 w=2 x=1 rwx=4+2+1=7
示例:
將 catch.txt 文件的權限修改成 rwxr-xr-x, 使用給數字的方式實現:
創建文件夾
mkdir myshare/testdir mkdir -p //會自動創建父文件夾 ls -l myshare mkdir -p 一次性創建多級目錄創建文件
touch a.txt提示: 如果文件名字已經存在了,不會報錯,也不會覆蓋
編輯文件
vim a.txt提示:
文件名字不存在,會自動創建
復制文件和目錄
cp 命令,主要用來復制文件和目錄,同時借助某些選項,還可以實現復制整個目錄,以及比對兩文件的新舊而予以升級等功能。
cp 命令的基本格式如下:cp [選項] 源文件 目標目錄/文件
選項:
-a:相當于 -d、-p、-r 選項的集合,這幾個選項我們一一介紹; -d:如果源文件為軟鏈接(對硬鏈接無效),則復制出的目標文件也為軟鏈接; -i:詢問,如果目標文件已經存在,則會詢問是否覆蓋; -l:把目標文件建立為源文件的硬鏈接文件,而不是復制源文件; -s:把目標文件建立為源文件的軟鏈接文件,而不是復制源文件; -p:復制后目標文件保留源文件的屬性(包括所有者、所屬組、權限和時間); -r:遞歸復制,用于復制目錄; -u:若目標文件比源文件有差異,則使用該選項可以更新目標文件,此選項可用于對文件的升級和備用。當源文件可以有多個,但這種情況下,目標文件必須是目錄才可以。
這里的軟鏈接,類似于 Windows 系統中的快捷方式,而硬鏈接則是透過文件系統的 inode 號產生一個新的文件名。無論是復制軟鏈接還是硬鏈接,都不是復制源文件。
cp 命令既可以復制文件,也可以復制目錄。
touch cangls #建立源文件 cp cangls /tmp/ #把源文件不改名復制到 /tmp/ 目錄下 cp cangls /tmp/bols #改名復制如果復制的目標位置已經存在同名的文件,則會提示是否覆蓋,因為 cp 命令默認執行的是“cp -i”的別名,例如:
cp cangls /tmp/ cp:是否覆蓋"/tmp/cangls"?y #目標位置有同名文件,所以會提示是否覆蓋復制目錄,其實復制目錄只需使用“-r”選項即可,例如:
cp -r /root/movie/ /tmp/刪除文件或目錄
rm是常用的命令,該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除。對于鏈接文件,只是刪除了鏈接,原有文件均保持不變。
rm是一個危險的命令,使用的時候要特別當心,尤其對于新手,否則整個系統就會毀在這個命令(比如在/(根目錄)下執行rm *-rf)。所以,我們在執行rm之前最好先確認一下在哪個目錄,到底要刪除什么東西,操作時保持高度清醒的頭腦。
在使用 rm 命令刪除文件或目錄時,系統不會產生任何提示信息。
1.命令的基本格式
rm[選項] 文件或目錄2.命令功能
刪除一個目錄中的一個或多個文件或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。
3.命令參數:
常用命令選項
rm 命令如果任何選項都不加,則默認執行的是"rm -i 文件名",也就是在刪除一個文件之前會先詢問是否刪除。
如果要刪除的目錄中有 1 萬個子目錄或子文件,那么普通的 rm 刪除最少需要確認 1 萬次。所以,在真正刪除文件的時候,我們會選擇強制刪除:
rm -rf /hdfs_demo #強制刪除,一了百了雖然 “-rf” 選項是用來刪除目錄的,但是刪除文件也不會報錯。所以,為了使用方便,一般不論是刪除文件還是刪除目錄,都會直接使用 “-rf” 選項。
4.實例
刪除文件file,系統會先詢問是否刪除
將 MapReduce子目錄及子目錄中所有檔案刪除
rm -r MapReduce刪除一個或多個空目錄
外置命令,rmdir 命令,只能刪除空目錄。
rmdir命令作用是刪除空的目錄,英文全稱:“remove directory”。
rmdir命令只能刪除空目錄。當要刪除非空目錄時,就要使用帶有“-R”選項的rm命令。
rmdir命令的“-p”參數可以遞歸刪除指定的多級目錄,但是要求每個目錄也必須是空目錄。
語法格式 :
rmdir [參數] [目錄名稱]常用參數:
刪除空目錄:
遞歸刪除指定的目錄樹
rmdir -p dir/dir_/dir_2顯示指令詳細執行過程
rmdir -v dir rmdir -p -v dir/dir_/dir_2顯示命令的版本信息
rmdir --version移動文件
mv命令:用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。
source表示源文件或目錄,target表示目標文件或目錄。如果將一個文件移到一個已經存在的目標文件中,則目標文件的內容將被覆蓋。
mv命令可以用來將源文件移至一個目標文件中,或將一組文件移至一個目標目錄中。源文件被移至目標文件有兩種不同的結果:
1.如果目標文件是到某一目錄文件的路徑,源文件會被移到此目錄下,且文件名不變。
2.如果目標文件不是目錄文件,則源文件名(只能有一個)會變為此目標文件名,并覆蓋己存在的同名文件。如果源文件和目標文件在同一個目錄下,mv的作用就是改文件名。當目標文件是目錄文件時,源文件或目錄參數可以有多個,則所有的源文件都會被移至目標文件中。所有移到該目錄下的文件都將保留以前的文件名。
注意事項:mv與cp的結果不同,mv好像文件“搬家”,文件個數并未增加。而cp對文件進行復制,文件個數增加了。
語法
mv(選項)(參數)選項
--backup=<備份模式>: 若需覆蓋文件,則覆蓋前先行備份;-b:當文件存在時,覆蓋前,為其創建一個備份;-f:若目標文件或目錄與現有的文件或目錄重復,則直接覆蓋現有的文件或目錄(強制覆蓋同名文件);-i:交互式操作,覆蓋前先行詢問用戶,如果源文件與目標文件或目標目錄中的文件同名,則詢問用戶是否覆蓋目標文件。用戶輸入”y”,表示將覆蓋目標文件;輸入”n”,表示取消對源文件的移動。這樣可以避免誤將文件覆蓋。--strip-trailing-slashes:刪除源文件中的斜杠“/”;-S<后綴>:為備份文件指定后綴,而不使用默認的后綴;--target-directory=<目錄>:指定源文件要移動到目標目錄;-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
實例:
實例一、移動文件或目錄
如果移動的目標位置已經存在同名的文件,則同樣會提示是否覆蓋,因為 mv 命令默認執行的也是 “mv -i” 的別名,例如:
touch cangls #重新建立文件mv cangls /tmp mv #是否覆蓋"tmp/cangls"?y#由于 /tmp 目錄下已經存在 cangls 文件,所以會提示是否覆蓋,需要手工輸入 y 覆蓋移動實例二、強制移動
如果目標目錄下已經存在同名文件,則會提示是否覆蓋,需要手工確認。這時如果移動的同名文件較多,則需要一個一個文件進行確認,很不方便。
如果我們確認需要覆蓋已經存在的同名文件,則可以使用 “-f” 選項進行強制移動,這就不再需要用戶手工確認了。例如:
touch cangls #重新建立文件mv -f cangls /tmp #就算 /tmp/ 目錄下已經存在同名的文件,由于"-f"選項的作用,所以會強制覆蓋實例三、不覆蓋移動
既然可以強制覆蓋移動,那也有可能需要不覆蓋的移動。如果需要移動幾百個同名文件,但是不想覆蓋,這時就需要 “-n” 選項的幫助了。例如:
實例四、改名
如果源文件和目標文件在同一目錄中,那就是改名。
目錄也可以按照同樣的方法改名。
實例五、顯示移動過程
如果我們想要知道在移動過程中到底有哪些文件進行了移動,則可以使用 “-v” 選項來查看詳細的移動信息。例如:
查看文件夾和文件的內存占用情況
du -a操行符
+ 增加權限- 刪除權限= 賦予給定權限壓縮命令
1、bzip方式、bzip2方式、zip方式
bzip方式 壓縮文件后綴是 .bz2bzip2 文件名 進行壓縮bzip2 -d 壓縮文件名 進行解壓bzip2 -9 文件名 進行高壓縮比的壓縮zip -r myfile.zip ./* 將當前目錄下的所有文件和文件夾全部壓縮成myfile.zip文件,-r表示遞歸壓縮子目錄下所有文件.2、gzip方式
壓縮文件后綴是 .gz
gzip 文件名 進行壓縮
gzip -d 壓縮文件名 進行解壓
gzip -9 文件名 進行高壓縮比的壓縮
3、unzip
unzip -o -d /home/sunny myfile.zip
把myfile.zip文件解壓到 /home/sunny/
-o:不提示的情況下覆蓋文件;
-d:-d /home/sunny 指明將文件解壓縮到/home/sunny目錄下;
4、tar(重點)
壓縮命令
解壓命令
tar -jxvf 壓縮文件名 tar -zxvf 壓縮文件名 tar –xvf file.tar //解壓 tar包tar -xzvf file.tar.gz //解壓tar.gz-c: 創建 .tar格式的包文件
-x: 解壓.tar格式的包文件
-v :輸出詳細信息
-f: 表示使用歸檔文件
-p:打包時保留原始文件及目錄的權限
-t:列表查看包內的文件
-z:調用gzip程序進行壓縮或解壓
-j:調用bzip2程序進行壓縮或解壓
項目部署常用命令
查看進程號
ps -ef | grep java 查看所有Java相關的進程
#殺進程:kill -9 進程號
#查看端口占用情況
lsof -i:端口號 用于查看某一端口的占用情況,比如查看8000端口使用情況,lsof -i:8000 netstat -ntlp //查看當前所有tcp端口#linux查看日志文件:tail -f test.log 查看實時日志
linux 如何顯示一個文件的某幾行(中間幾行)
從第3000行開始,顯示1000行。即顯示3000~3999行 cat filename | tail -n +3000 | head -n 1000
顯示1000行到3000行 cat filename| head -n 3000 | tail -n +1000
tac (反向列示)
tac 是將 cat 反寫過來,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行連續顯示在螢幕上,而 tac 則是由最后一行到第一行反向在螢幕上顯示出來
后臺運行jar包
方式一:
$ nohup java -jar test.jar &方法二:
$ nohup java -jar test.jar >temp.txt &//這種方法會把日志文件輸入到你指定的文件中,沒有則會自動創建jobs命令://列出所有后臺執行的作業,并且每個作業前面都有個編號
查看nginx的安裝目錄
1:查看端口占用,和進程號:netstat -ntlp
2:根據進程號查看安裝目錄:ll /proc/進程號/exe
查看nginx 配置文件的路徑:
進入nginx安裝目錄下的sbin目錄(上面的步驟)輸入:./nginx -t
填空題
1.linux中把分區和目錄對應的過程叫做 掛載 。
2.信號是在軟件層次上對中斷 機制的一種模擬, 是一種異步通信方式。
3.用GCC編譯過程可以被細分為四個階段:預處理,編譯,匯編,鏈接 。
4.編譯有線程的文件要加 -lpthread 參數。
5.父進程等待子進程的結束,可以使用的函數是 wait() 和 waitpid() 。
6.linux主要有兩個信號安裝函數,分別是什么。
Signal(),sigaction()
7.Linux操作系統內核由 C語言 編寫完成。
8.使用gdb調試程序時,next和step命令的作用?
Next:單步跳過命令,一次跳過一行(跳過一行代碼,不可跳過函數)
Shop:單步跳過命令,跳過一行代碼,跳過函數調用
9.目錄/BOOT 下存放linux操作系統啟動時所要用到的程序
10.Linux 系統的設備文件分為三類?
字符設備文件,塊設備文件,網絡設備文件
11.Linux 中采用“一對一”的線程機制,也就是一個用戶線程對應一個 內核線程 。
12.vim三種模式:在命令模式下按下 Esc 就進入了底線命令模式。
13.標準I/O提供了三種類型的緩沖,分別是?
全緩沖,行緩沖,不緩沖
14.linux文件系統由四部分組成, 超級塊 用于存放文件的控制信息。
15.一個完整的信號生命周期包含4個重要的事件,這4個重要事件分別是?
信號誕生,信號注冊,信號注銷,信號處理執行完畢
16.互斥鎖只有兩種狀態,即?
上鎖,解鎖
17.線程本身調用 pthread_exit() 函數可以退出線程。
18.向消息隊列發送消息的函數是 msgsnd() 。
19. Fstat() 系統調用可以根據文件描述符來操作文件特性。
Valgrind包括很多工具, Memcheck 是valgrind應用最廣泛的工具,一個重量級的內存檢查器,能夠發現開發中絕大多數內存錯誤使用情況, Cachegrind 是主要用來檢查程序中緩存使用出現的問題。
Memcheck: 這是valgrind應用最廣泛的工具,一個重量級的內存檢查器,能夠發現開發中絕大多數內存錯誤使用情況,比如:使用未初始化的內存,使用已經釋放了的內存,內存訪問越界等。這也是本文將重點介紹的部分。
Callgrind: 它主要用來檢查程序中函數調用過程中出現的問題。
Cachegrind。它主要用來檢查程序中緩存使用出現的問題。
Helgrind: 它主要用來檢查多線程程序中出現的競爭問題。 Massif。它主要用來檢查程序中堆棧使用中出現的問題。
Extension: 可以利用core提供的功能,自己編寫特定的內存調試工具。
20.信號發送函數中, alarm() 用于設置定時器,當計時時間到達時,向進程發送SIGALRM信號。
21.當一個線程的屬性設置為 detach ,該線程結束時立即釋放它所占有的系統資源。
1.以下哪種方式屬于異常終止一個進程(D )
A從main函數返回。
B調用exit。
C最后一個線程從其啟動例程返回。
D接到一個信號并終止。(軟中斷)
2.下列命令哪個是創建線程私有數據命令(A)
A pthread_key_create() B pthread_setspecific()
C pthread_getspecific() D pthread_key_delete();
3.下面哪種通信方式適用于不同機器之間的進程通信。(D )
A.消息隊列 B.共享內存 C.信號量 D.套接字
4.創建或打開消息隊列的函數為(A )
A.msgget() B.msgsnd() C.msgrcv() D. msgctl()
5.linux中通過調用waitpid()函數得到進程的退出信息,該函數原型為
Pit_p waitpid(pid_t pid,int * statloc,int options)
pid_t waitpid(pit_t pid, int *statloc, int options);當第一個參數pid取值為-1時,表示(A)
A等待任一子進程退出,相當于 wait()。
B等待進程組ID與調用進程組ID相同的任一子進程。==0
C只等待進程ID等于PID的子進程。>0
D等待指定進程組中的進程,該進程組id等于 pid的絕對值。<-1
簡答題
1) 公司新來了一名員工,對員工進行以下操作
(1)添加員工
useradd 用戶名(2)更改密碼
passwd 用戶名(3)更改用戶的目錄
usermod -d/目錄名(4)鎖定用戶賬號
passwd –l 用戶名2) 如果一個文件的權限是-r-w-r-$,解釋清楚-r-w-r- $的每個字符的含義
(1)讀權限r(read): 對文件而言 是讀取文件的內容的權限,對目錄而言是列出目錄下所包含的內容的權限。
(2)寫權限w:
對文件而言是修改文件內容的權限;對目錄而言是在目錄下創建及刪除文件的權限
(3)執行權限 x: 對可執行文件而言
是允許執行改文件的權限,對目錄而言是進入目錄的權限。
(4)$ //
在bash里符號表示當前用戶為普通用戶;在bash腳本里。符號表示當前用戶為普通用戶;在bash腳本里。符號表示當前用戶為普通用戶;在bash腳本里。開頭表示變量
3) 描述邏輯分區是什么?它是怎么來的?如果讓你分區,你如何操作?
邏輯分區是硬盤上一塊連續的區域,不同之處在于,每個主分區只能分成一個驅動器,每個主分區都有各自獨立的引導塊,可以用fdisk設定為啟動區。 linux中主分區至少要有1個,最多可以有4個,擴展分區至多只能有1個或者沒有,但是主分區加上擴張分區數量不能超過4個。擴展分區下必須再分邏輯分區,不然空間不能被格式化,邏輯分區的數量沒有限制。4) shell腳本的定時性操作
1.安裝crontab
2.開啟crontab服務
3.3.設置需要執行的腳本
用戶所建立的crontab文件中,每一行都代表一項任務,每行的每個字段代表一項設置,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,格式如下:
minute hour day month week command
其中:
minute: 表示分鐘,可以是從0到59之間的任何整數。 hour:表示小時,可以是從0到23之間的任何整數。 day:表示日期,可以是從1到31之間的任何整數。 month:表示月份,可以是從1到12之間的任何整數。 week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。5) 寫出提高linux系統安全性的方法 (答案有十二個,只要求寫十個)
1.開防火墻
2.分區
3.不使用默認路由(這三個先寫上)
4.不要以root身份登錄
5.限制超級用戶的權利
6.使用基于密鑰的認證
7.僅監聽特定的ip
8.禁止使用空密碼
9.做好日志,經常分析
10.禁止SSH遠程
11.Linux內核參數優化
12.調整文件描述符數量
6) 一個if判斷題,寫一個shell腳本
1.判斷文件是否存在
if[-f ”文件名”]; then echo “文件存在” else echo “文件不存在” fi2.能不能讀取內容
if[-r “文件名”] ;then echo “可以讀取文件內容”; else echo “不可以~”; fi3.要求輸入輸出,類似輸入一個成績數字,判斷是否及格。
# !/bin/bash echo "請輸入一個分數:" read aif [ $a -ge 90 ] #大于 -gt (greater than) then #小于 -lt (less than) echo 'A' #大于或等于 -ge (greater than or equal) elif [ $a -ge 80 ] #小于或等于 -le (less than or equal) then #不相等 -ne (not equal)echo 'B'elif [ $a -ge 70 ]then echo 'C'elif [ $a -ge 60 ]then echo 'D'elseecho 'E'7) 什么是進程?進程資源由哪兩部分組成?
進程是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎
進程資源包括內核空間進程資源和用戶空間進程資源
8) pid_t fork() 返回值的意義?
創建失敗時返回負數;創建成功時返回兩個值:父進程的fork返回一個正數表示子進 程的進程ID,子進程的fork返回0
9) Linux環境中使用kill函數向進程或進程組發送信號
Linux環境中使用kill函數向進程或進程組發送信號。Kill函數原型為
int kill(pid_t pid, int signo);當第一個參數pid>0時,表示( A )
A發送信號給進程ID為pid的進程;
B發送信號給進程組ID和該進程相同的進程;
C發送信號給進程組內進程ID為pid的絕對值的進程;
D發送信號給系統的所有進程;
10) 共享主存和修改消息隊列狀態
共享主存基本操作(A )將共享主存區映射到進程虛擬地址空間。
A shmat() B shmdt()共享內存 C shmctl()控制對共享內存的使用 D shmget() 創建共享內存修改消息隊列狀態信息的命令是(B)
A msgsnd()發送信息 B msgctl() 控制 C msgrcv() 獲取信息 D msgget() 創建11) 父進程調用wait() 可能出現的三種情況?
1.如果其所有子進程都還在運行,則阻塞;
2.如果一個子進程已經終止,正等待父進程獲取其終止狀態,則取得該子進程的終止狀態立即返回;
3.如果它沒有任何子進程,則立即出錯返回;
12) 在進程中,return和exit() 的區別?
return是語言級別的,它表示了調用堆棧的返回;而exit是系統調用級別的,它表示一個進程的結束。
在main函數里,return(0)和exit(0)是一樣的,子函數用return返回,而子進程用exit退出,調用exit時要調用一段終止處理程序,然后關閉所有I/O流
1.return 是C語言的關鍵字,exit是POSIX API 函數
2.在main函數中,執行return和exit會產生相同效果。
3.在子函數中,執行return僅僅從子函數中返回,而調用exit函數將會直接退出當前進程
13)什么是孤兒進程?誰負責回收孤兒進程的內核空間資源?
孤兒進程:因父親進程先退出而導致一個子進程被init進程收養的進程,即孤兒進程的父親更改為init進程,該進程在孤兒進程退出后回收它的內核空間資源。
14) 僵尸進程是什么?如何消滅僵尸進程?
僵尸進程:進程已經退出,但它的父親進程還沒有回收內核資源的進程,即該進程在內核空間的PCB沒有釋放。
利用kill函數殺死父進程,僵尸函數會被init進程收養
15) 簡述進程對可靠信號和不可靠信號的處理過程
如果進程在屏蔽某個信號的時間內,其他進程多次向其發送同一個信號,不可靠信號只有一次未決記錄,當進程解除屏蔽后,該信號只會被捕捉一次;而可靠信號操作系統會 記錄所有的發送,當進程解除屏蔽后,操作系統會捕捉對等次數。
16) 簡單介紹一下信號的定義及其分類
信號是表示消息的物理量,是運載消息的工具
信號是軟件中斷,是在軟件層次上對中斷機制的一種模擬,在原理上,一個進程收到一個信號與處理器收到一個中斷請求可以說是一樣的 分類:確定信號和隨機信號;連續信號和離散信號;周期信號和非周期信號;能量信號與功率信號;因果信號與反因果信號;實信號與復信號17) 簡單介紹一下匿名管道及其特點
匿名管道:用于連接一個讀進程和一個寫進程,以實現它們
之間通信的共享文件,又稱pipe文件,是一個只存在于內存的特殊文件。
匿名管道用于進程之間通信,且僅限于本地父子進程之間通信,結構簡單。
1.只提供單向通信,也就是說,兩個進程都能訪問這個文件,假設進程1往文件內寫東 西,那么進程2 就只能讀取文件的內容。 2.只能用于具有血緣關系的進程間通信,通常用于父子進程建通信 3.管道是基于字節流來通信的 4.依賴于文件系統,它的生命周期隨進程的結束結束(隨進程) 5.其本身自帶同步互斥效果18) 請解釋一下有名管道和匿名管道的區別?
匿名管道是由pipe函數創建 并打開的
命名管道是由mkfifo函數創建 的 ,打開用open
命名管道和匿名管道唯一的區別就是在創建的打開,一旦這些工作完成后,它們有相同的意義。
FIFO索引節點出現在系統目錄數上而不是pipefs特殊文件系統中
FIFO是一種雙向通信管道,可以以讀/寫模式打開一個FIFO
命名管道和匿名管道唯一的區別就是在創建的打開,一旦這些工作完成后,它們有相同的意義。
19) 什么是線程?進程和線程的區別?
線程是操作系統能夠進行運算調度的最小單位。
區別:
進程是運行中的程序,線程是進程的內部的一個執行序列
進程是資源分配的單元,線程是執行行單元
程間切換代價大,線程間切換代價小
進程擁有資源多,線程擁有資源少使用靈活
多個線程共享進程的資源
20) Please describe the difference of signal() and sigaction() in brief
(1) signal在調用handler之前先把信號的handler指針恢復;sigaction調用之后不會恢復handler指針,直到再次調用sigaction修改handler指針。
這樣,signal就會丟失信號,而且不能處理重復的信號,而sigaction就可以。
因為signal在得到信號和調用handler之間有個時間把handler恢復了,這樣再次接收到此信號就會執行默認的handler。
signal在調用過程不支持信號block;sigaction調用后在handler調用之前會把屏蔽信號加入信號中,handler調用后會自動恢復信號到原先的值。
(2)signal處理過程中就不能提供阻塞某些信號的功能,sigaction就可以阻指定的信號和本身處理的信號,直到handler處理結束。這樣就可以阻塞本身處理的信號,到handler結束就可以再次接受重復的信號。
不同點
signal()
安裝的信號不能向信號處理函數傳遞信息
sigaction()
可設置進程的信號掩碼,返回設置之前的sigaction結構
安裝的信號可以向信號處理函數傳遞信息
相同點
都可以為指定的信號設置信號處理函數
共用同一個內核函數do_sigaction()
21)在標準IO庫中,rewind函數作用?
將文件內部的位置指針指向一個流的開頭
22)C語言中沒有明確給定初值的全局變量和靜態變量存放在哪兒?
沒有初始化的全局變量,bss(未初始化代碼段),初始化的全局變量和靜態變量放在data(初始化代碼段)
23)函數geteuid()用于得到進程的?
得到有效用戶的id
24)邏輯卷的創建
1.劃分LINUX分區
2.創建PV(物理卷)
3.創建VG(卷組)
4.創建LV(邏輯卷)
5.格式化LV
6.掛載
總結
以上是生活随笔為你收集整理的Linux常用命令与基本操作、填空题、简答题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是债券逆回购 主要存在5大优势
- 下一篇: 撞人了保险公司全赔吗