互聯網Java面試-Linux篇

1、 查找某個文件夾下的以.jsp結尾的文件:

find 文件夾  -name  "*.jsp"

2、 查找某個文件夾下的以.jsp結尾的文件數量:

find 文件夾  -name  "*.jsp"|wc -l

3、系統內進程信息

ps -ef

4、列出系統內進程信息,並grep出自己感興趣的進程

ps -ef|grep intresting

第一列PID代表進程號,PPID(parent process ID)代表父進程號。
在這裏插入圖片描述
5、跟蹤進程內部的系統調用和信號(排查進程假死問題的時候很有用)

未啓動的進程:strace 啓動一個進程
已啓動的進程:strace -p pid

6、打印出運行中程序的堆棧信息

pstack pid

在這裏插入圖片描述
7、按樹形結構打印運行中進程結構信息

pstree -p pid

在這裏插入圖片描述
8、gdb調試C/C++程序

要用gdb調試C/C++程序首先編譯的時候要加-g選項,

g++ -g test.cpp -o test

這樣生成的程序就可以用gdb來調試啦。

直接用gdb啓動程序調試:gdb prog
用gdb附着到一個已經啓動的進程上調試:gdb prog pid
程序崩潰之後參數corefile也可以用gdb調試:gdb prog corefile

有一點需要注意,有些Linux系統默認程序崩潰不生成corefile,這時你需要ulimit -c unlimited這樣就能生成corefile了。

進入調試界面後可輸入如下命令進行調試
在這裏插入圖片描述
9、瞭解進程的運行時信息和統計信息

每一個進程在/proc下都對應一個以進程號爲目錄名的目錄/proc/pid,它們是讀取進程信息的接口,我們可以進到這個文件裏面,瞭解進程的運行時信息和統計信息。

proc/pid/environ:包含了進程的可用環境變量的列表 
/proc/pid/fd/:這個目錄包含了進程打開的每一個文件的鏈接。從這裏可以查看進程打開的文件描述符信息,包括標準輸入、輸出、錯誤流,進程打開的socket連接文件描述符也能看到。
/proc/pid/stat:包含了進程的所有狀態信息,進程號、父進程號、 線程組號、 該任務在用戶態運行的時間 、 該任務在用內核態運行的時間、 虛擬地址空間的代碼段、 阻塞信號的位圖等等信息應有盡有。

10、進程如果遇到了什麼問題(崩潰coredump、假死、阻塞、系統調用超時、文件描述符異常),處理步驟如下:

  • ps查看進程id,看看進程還在不在以及進程狀態
  • 如果進程還在的話,strace、psstack看下進程當前信息,是不是卡死在哪個位置,對比各棧最後調用信息找到異常點
  • 如果進程不再了,如果有corefile文件,直接上gdb查看corefile信息
  • 其他疑難雜症懷疑進程狀態信息的時候,看看/proc/pid下面的進程狀態信息,可能會給你啓發

11、目錄

當前目錄:./ 
上層目錄:../
主目錄: ~/
切換目錄: cd

12、怎麼查看當前進程?怎麼執行退出?怎麼查看當前路徑?

查看當前進程: ps
執行退出: exit
查看當前路徑: pwd

13、Ls 命令執行什麼功能? 可以帶哪些參數,有什麼區別?

ls:列出指定目錄中的目錄,以及文件
ls -a:所有文件 
ls -l:詳細信息,包括大小字節數,可讀可寫可執行的權限等

14、創建

創建目錄: mkdir
創建文件:touch 或 vi 
複製文件: cp 

15、文件權限修改:

chmod
chmod u+x file:給 file 的屬主增加執行權限 
chmod 751 file:給 file 的屬主分配讀、寫、執行(7)的權限;給 file 的所在組分配讀、執行(5)的權限;給其他用戶分配執行(1)的權限
chmod u=rwx,g=rx,o=x file:給 file 的屬主分配讀、寫、執行(7)的權限;給 file 的所在組分配讀、執行(5)的權限;給其他用戶分配執行(1)的權限
chmod =r file 爲所有用戶分配讀權限
chmod 444 file 爲所有用戶分配讀權限
chmod a-wx,a+r file 爲所有用戶分配讀權限
$ chmod -R u+r directory 遞歸地給 directory 目錄下所有文件和子目錄的屬主分配讀的權限

