面試准備——(二)專業知識(1)Linux


面試的問題: 

騰訊:

1. 查看進程的命令

美團:

1. 常用的命令——美團/滴滴

2. 如何在性能測試的時候查看進程

3. kill -9/-15區別

滴滴:

1.如何找到一個特定文件

2. 如何替換一個文件中的字符串

sed  's/原字符串/替換字符串/' 目錄名
例如;sed  'aaa/bbb'  test.txt // 將test.txt中'aaa'替換成'bbb'

2. 你有用Linux安裝軟件嗎

3. 如何找到一個指定的進程

 

1.文件系統結構

ls /  查看文件系統目錄

 

 2. 文件系統命令:

ls   顯示文件或目錄
    -l:列出文件的詳細信息 stat更詳盡 -a:列出當前目錄下的所有文件及目錄,包括隱藏(all)

mkdir 創建目錄
    -p:如果沒有父目錄,則創建(parent)

tree 樹形結構顯示目錄,需要安裝tree包

pwd 顯示當前目錄

rmdir 刪除目錄(只能為空時)——>目錄不為空:rm -r

rm     刪除文件
    -r:遞歸刪除,可刪除子目錄及文件
    -f:強制刪除(force)

cd  切換目錄
    -:切換前一個工作目錄
    ..:切換到上一級目錄

touch 創建一個空文件 ——>echo:創建有內容的文件

echo1. 將字符串輸入到控制台:echo 'sbw'
    2. 創建帶有內容的文件echo 'sbw' > test.txt
    3. 在文件中追加內容:echo 'add' >>test.txt
    4. 顯示所有帶有目標格式的文件:echo *.txt(如果不存在這種格式的文件,則當作字符串將 *.txt輸出到控制台) == ls *.txt
    5. 輸出變量的值:echo $PATH

cat 查看文件內容
     -n:輸出行號+內容   

nl 顯示行號的查看文件內容
cp 拷貝文件: cp source.txt ''../target.txt' mv 移動文件或者重命名 ln 為某一個文件在另一個文件夾中創建鏈接文件 -s:生成文件的鏡像,不着用磁盤空間。如果沒有-s:他會在你選定的位置生成一個與源文件大小相同的文件,並且保持同步變化 find 在文件系統中搜索某文件 wc 統計文本中行數、字數、字符數 ls | wc - 統計一個目錄下有多少個文件(|是管道,表示前一個命令的輸出結果,是后一個命令的輸入,eg:ls *.docx|wx:統計目錄下有多少個.docx類型的文件) grep 在文本文件中查找某個字符串 -n:顯示行號 moreless 分頁顯示文本文件內容 head/tail 顯示文件頭/尾內容 du 查看文件大小(目錄大小)
  -h:按單位顯示
  -d:指文件的層級:例如1就是當前目錄,
diff 查看兩個文件內容的不同 chmod 修改文件的權限(權限可通過:ls -l來查看)
chgrp 修改屬組

 

xargs 將標准輸出的內容作為參數,轉換成小塊分段傳遞后面的函數(可以讀入stdin標准輸入的內容,並以空白字元、斷行字元作為分割)
  -0:當stdin有特殊字元時,當作普通字符處理
  -a file:從文件中讀入作為stdin
  xargs 還可以循環刪除
songbowendeMacBook-Pro:~ lesley$ find . -type f |xargs rm

find pathname -option [-print -exec -ok] 用於在文件樹種查找文件,並作出相應的處理
1. 其中pathname:查找目錄:.表示當前目錄;/表示系統根目錄
    -print:find命令將匹配的文件輸出到標准輸出 -exec:find命令將匹配的文件執行該桉樹所給出的shell命令。命令形式:'command'{} \; 注意{   }和\;之間的空格。 
    -ok:同-exec,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。

2. option:
    -name   按照文件名查找文件。
    -type  查找某一類型的文件,諸如:
        b - 塊設備文件。
        d - 目錄。
        c - 字符設備文件。
        p - 管道文件。
        l - 符號鏈接文件。
        f - 普通文件。
    -perm   按照文件權限來查找文件。
    -mtime -n +n  按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
    -size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。
    -depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。

 

***另外:其他考題:

1. tail -f 'xx_log.txt' 實時查看文件(只限於:log檔案文件。會以一定時間實時跟蹤)
2. 查看大文件find . -type -f -size +800M -ptint0 | xargs -0 ls -l
3. 查看大文件並輸出找出來文件的具體大小
find . -type f -size +800M  -print0 | xargs -0 du -h
4. 查看大文件並按照文件大小排序
find . -type f -size +800M  -print0 | xargs -0 du -h | sort -nr
5. 查看大目錄並排序:du -d 1 |sort -n
6. 查看大目錄並只輸出前n個:du -d 1|head -n
7.如何找到一個文件含有含有aaa,bbb的行

  grep 'aaa' *.txt|xargs grep 'bbb' 

2. 系統管理命令

stat 顯示文件的詳細信息,比ls更詳盡 who 顯示在線登錄用戶

whoami 顯示當前操作用戶

hostname 顯示主機名

uname 顯示系統信息
du 查看目錄大小(同樣可以查看指定文件)
    -h:帶有大小單位

df 查看磁盤使用情況
    -h:帶有大小單位
 

3. 進程管理

ps 顯示當前運行的進程
    -a:顯示其他用戶啟動的進程
    -x:查看系統中屬於自己的進程
    -u:顯示啟動這個進程的用戶和它啟動的時間
    與grep用管道連接,找到特定的進程:ps -a|grep '28952'
            統計進程個數:ps -a|wc pstree 以樹狀圖顯示進程,只顯示進程的名字,且相同進程合並顯示
    -p:還顯示PID
    -a:相同進程部合並,且顯示命令行參數

