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分析
