首頁 > 軟體

Linux 系統管理 使用技巧

2020-06-16 17:33:42

一、這篇文章講了什麼?

  這篇文章參考性很強,希望以後多分享一些文章啦。所以就把草稿箱的其中一篇很實用性的Linux小技巧分享給運維的基友們。後續該篇文章會一直更新新技巧喲。感謝童鞋們的關注哈。

二、乾貨開始啦!

1.檢視埠監聽

[root@linuxidc ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
CLOSE_WAIT 4
ESTABLISHED 343

 

2.檢視埠監聽狀態統計

[root@Master ~]# netstat -aultn | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
TIME_WAIT 28253
ESTABLISHED 15
LISTEN 13

 可以看出當前系統有28253的埠在使用,

3.優化以上核心引數方式:

編輯/etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

 修改完成後,sysctl -p 立即生效

4.修改流量大的web 伺服器上,優化核心引數

net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
#這幾個引數,建議只在流量非常大的伺服器上開啟,會有顯著的效果。一般的流量小的伺服器上,沒有必要去設定這幾個引數。

 5.檢視linux 系統預設閘道器

ip route show | grep 'default' | awk '{print $3}'

 6.過濾檔案中的註釋以及空格開頭

egrep -v '^$|^#' /etc/rsyslog.conf

 7.如何清空/刪除 last記錄

#清空最後登入
echo >/var/log/wtmp
#清空歷史紀錄
echo > ./.bash_history

#在空格後輸入命令,不記錄到歷史命令中,先輸入到環境變數中
export HISTCONTROL=ignorespace

 8.mysql密碼忘記了,咋辦?

vi /etc/my.cnf 新增下面一句話
[mysqld]
skip-grant-tables
重新啟動mysqld。
之後登陸mysql系統,修改root 的密碼
USE mysql;
UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
flush privileges
以上就可以了。

 9.利用tcpdump 監控某個介面上的埠,如80 埠,-i 後跟網路介面,CentOS6上是eth0。-c 是抓的包數目

[root@web ~]# tcpdump -i eno16777984 'port 80' -c 8
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno16777984, link-type EN10MB (Ethernet), capture size 65535 bytes
23:41:42.142270 IP 192.168.30.65.27342 > web.ichunqiu.com.http: Flags [S], seq 779859144, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
23:41:42.142360 IP web.ichunqiu.com.http > 192.168.30.65.27342: Flags [S.], seq 1569747590, ack 779859145, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
23:41:42.142677 IP 192.168.30.65.27342 > web.ichunqiu.com.http: Flags [.], ack 1, win 256, length 0
23:41:42.142722 IP 192.168.30.65.27343 > web.ichunqiu.com.http: Flags [S], seq 2277286734, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
23:41:42.142759 IP web.ichunqiu.com.http > 192.168.30.65.27343: Flags [S.], seq 3574925053, ack 2277286735, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
23:41:42.143280 IP 192.168.30.65.27344 > web.ichunqiu.com.http: Flags [S], seq 2564439030, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
23:41:42.143317 IP web.ichunqiu.com.http > 192.168.30.65.27344: Flags [S.], seq 4279749150, ack 2564439031, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
23:41:42.143346 IP 192.168.30.65.27343 > web.ichunqiu.com.http: Flags [.], ack 1, win 256, length 0
8 packets captured
23 packets received by filter
0 packets dropped by kernel

10.統計web伺服器站點的紀錄檔,如apache 的access.log紀錄檔

  •  統計存取者的ip數目
[root@elk ~]# awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 25
   5568 124.126.211.201
   5247 123.125.2.108
   4085 139.59.253.208
  • 利用系統自帶geoiplookup檢視存取者的ip歸屬地(註:需要在本機先安裝GeoIP軟體)如下:
安裝geoip軟體
[root@elk nginx]# yum install GeoIP -y

查詢ip歸屬地
[root@elk nginx]# cat access.log-20160903 | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -n 25 | 
awk '{ printf("%5dt%-15st", $1, $2); system("geoiplookup " $2 " | cut -d : -f2 ") }' 5568 124.126.211.201 CN, China 5337 123.125.2.108 CN, China 4085 139.59.253.208 AU, Australia 1543 223.223.181.131 CN, China 80 93.174.93.99 NL, Netherlands 42 121.43.61.205 CN, China 26 36.110.44.114 CN, China 26 183.6.143.154 CN, China 25 116.226.39.94 CN, China 24 111.207.81.199 CN, China 24 106.81.231.217 CN, China 18 36.44.56.82 CN, China 18 112.80.61.114 CN, China 11 220.181.132.219 CN, China 5 61.141.94.68 CN, China 5 171.8.167.69 CN, China 4 101.226.33.240 CN, China 3 180.153.212.13 CN, China 3 180.153.206.20 CN, China 3 171.8.167.68 CN, China 3 101.226.89.119 CN, China 3 101.226.33.226 CN, China 3 101.226.102.97 CN, China 2 27.221.19.18 CN, China
  • 檢視存取者404 錯誤頁面的請求次數以及請求頁面,並按降序排列
[root@elk nginx]# cat /var/log/nginx/access.log | awk '($9 ~ /404/)' | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25
  •  檢視存取者使用的User-Agent,並統計排序
[root@elk nginx]# cat /var/log/nginx/access.log | awk -F" '{ print $6 }' | sort | uniq -c |sort -frn | head -n 25
  • 統計web伺服器的 UV 量
[root@elk nginx]# cat /var/log/nginx/access.log | awk '{ print $1 }' | sort | uniq -c | wc -l
122
  • 統計當天的uv存取量
[root@elk nginx]# cat /var/log/nginx/access.log | grep `date '+%d/%b/%G'` | awk '{ print $1 }' | sort | uniq -c | wc -l
10
  • 統計當月的uv存取量
[root@elk nginx]# cat access.log | grep `date '+%b/%G'` | awk '{ print $1 }' | sort | uniq -c | wc -l
111
  • 根據返回的響應碼進行排序
[root@elk nginx]# cat /var/log/nginx/access.log | awk '{ print $9 }' | sort | uniq -c | sort -rn
   8973 200
   7304 401
    720 304
     79 404
     49 400
     10 502
     10 "-"
      7 201
      4 499
      4 409
      4 173
      1 405
  • 快速列出點選量最多的請求頁面
[root@elk nginx]# cat /var/log/nginx/access.log | awk '{ print $7 }' | sort | uniq -c | sort -rn | head -n 25
   4015 /elasticsearch/packetbeat-*/_field_stats?level=indices
   3581 /favicon.ico
   2117 /bundles/src/ui/public/images/elk.ico
    799 /
    340 /elasticsearch/logstash-*/_field_stats?level=indices
    225 /elasticsearch/.kibana/_refresh
    171 /app/kibana
    167 /elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1472786252222
    153 /elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1472784429830
    144 /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472746017033
    139 /elasticsearch/.kibana/index-pattern/_search?fields=
    132 /bundles/src/ui/public/images/kibana.svg
    130 /bundles/kibana.bundle.js?v=10000
    129 /bundles/node_modules/font-awesome/fonts/fontawesome-webfont.woff2
    128 /bundles/commons.style.css?v=10000
    128 /bundles/commons.bundle.js?v=10000
    121 /bundles/kibana.style.css?v=10000
    107 /elasticsearch/topbeat-*/_field_stats?level=indices
     97 /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472744909049
     97 /elasticsearch/.kibana/visualization/_search?size=100
     75 /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472749929499
     72 /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472750405461
     66 /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472750160122
     66 /elasticsearch/.kibana/dashboard/_search?size=100
     62 /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472743171471
  • 實時的檢視請求者ip、http方法、響應碼、請求的頁面
[root@elk nginx]# tailf /var/log/nginx/access.log | awk '{ printf("%-15st%st%st%sn", $1, $6, $9,$7) }'
60.191.52.254      "HEAD    401    http://115.236.176.134:3434/
141.212.122.160    "GET    401    /
101.200.215.149    "GET    401    /manager/html
114.44.57.4        "CONNECT    400    126mx01.mxmail.netease.com:25
187.160.7.218      "GET    401    /cgi/common.cgi
187.160.7.218      "GET    401    /stssys.htm
187.160.7.218      "GET    401    /
187.160.7.218      "POST    401    /command.php
218.75.70.3        "GET    401    /
163.172.173.181    "GET    401    http://www.baidu.com/cache/global/img/gs.gif
123.125.2.108      "GET    200    /
123.125.2.108      "GET    200    /app/kibana
123.125.2.108      "GET    304    /bundles/commons.style.css?v=10000
  • 跟上面的類似,只是在第四個欄位加了個GeoIP解析歸屬地,如下:
[root@elk nginx]# tailf /var/log/nginx/access.log | awk '{
    "geoiplookup " $1 " | cut -d : -f2 " | getline geo
    printf("%-15st%st%st%-20st%sn", $1, $6, $9, geo, $7);}'