top 顯示當前消耗資源最多的進程信息
    -i 查看多少進程處於running狀態,可能系統存在內存或I/O瓶頸


kill 殺死進程(是通過發送信號來終止一個進程)
    -9:發出的信號是:SIGKILL:相當於exit,不能被捕捉或忽略,所以會立即殺死進程-15:SIGTERM 當程序接受到這個信號后,大部分會釋放自己的資源,然后再停止。但是有一部分,接收到信號以后,可以不立即停止,例如如果正在等待IO,則不會立即作出響應。所以SIGTERM信號會被阻塞、忽略

 

4. 網絡

ifconfig 查看網絡配置信息

ping 測試網絡聯通

netstat 顯示網絡連接、路由表和網絡接口
    -a 顯示所有的socket,包括正在監聽的
    -i 顯示所有網絡接口的信息
    -e 顯示核心路由信息
    -t 顯示TCP連接情況
    -v 顯示正在進行的工作

route -n 查看路由表

 

5. 性能檢測工具

top 顯示所有實時運行的進程,並且定時更新

vmstat 虛擬內存統計(安裝一個sysstat包)

iostat 用於監控CPU和系統設備的IO負載情況 free 內存使用率

map 進程內存占用率

strace 追蹤程序運行狀態

 

6. 打包壓縮命令

gzip 

bzip2

tar: 打包壓縮
    -c:歸檔文件
    -x:壓縮文件
    -z:gzip壓縮文件
    -j:bzip2壓縮文件
    -v:顯示壓縮或解壓縮過程(view)
    -f:使用檔名

例如:
tar -cvf /testTar/test1.tar testTar/test1 只打包,不壓縮
tar -zcvf /testTar/test.tar.gz  打包,並用gzip壓縮
tar -jcvf/testTar/test.tar.bz2 打包,並用bzip2壓縮

tar -xvf/ tar -zxvf/ tar -jxvf 解壓縮

 

7. 關機/重啟

shutdown 關機
    -r:關機重啟
    -h:關機不重啟
    now 立即關機

halt 關機
reboot 重啟

 

.8 Linux管道:

將一個命令的標准輸出作為另一個命令的標准輸入。也就是把幾個命令組合起來使用,后一個命令除以前一個命令的結果。例:

grep -r "close" /home/* | more 

 在home目錄下所有文件中查找,包括close的文件,並分頁輸出。

 

9. Linux軟件包管理

dpkg (Debian Package)管理工具,軟件包名以.deb后綴。這種方法適合系統不能聯網的情況下。

比如安裝tree命令的安裝包,先將tree.deb傳到Linux系統中。再使用如下命令安裝。

sudo dpkg -i tree_1.5.3-1_i386.deb  安裝軟件
sudo dpkg -r tree 卸載軟件

 

APT(Advanced Packaging Tool)高級軟件工具。這種方法適合系統能夠連接互聯網的情況。

依然以tree為例

sudo apt-get install tree 安裝tree
sudo apt-get remove tree 卸載tree
sudo apt-get update  更新軟件
sudo apt-get upgrade

 

10.vim使用

vim三種模式:命令模式、插入模式、編輯模式。使用ESC或i或:來切換模式。

命令模式下:

:q                      退出
:q!                     強制退出
:wq                   保存並退出
:set number     顯示行號
:set nonumber  隱藏行號
/apache            在文檔中查找apache 按n跳到下一個,shift+n上一個
yyp                   復制光標所在行,並粘貼
h(左移一個字符←)、j(下一行↓)、k(上一行↑)、l(右移一個字符→)

 

11. 用戶及用戶組管理

/etc/passwd    存儲用戶賬號

/etc/group       存儲組賬號

/etc/shadow    存儲用戶賬號的密碼

/etc/gshadow  存儲用戶組賬號的密碼

useradd 用戶名
userdel 用戶名
adduser 用戶名
groupadd 組名
groupdel 組名
passwd root 給root設置密碼 
su root su - root su user 切換用戶,加載配置文件.bashrc su - user 切換用戶,加載配置文件/etc/profile ,加載bash_profile


/etc/profile 系統環境變量

bash_profile 用戶環境變量

.bashrc 用戶環境變量

 

更改文件的用戶及用戶組

sudo chown [-R] owner[:group] {File|Directory}

例如:還以jdk-7u21-linux-i586.tar.gz為例。屬於用戶hadoop,組hadoop

要想切換此文件所屬的用戶及組。可以使用命令。

sudo chown root:root jdk-7u21-linux-i586.tar.gz

 

總結:面試的問題有

1. linux 中查看監聽網絡端口命令

netstat - a 

2. more和cat的區別

cat 查看文件內容 
more 分頁查看文件的內容

3. linux 改密碼命令 

passwd

4. 改權限命令

chmod

5. 如何結束一個進程?kill-9和kill -11的區別——美團

kill命令。kill命令是通過發送信號給進程達到中斷的目的。

kill -9:發送的信號是:SIGKILL,相當於exit,不能被捕捉或忽略,所以會立即殺死進程

kill -11:發送的信號是:SIGTERM,當進程接受到這個信號后,大部分會釋放自己的資源,然后再停止。但是有一部分,接收到信號以后,可以不立即停止,例如如果正在等待IO,則不會立即作出響應。所以SIGTERM信號會被阻塞、忽略。

6. 在性能測試中,你有用到什么命令?——美團

ps、top、free查看進程使用情況,kill殺死進程

iostat查看CUP和各設備IO使用率

vmstat查看內存使用情況

 

7. 查看磁盤空間的命令

du 查看文件目錄大小
df 查看磁盤使用情況
    -h 帶有大小單位

 

8. 如何找到一個文件中含有aaa 和 bbb和行

grep 'aaa' *.txt|xargs grep 'bbb' 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM