面試的問題:
騰訊:
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:創建有內容的文件 echo:1. 將字符串輸入到控制台: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:顯示行號 more/less 分頁顯示文本文件內容 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'
