主頁 > 作業系統 > Java面試基礎 -- Linux篇

Java面試基礎 -- Linux篇

2020-10-08 08:51:09 作業系統

0.日常命令
  • cd 目錄路徑: 跳轉到指定目錄
  • mkdir 目錄名稱:新增目錄
  • pwd: 獲取當前路徑
  • su: 切換用戶
  • ll: 查看當前目錄俠的檔案和目錄
  • rm -rf 目錄: 遞回洗掉指定目錄下的所有檔案
  • vi 檔案:修改檔案
  • mv 源檔案夾名 新檔案夾名:移動檔案夾到指定目錄
  • grep:查找想要的資訊
  • cp -r 源目錄名 新目錄名:拷貝指定目錄中的檔案到新目錄中
  • touch 檔案名:創建檔案
  • find -name 檔案名:查找檔案
  • ls -ahl:查看檔案的所有者
  • chkconfig --add xxx: 將xxx腳本加入到開機啟動項里面
  • chkconfig --list:查看添加是否成功
  • shutdown -h now:指定現在立即關機;
  • shutdown +5 "System will shutdown after 5 minutes":指定5分鐘后關機,同時送出警告資訊給登入用戶
  • reboot: 重開機
  • reboot -w:做個重開機的模擬(只有紀錄并不會真的重開機)

1. 幫助命令:man,help, info
  • help xxx #顯示內置命令幫助資訊;
    xxx --help #顯示外置命令幫助資訊;
  • man xxx #無內外置之分,顯示的內容比help更詳細;
  • info xxx #得到的內容比man更詳細;