123.125.2.108      "GET    304     CN, China              /bundles/src/ui/public/images/kibana.svg
123.125.2.108      "POST    200     CN, China              /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472922034187
123.125.2.108      "POST    200     CN, China              /elasticsearch/.kibana/index-pattern/_search?fields=
123.125.2.108      "GET    200     CN, China              /elasticsearch/.kibana/_mapping/*/field/_source?_=1472922034556
123.125.2.108      "POST    200     CN, China              /elasticsearch/_mget?timeout=0&ignore_unavailable=true&preference=1472922034187
123.125.2.108      "GET    304     CN, China              /bundles/node_modules/font-awesome/fonts/fontawesome-webfont.woff2
  • 顯示非法代理的存取者
[root@elk nginx]# awk -F" '($6 ~ /^-?$/)' /var/log/nginx/access.log | awk '{ print $1 }' | sort | uniq
114.44.57.4
183.129.160.229
218.75.70.3
61.231.3.98

11.linux中利用python開啟臨時的web下載服務,存取埠是88,http://ip:88/,埠可以自定義其它的,避免與系統其它的衝突

[root@web ~]# python -m SimpleHTTPServer 88
Serving HTTP on 0.0.0.0 port 88 ...

 12.vim 複製多行內容

:1,10 co 10
意思是複製第1行到10行之間的內容到第10行後面。