16、查看文件內容有哪些命令可以使用?

vi 文件名 :編輯方式查看,可修改
cat 文件名 :顯示全部文件內容
more 文件名 :分頁顯示文件內容
less 文件名 :與 more 相似,更好的是可以往前翻頁
tail 文件名 :僅查看尾部,還可以指定行數
head 文件名 :僅查看頭部,還可以指定行數

17、移動文件、改名用哪個命令?

mv 

18、複製

複製文件:cp 
連同文件夾和文件夾下的文件一塊複製:cp -r

19、刪除

刪除文件:rm 
連目錄及目錄下文件一塊刪除:rm -r 
刪除空文件夾:rmdir

20、Linux 下命令有哪幾種可使用的通配符?

“?”可替代單個字符。
“*”可替代任意多個字符。
“[charset]”可替代 charset 集中的任何單個字符,如[a-z][abABC]

21、用什麼命令對一個文件的內容進行統計?

統計字節數:wc -c
統計行數:wc -l
統計字數:wc -w 

22、Grep 命令

grep -i 字符串 文件:忽略大小寫
grep -v 字符串 文件:查找不含字符串的行

23、Linux 中進程有哪幾種狀態?在 ps 顯示出來的信息中,分別用什麼符號表示的?

D 不可中斷 Uninterruptible(usually IO) R 正在運行,或在隊列中的進程
S 處於休眠狀態
T 停止或被追蹤
Z 殭屍進程
W 進入內存交換(從內核 2.6 開始無效)
X 死掉的進程

24、怎麼使一個命令在後臺運行?

使用 & 在命令結尾

25、哪個命令專門用來查看後臺任務?

job -l

26、後臺任務調到前臺執行?停下的前臺任務在後臺執行?

fg:把後臺任務調到前臺執行
bg:把停下的前臺任務在後臺執行起來

27、終止進程用什麼命令? 帶什麼參數?
kill可將指定的信息送至程序。預設的信息爲SIGTERM(15),可將指定程序終止。若仍無法終止該程序,可使用SIGKILL(9)信息嘗試強制刪除程序。

-s:指定發送的信號。
kill [-s <信息名稱或編號>] [程序]
如:kill-9 pid

28、怎麼查看系統支持的所有信號?

kill -l

29、搜索文件用什麼命令? 格式是怎麼樣的?

find / -name "string*"搜索根目錄(含子目錄)中,所有文件名以string開頭的文件。
locate /etc/sh:搜索etc目錄下所有以sh開頭的文件。
whereis -b bash:顯示bash 命令的二進制程序 
whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

30、使用什麼命令查看磁盤使用空間? 空閒空間呢?

df -hl

文件系統 容量 已用 可用 已用% 掛載點
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot

31、使用什麼命令查看網絡是否連通?

netstat

32、使用什麼命令查看 ip 地址及接口信息?

ifconfig

33、查看各類環境變量用什麼命令?

env:查看所有 
env $HOME:查看home: 

34、du 和 df 的定義,以及區別

df 命令獲得真正的文件系統數據,而 du 命令只查看文件系統的部分情況。

35、打印出當前的目錄棧?

 dirs

36、你的系統目前有許多正在運行的任務,在不重啓機器的條件下,有什麼方法可以把所有正在運行的進程移除呢?

disown -r 

37、數據字典屬於哪一個用戶的?

數據字典是屬於’SYS’用戶的,用戶‘SYS’ 和 ’SYSEM’是由系統默認自動創建的

38、怎樣查看一個 linux 命令的概要與用法?

whatis 

39、使用哪一個命令可以查看自己文件系統的磁盤空間配額呢?

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