2020-1-08.運維面試題總結



categories:

  • 面試題目
    -tags:
  • 運維

Linux查看系統開機時間

who -b
system boot  Jan  8 08:47
who -r
run-level 5  Jan  8 08:47
last reboot
reboot   system boot  5.0.0-37-generic Wed Jan  8 08:47   still running
reboot   system boot  5.0.0-37-generic Tue Jan  7 08:51 - 20:01  (11:09)
reboot   system boot  5.0.0-37-generic Mon Jan  6 08:43 - 23:09  (14:25)
reboot   system boot  5.0.0-37-generic Sun Jan  5 09:21 - 22:31  (13:10)
reboot   system boot  5.0.0-37-generic Sat Jan  4 11:42 - 22:00  (10:18)
reboot   system boot  5.0.0-37-generic Fri Jan  3 08:53 - 22:03  (13:10)

wtmp begins Wed Jan  1 18:41:57 2020
#如果只需要查看最后一次Linux系統啟動的時間
last reboot | head -1
reboot   system boot  5.0.0-37-generic Wed Jan  8 08:47   still running
#/proc/uptime
date -d "`cut -f1 -d. /proc/uptime` seconds ago"
Wed Jan  8 08:47:07 CST 2020

查看占用8000端口的進程

netstat -lnatup | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1264/sshd           
tcp        0      0 192.168.8.135:22        192.168.8.101:56244     ESTABLISHED 14493/sshd: anyux [ 
tcp6       0      0 :::22                   :::*                    LISTEN      1264/sshd    
ss -lnatup | grep :22
tcp   LISTEN      0       128             0.0.0.0:22              0.0.0.0:*      users:(("sshd",pid=1264,fd=3))                                                 
tcp   ESTAB       0       0         192.168.8.135:22        192.168.8.101:56244  users:(("sshd",pid=14495,fd=3),("sshd",pid=14493,fd=3))                        
tcp   LISTEN      0       128                [::]:22                 [::]:*      users:(("sshd",pid=1264,fd=4)) 

查看進程打開了哪些文件

#搜索被某一進程打開的相關文件
lsof -p `ps -ef | grep ssh | head -1 | awk '{print $2}'` | head -5
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
sshd    1264 root  cwd    DIR               8,21     4096       2 /
sshd    1264 root  rtd    DIR               8,21     4096       2 /
sshd    1264 root  txt    REG               8,21   786856 3803186 /usr/sbin/sshd
sshd    1264 root  mem    REG               8,21    47568 2889896 /lib/x86_64-linux-gnu/libnss_files-2.27.so

#查看被打開某一文件的相關進程信息
root@anyux:~# lsof /proc/ | head -5
COMMAND     PID            USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME
systemd       1            root   11r   REG    0,4        0      15476 /proc/1/mountinfo
systemd       1            root   13r   REG    0,4        0 4026532071 /proc/swaps
systemd-j   315            root   10r   REG    0,4        0      14917 /proc/sys/kernel/hostname
systemd-r   814 systemd-resolve    7r   REG    0,4        0      14917 /proc/sys/kernel/hostname

#查看網絡連接
root@anyux:~# lsof -i:22
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     1264  root    3u  IPv4  35389      0t0  TCP *:ssh (LISTEN)
sshd     1264  root    4u  IPv6  35391      0t0  TCP *:ssh (LISTEN)
sshd    14493  root    3u  IPv4 179110      0t0  TCP anyux:ssh->shz:56244 (ESTABLISHED)
sshd    14495 anyux    3u  IPv4 179110      0t0  TCP anyux:ssh->shz:56244 (ESTABLISHED)

 #查看活動的連接:
lsof -i @192.168.8.101
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    14493  root    3u  IPv4 179110      0t0  TCP anyux:ssh->shz:56244 (ESTABLISHED)
sshd    14495 anyux    3u  IPv4 179110      0t0  TCP anyux:ssh->shz:56244 (ESTABLISHED)
#查看某個用戶的打開的文件
lsof -u root | head -5
COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1 root  cwd       DIR               8,21      4096          2 /
systemd       1 root  rtd       DIR               8,21      4096          2 /
systemd       1 root  txt       REG               8,21   1595792    2891189 /lib/systemd/systemd
systemd       1 root  mem       REG               8,21   1700792    2889869 /lib/x86_64-linux-gnu/libm-2.27.so
#查看非某個用戶的打開的文件
lsof -u ^root | head -5


查看用戶今天 登錄了多長時間

#查看當前登錄用戶信息
who /var/log/wtmp | head -5
anyux    pts/0        2020-01-01 18:41 (192.168.8.101)
anyux    pts/0        2020-01-01 23:27 (192.168.8.101)
root     :0           2020-01-03 08:55 (:0)
root     :0           2020-01-04 11:42 (:0)
anyux    pts/1        2020-01-04 21:01 (192.168.8.101)
#查看用戶登錄歷史
last anyux | head -5
anyux    pts/0        192.168.8.101    Thu Jan  9 09:10    gone - no logout
anyux    pts/4        192.168.8.101    Wed Jan  8 20:36 - 22:15  (01:38)
anyux    pts/0        192.168.8.101    Wed Jan  8 20:17 - 20:36  (00:19)
anyux    pts/0        192.168.8.101    Wed Jan  8 14:16 - 16:54  (02:38)
anyux    pts/0        192.168.8.101    Mon Jan  6 18:06 - down   (05:02)
#查看所有用戶最近一次登錄歷史
#命令將讀取/var/log/lastlog文件;用戶排列順序按照/etc/passwd中的順序
lastlog | head -5
Username         Port     From             Latest
root                                       **Never logged in**
daemon                                     **Never logged in**
bin                                        **Never logged in**
sys                                        **Never logged in**
#查看用戶anyux的登陸歷史
lastlog -u anyux | head -5
Username         Port     From             Latest
anyux            pts/0    192.168.8.101    四 1月  9 09:10:27 +0800 2020
#查看最近1天之內的登陸歷史
lastlog -t 1
Username         Port     From             Latest
anyux            pts/0    192.168.8.101    四 1月  9 09:10:27 +0800 2020
#根據/var/log/wtmp文件中的登陸和退出時間報告用戶連接的時間(小時),默認輸出報告總時間
#-p:顯示每個用戶的連接時間
#-d:顯示每天的連接時間
#-y:顯示年份,和-d配合使用
ac -p
	root                                76.27
	anyux                               17.82
	total       94.09
ac -d
Jan  1	total        4.99
Jan  2	total        2.68
Jan  3	total       13.14
Jan  4	total       10.56
Jan  5	total       13.17
Jan  6	total       19.46
Jan  7	total       11.16
Jan  8	total       18.10
Today	total        0.84
ac -y
		total       94.09

查看磁盤壓力

top

查看%wa,IO等待所占用的CPU時間的百分比,高過30%時IO壓力高

top
top - 09:34:40 up 47 min,  2 users,  load average: 0.00, 0.07, 0.20
Tasks: 276 total,   1 running, 227 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.4 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

iostat

如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
idle小於70% IO壓力就較大了,一般讀取速度有較多的wait.

iostat -x 1 1 | grep sd* -A1 |grep -v "loop*"| column -t
avg-cpu:  %user  %nice  %system  %iowait  %steal  %idle
6.08      1.75   1.67   0.10     0.00     90.40
--
Device    r/s    w/s    rkB/s    wkB/s    rrqm/s  wrqm/s  %rrqm  %wrqm  r_await  w_await  aqu-sz  rareq-sz  wareq-sz  svctm  %util
--
sda       1.29   0.01   55.79    0.04     0.05    0.00    3.52   37.50  4.06     11.95    0.00    43.31     6.00      1.04   0.13
sdb       20.01  5.56   424.68   257.25   0.35    6.30    1.72   53.12  1.04     1.00     0.00    21.22     46.24     0.43   1.10

磁盤壓力測試

time dd if=/dev/zero bs=1M count=2048 of=direct_2G

查看磁盤讀寫情況

iostat -d 2 3 | grep sd*
Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.00        38.37         1.07     186305       5204
sdb              18.06       288.89       188.41    1402544     914708
Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb              12.00         0.00        76.00          0        152

占用內存最多的進程

ps -aux | sort -k4nr | head -n 1
root      3963  2.3  3.7 1161884 299812 tty2   SLl+ 08:48   1:41 /opt/google/chrome/chrome --no-sandbox

占用CPU最多的進程

ps -aux | sort -k2nr | head -1
root      6953  0.0  0.0  14588   788 pts/0    S+   10:02   0:00 head -1

創建10000空文件時間

time touch {1..10000}

獲取硬件信息

dmidecode

獲取操作系統信息

cat /etc/os-release 
#內核
uname -a

HTTP協議代碼

401 未授權:登錄失敗
403  禁止:禁止執行訪問 
404 找不到 
500 服務器的內部錯誤 
502 網關出錯 

POP3

郵件服務器通過偵聽TCP端口110提供POP3服務

去空行

egrep -v "#|^$" httpd.conf

模擬登錄

#!/bin/bash
tname="admin"
tpasswd="123"
name=''
passwd=''
function login(){
echo "請輸入用戶名:"
read name
echo "請輸入密碼:"
read passwd
}
function check(){
 if [ ${tname} == ${name} -a ${tpasswd} == ${passwd} ]; then
   echo "登錄成功"
   exit 0
 fi
 main
}
function main(){
  login
  check
}
main

統計nginx access.log文件中對ip地址去重並統計重復數

awk '{h[$1]++}END{for(i in h) print i,h[i]}' /var/log/nginx/access.log |sort -nrk2 |head | column -t

防火牆做NAT轉發:

C ->A ->B

對A的操作
#開啟訪問
echo 1 > /proc/sys/net/ipv4/ip_forward
#配置
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.50.4:8080
iptables -t nat -A POSTROUTING -d 192.168.50.4/32 -p tcp -m tcp --sport 8080 -j SNAT --to-source 192.168.50.3
iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
#保存
service iptables save
#重啟
service iptables restart

tomcat訪問慢

設計到的工具:jstack、jmap、jstat(這三個是jre自帶的)wireshark(抓包)等
操作:檢查數據庫問題,網絡問題,服務器狀態
服務器狀態問題:jvm內存(jmpa-heap查看)服務器內存
io:磁盤讀寫
cpu:tomcat進程,jstack導出線程文件,jstat 查看GC情況,查看xms,xmx設置
端口:whireshark抓包,查看連接狀態
linux下whireshark換成tcpdump抓包,下載,再使用whireshark分析


免責聲明!

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



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