:1,-1 co 10
意思是複製第1行到檔案最後一行之間的內容到第10行後面。

 13.快速刪除檔案內每行中的的空格
  刪除行首的空格

[root@hcloud webtest]# sed -i 's/^[ t]*//g' filename

  刪除行尾的空格

[root@hcloud webtest]# sed -i 's/[ t]*$//g' filename

14.windows 編寫的指令碼到linux 上執行,編碼錯誤解決方法:

:set ff=unix
:wq

 15.yum 安裝軟體時,出現以下提示:

Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.

  解決方法:

[root@test ]# yum-complete-transaction

 16.用grep 過濾檔案中的空行已經#注釋,並將顯示出來的內容標上行號

grep -Ev  '^$|^#' hosts >test.txt && cat -n test.txt && rm -f test.txt

 17.假如server的某個進程的紀錄檔由於存取量或者其它錯誤bug導致紀錄檔大小暴增,且該紀錄檔分割區空間即將不足,需要線上清空該紀錄檔(清理前先備份)

  解決方法,有以下幾種:

  1)

cat /dev/null > logfile

  2)

dd if=/dev/null of=logfile

  3)

rm logfile

 18.利用linux 自帶工具實時檢測網絡卡流量

  1)ifconfig

[root@zabbix-6 ~]# watch -d ifconfig eth0

   2)/proc/net/dev

[root@zabbix-6 ~]# watch -d cat /proc/net/dev

 19.模擬cpu升高(可後台執行n次,每個進程的使用率*n 就是總的cpu利用率)

  1)

dd if=/dev/zero of=/dev/null

  2)

fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd

  3)

yes > /dev/null &

  4) 哈哈,這個慎用。。。。。!!!!

:(){ :|:& };:

 20. 檢視瀏覽器內部的快取,谷歌為例,瀏覽器內輸入以下內容:

chrome://net-internals/#dns

更新歷史:

2016/09/04: 更新web 伺服器的存取紀錄檔分析

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-09/135092.htm


IT145.com E-mail:sddin#qq.com