2.查看活動行程的命令:ps,top, pidstat
  • ps 用于顯示系統內的所有行程
    ps-elf 查看所有行程;
    ps -ef | grep java 查看和java有關的所有行程;
  • top 用于查看活動行程的CPU和記憶體資訊,能夠實時顯示系統中各個行程的資源占用情況,
    可以按照CPU、記憶體的使用情況和執行時間對行程進行排序,
  • pidstat 用于監控全部或指定的行程占用系統資源的情況,包括CPU、記憶體、磁盤I/O、執行緒切換、執行緒數等資料,
    pidstat -u/-r/-d -p 行程號 --解釋:(-u CPU, -r 記憶體,-d 磁盤I/O

3.查看日志常用命令:tail,head,cat,more,less,sed
  • tail:對檔案進行動態監控
    tail -fn 200 test.log 實時監控200行日志
    tail -n 10 test.log 查詢最后10行日志
    tail -n +10 test.log 查詢10行之后的所有日志
  • head -n 10 test.log 查看頭10行日志
    head -n -10 test.log 查看除最后10行的其他日志
  • cat -n test.log | grep "run" 在test.log中查詢包含run的行
    cat test.log 顯示test.log中的所有內容
  • sed -n '/2019-11-17 16:17:20/,/2019-12-17 16:17:36/p' test.log 查找指定日期范圍內的日志
    sed -n '1,3p' test.log 顯示第1到3行日志
  • more可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出查看
    more -4 test.log 每屏顯示4行日志
    more +/run test.log 從日志中查找第一個出現"run"字串的行,并從該處前兩行開始顯示輸出
    cat test.log | more -5 得到test.log中的全部內容并且每次顯示5行
    more 僅能向前移動,卻不能向后移動
  • less test.log test1.log 瀏覽多個檔案
    ps -ef | less -N ps查看行程資訊并通過less分頁顯示同時顯示行號
    ps aux|grep redis:查看包括redis字串的行程
    pgrep redis -a:查看包括redis字串的行程
  • history 查看所有的歷史記錄
    history | grep xxx 查看歷史記錄中包含某些指令的記錄
    history | more 分頁查看記錄
    history -c 清空所有的歷史記錄
打開超大檔案: 
    1. head -10000 slowquery.log > temp.log  將slowquery.log的前10000行日志寫入到temp.log中
    2. tail -10000 slowquery.log > temp.log   將slowquery.log的后10000行日志寫入到temp.log中
    3. sed -n '10,10000p' slowquery.log > temp.log 把slowquery.log第10到10000行的資料寫入到temp.log中
    4. cat catalina.log | grep   '2017-09-06 15:15:42' > test.log  根據查詢條件匯出

4.壓縮檔案命令
  • tar -zxvf xxxx.gz: 解壓檔案到當前目錄下
    tar -zxvf xxxx.gz -C /usr/local 解壓檔案到指定位置
  • tar -zcvf abc.gz a.txt b.txt c.txt 將這三個檔案壓縮成abc.gz壓縮包
    tar -zcvf abc.gz /abc/ 將指定目錄壓縮成壓縮包

5.殺死一個行程的操作
方法一:把ps的查詢結果通過管道給grep查找包含特定字串的行程, 管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入,
例如: ps -ef | grep firefox 找到firefox行程的行程號
然后:kill -s 9 6496   殺死行程
方法二:  使用pgrep查詢某個行程的行程號
例如:pgrep firefox    
然后:kill -s 9 6496
方法三: 使用pkill, pkill無須 “s”,終止信號等級直接跟在 “-“ 后面
例如:pkill -9 firefox

6.權限命令

作業系統中每個檔案都擁有特定的權限、所屬用戶和所屬組,Linux中權限一般分為讀(readable)、寫(writable)和執行(excutable),分為三組,分別對應檔案的屬主(owner),屬組(group)和其他用戶(other),通過 ls -l 命令我們可以 查看某個目錄下的檔案或目錄的權限
檔案的型別:

  • d: 代表目錄
  • -: 代表檔案
  • l: 代表軟鏈接(可以認為是window中的快捷方式)

Linux中權限分為以下幾種:

  • r:代表權限是可讀,可以用數字4表示
  • w:代表權限是可寫,可以用數字2表示
  • x:代表權限是可執行,可以用數字1表示
    對檔案和目錄而言,讀寫執行表示不同的意義,對于檔案:
權限名稱 可執行操作
r 可以使用cat查看檔案的內容
w 可以修改檔案的內容
x 可以將其運行為二進制檔案

對于目錄:

權限名稱 可執行操作
r 可以查看目錄下串列
w 可以創建和洗掉目錄下檔案
x 可以使用cd進入目錄

超級用戶可以無視普通用戶的權限,即使檔案目錄權限是000,依舊可以訪問, 在linux中的每個用戶必須屬于一個組,不能獨立于組外

修改檔案/目錄的權限的命令:chmod
示例:
修改/test下的aaa.txt的權限為屬主有全部權限,屬主所在的組有讀寫權限, 其他用戶只有讀的權限:
chmod u=rwx,g=rw,o=r aaa.txt
上述示例還可以使用數字表示:chmod 764 aaa.txt

更多請看這里


7.查看磁盤情況的命令:free,vmstat,du,df

顯示系統使用和空閑的記憶體情況,包括物理記憶體、互動區記憶體(swap)和內核緩沖區記憶體

  • free:
    • [ ] -b  以Byte為單位顯示記憶體使用情況,
    • [ ] -k  以KB為單位顯示記憶體使用情況,
    • [ ] -m  以MB為單位顯示記憶體使用情況,
    • [ ] -g   以GB為單位顯示記憶體使用情況,
    • [ ] -o  不顯示緩沖區調節列,
    • [ ] -s<間隔秒數>  持續觀察記憶體使用狀況,
    • [ ] -t  顯示記憶體總和列,
    • [ ] -V  顯示版本資訊, 
      例:free -s 10 每隔10秒查看記憶體的使用情況
  • cat /proc/meminfo等價于free命令
  • vmstat: 動態的了解系統資源運行情況
  • du: 顯示每個檔案和目錄的磁盤使用空間以及檔案的大小,
    例: du -h tomcat8.5/ 表示顯示tomcat8.5檔案夾下每個檔案、目錄的占用空間
  • df: 顯示磁盤磁區上可以使用的磁盤空間
    例:
    df -a 表示查看全部檔案系統,單位默認KB
    df -h 表示以KB、MB、GB的單位來顯示,可讀性高
    更多內容參考這里

8.檔案傳輸命令:ftp,scp,rsync,rz,sz
  • ftp:先忽略

  • scp:
    scp -p ./files/yum.log 192.168.214.187:/tmp/demo/ :表示將當前系統的files目錄下的yum日志檔案復制到IP為192.168.214.18的機器的/tmp/demo目錄下

  • sz:
    sz test.log: 下載test.log日志檔案到windows下

  • rz:
    檔案上傳,出現彈出框,選中要上傳的檔案,確定之后即可上傳檔案

  • rsync:
    rsync是可以實作增量備份的工具,配合任務計劃,rsync能實作定時或間隔同步,配合inotify或sersync,可以實作觸發式的實時同步,rsync可以實作scp的遠程拷貝,cp的本地拷貝、rm洗掉和"ls -l"顯示檔案串列等功能


9.網路配置相關命令:netstat、ifconfig、ss、tcpdump、traceroute、ping、nslookup、dig、nmap
  • ifconfig:查看當前系統的網卡資訊. 和ip addr命令類似

  • ping:查看與某臺機器的連接情況

  • netstat:用于顯示各種網路相關資訊,如網路連接,路由表,介面狀態,masquerade 連接,多播成員等,
    查看當前系統的埠使用:netstat -an
    列出所有埠: netstat -a
    列出所有tcp埠: netstat -at
    列出所有udp埠: netstat -au
    只顯示監聽埠: netstat -l
    只列出所有監聽tcp埠: netstat -lt
    只列出所有監聽udp埠: netstat -lu
    只列出所有監聽UNIX埠: netstat -lx
    顯示所有埠的統計資訊: netstat -s
    netstat 將每隔2秒輸出網路資訊:netstat -t -c 2
    顯示核心路由資訊:netstat -rn
    找出程式運行的埠:netstat -apn | grep ssh
    找出運行在指定埠的行程:netstat -an | grep ':22'
    查看6379埠占用情況: netstat -ntlp | grep 6379

  • ss:可以用來獲取socket統計資訊,可以顯示和netstat類似的內容,優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的資訊,而且比netstat更快速更高效,
    例:ss -l 顯示本地打開的所有埠
    ss -pl 顯示每個行程具體打開的socket
    ss -t -a 顯示所有tcp socket
    ss -u -a 顯示所有的UDP Socekt
    ss -o state established '( dport = :smtp or sport = :smtp )' 顯示所有已建立的SMTP連接
    ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的HTTP連接
    ss -x src /tmp/.X11-unix/* 找出所有連接X服務器的行程
    ss -s 列出當前socket詳細資訊

ss 與 netstat對比:  
    ss命令是iproute工具集(CentOS 最小化安裝帶有);netstat命令是net-tools工具集;
    當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢;
    ss快的秘訣在于,它利用到了TCP協議堆疊中tcp_diag,tcp_diag是一個用于分析統計的模塊,可以獲得Linux 內核中第一手的資訊,這就確保了ss的快捷高效,
  • tcpdump:用于傾倒網路傳輸資料,執行tcpdump指令可列出經過指定網路界面的資料包檔案頭
    例: tcpdump 顯示TCP包資訊
    tcpdump -c 20:顯示指定數量包
    tcpdump -c 10 -q:精簡模式顯示 10個包
    tcpdump -ddd:轉換成十進制格式
  • traceroute:可以知道資訊從你的計算機到互聯網另一端的主機是走的什么路徑
    例如:
  1. traceroute -n -m 5 -q 4 -w 3 www.baidu.com
    說明: -n 顯示IP地址,不查主機名,  -m 設定跳數   -q 4每個網關發送4個資料包    -w 把對外發探測包的等待回應時間設定為3秒
  2. traceroute -p 6888 www.baidu.com 探測包使用的基本UDP埠設定6888
  3. traceroute -r www.baidu.com 繞過正常的路由表,直接發送到網路相連的主機
  • nslookup:用于查詢DNS的記錄,查詢域名決議是否正常,在網路故障時用來診斷網路問題,
    例:nslookup www.baidu.com 表示使用本機默認DNS來決議百度地址
    nslookup www.baidu.com 8.8.8.8 表示指定DNS服務器來決議百度地址
    nslookup -d www.baidu.com 表示只要在查詢的時候,加上-d引數,即可查詢域名的快取
  • nmap
    tcp埠掃描:-sT、-sP
    TCP SYN埠掃描:-sS
    nmap -sS 192.168.137.10 -255 -p 20,21,53-110,30000 --v
    UDP埠掃描:-sU
    TCP ACK掃描:-sA
  • dig 命令主要用來從 DNS 域名服務器查詢主機地址資訊
    dig baidu.com 查詢單個主機的資訊

注意點:
linux連接超時,處理方案:
1. 測驗網路是否通:ping 遠程IP
2. 如果能ping通則表示與服務器網路連接是正常,接下來測驗埠:telnet 遠程ip 埠
3.如果telnet不上,要考慮服務器是否有防火墻攔截:
  (1)CentOS7查看防火墻是否運行: firewall-cmd --state
  (2) CentOS6查看防火墻是否運行:/sbin/service iptables status
4. 如果防火墻被攔截,需要放行埠,如果防火墻沒有攔截,則要考慮服務內部是否配置限定IP訪問,MySQL、MongoDB、Redis都有bind選項,用來限定客戶端IP
5. 再檢查服務內部是否有其它權限設定,例如MySQL有遠程訪問配置,Redis有protected-mode改為no

面試題:Linux查看cpu占用率高的行程(阿里面試題)
面試題:查看占用某埠的行程(阿里面試題)
面試題:查看某行程監聽的埠(阿里面試題)
面試題:查看系統負載(今日頭條面試題)
面試題:查看行程中執行緒的狀態(蘑菇街面試題)

第一題: 
可以使用以下命令查使用記憶體最多的K個行程:ps -aux | sort -k4nr | head -K
ps -aux中(a指代all——所有的行程,u指代userid——執行該行程的用戶id,x指代顯示所有程式,不以終端機來區分)
或者直接用命令:top
第一題:
可以使用以下命令查使用CPU最多的K個行程:ps -aux | sort -k3nr | head -K
第二題:
查看占用某埠的行程:
lsof -i:埠號
netstat -tunlp | grep 埠號
第三題:
查看某行程監聽的埠:ps -aux | grep tomcat
第四題:
查看系統負載:
top命令查看linux負載:top  
輸入top,會輸出top - 01:18:39 up 2 days, 18:54, 1 user, load average: 0.04, 0.03, 0.05 
//01:18:39:系統當前時間 
//up 2 days, 18:54 :系統開機到現在經過了2天
//1 users:當前1用戶在線 
//load average:0.04, 0.03, 0.05:系統1分鐘、5分鐘、15分鐘的CPU負載資訊. 
第五題:
查看行程中執行緒的狀態:top -H
查指定行程的狀態:top -H -p <pid>

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/162661.html

標籤:Linux

上一篇:如何快速查看 group 對應的id

下一篇:python anaconda 常用操作;conda 命令指南

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more