一些驚豔到我的運維實施技巧和思路

ataola發表於2022-01-12

因為窮,買不起房,買不起車,也娶不到老婆,不是很安分,總想著靠死工資過日子也不是個事啊(額,也投資了一些基金,2021年總體上看是賺的,不過2022年剛開始又跌出屎,唉)。所以2021年我蠢蠢欲動地去外面接外包補貼家用,很多時候需要自己親力親為去現場實施運維,倒是總結出了一套組合拳打法,可以比較順利解決運維實施遇到的一些問題。


。。。。。。題記

今天的主題就是驚豔到我的“短小精悍”的運維實施技巧,總結起來就是耗時短、見效快、威力大,殺傷力強,我這裡自嘲它是我一個前端開發在運維界的”核武器“。

好了好了,不講段子了,已經暖過場了,下面我們來惡補下計算機網路的OSI七層參考模型。它們分別是物理層 -> 資料鏈路層 -> 網路層-> 傳輸層 ->會話層->表示層->應用層。今天我們後面的相關知識點也大多數是圍繞著物理層、資料鏈路層、網路層、傳輸層這一塊展開的。

網路怎麼搞?

插對了網口再往下走

這是一個真實的案例,去年筆者在某地市公安局搞實施的時候曾經遇到這樣一個問題,需要聯網去搭建一些環境,比如說nginx、node,ftp以及一些編譯環境等(額,斷網一個個包安裝也許也可以,就是非常的耗時間,搞個半死也不一定能搞完,人家5點半關機房,我還要趕回杭州呢,不如,搞點好玩的)。我的思路是用一根網線,一端連線我這邊能上網的電腦,另一端連線伺服器橋接上網。

於是和網管商量了下,把伺服器從機房搬出來,就隨便插了一個網口(哇,坑死了,有四個網口,剛好我第一次插沒插對),然後和我的電腦進行組網,組網以後在自己的電腦或者伺服器使用ping命令去ping對方,真傷心,一直ping不通對方。

知識點一: ping -t ip地址 連續不斷的ping對方的ip地址(ping命令是運維中常用的檢查網路通不通的方法)

C:\Users\14457>ping -t 172.20.10.4

Pinging 172.20.10.4 with 32 bytes of data:
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128
Reply from 172.20.10.4: bytes=32 time<1ms TTL=128

Ping statistics for 172.20.10.4:
    Packets: Sent = 8, Received = 8, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Control-C
^C
C:\Users\14457>

這就很好辦了,在組完網後,分別在四個網口拔插網線,直到看到電腦螢幕上網路地址ping通,這算是做好了第一步了,這一步真的很重要,如果對伺服器網口沒有概念,可能你卡半天都會卡在這裡。

怎麼查內網外網IP?

知識點二:

  • window: ipconfig
C:\Users\14457>ipconfig

Windows IP Configuration


Ethernet adapter Ethernet 3:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::9c04:507b:224:bfc6%22
   IPv4 Address. . . . . . . . . . . : 172.1.100.13
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter Ethernet:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 1:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 10:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter VMware Network Adapter VMnet1:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::71c1:5d45:28d:5d99%10
   IPv4 Address. . . . . . . . . . . : 192.168.23.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter VMware Network Adapter VMnet8:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::111:5ed8:9963:1e0c%17
   IPv4 Address. . . . . . . . . . . : 192.168.133.1
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2409:8900:e89:14b8:3573:d012:ca8:87fc
   Temporary IPv6 Address. . . . . . : 2409:8900:e89:14b8:d423:148d:37cc:6ecb
   Link-local IPv6 Address . . . . . : fe80::3573:d012:ca8:87fc%12
   IPv4 Address. . . . . . . . . . . : 172.20.10.4
   Subnet Mask . . . . . . . . . . . : 255.255.255.240
   Default Gateway . . . . . . . . . : fe80::10df:dd0f:1f86:a6b9%12
                                       172.20.10.1

Ethernet adapter Ethernet 2:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

C:\Users\14457>
  • Linux: ip addr 或者 ifconfig
[root@172-1-2-107 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether fe:fc:fe:57:97:d3 brd ff:ff:ff:ff:ff:ff
    inet 172.1.2.107/24 brd 172.1.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a700:3b1d:2ecb:b615/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::c76d:c6ed:a0da:134b/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::3420:c803:4306:8126/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:eb:18:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:eb:18:28 brd ff:ff:ff:ff:ff:ff
[root@172-1-2-107 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.1.2.107  netmask 255.255.255.0  broadcast 172.1.2.255
        inet6 fe80::c76d:c6ed:a0da:134b  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::3420:c803:4306:8126  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::a700:3b1d:2ecb:b615  prefixlen 64  scopeid 0x20<link>
        ether fe:fc:fe:57:97:d3  txqueuelen 1000  (Ethernet)
        RX packets 775454896  bytes 179360239729 (167.0 GiB)
        RX errors 0  dropped 13260  overruns 0  frame 0
        TX packets 374818699  bytes 79897387858 (74.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 322815  bytes 236755648 (225.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 322815  bytes 236755648 (225.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:eb:18:28  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@172-1-2-107 ~]#

埠怎麼搞?

怎麼查埠?

知識點三: netstat -nlpt 檢視相關的監聽埠

[root@172-1-2-107 ~]# netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      10558/nginx: master
tcp        0      0 0.0.0.0:8020            0.0.0.0:*               LISTEN      10558/nginx: master
tcp        0      0 0.0.0.0:8021            0.0.0.0:*               LISTEN      10558/nginx: master
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      3369/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2700/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2701/cupsd
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      10558/nginx: master
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2963/master
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      17199/sshd: root@pt
tcp6       0      0 :::19500                :::*                    LISTEN      16411/java
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::8662                 :::*                    LISTEN      6970/java
tcp6       0      0 :::22                   :::*                    LISTEN      2700/sshd
tcp6       0      0 :::8663                 :::*                    LISTEN      16411/java
tcp6       0      0 ::1:631                 :::*                    LISTEN      2701/cupsd
tcp6       0      0 ::1:25                  :::*                    LISTEN      2963/master
tcp6       0      0 ::1:6010                :::*                    LISTEN      17199/sshd: root@pt
tcp6       0      0 :::2080                 :::*                    LISTEN      24031/n9e-agent
tcp6       0      0 :::8675                 :::*                    LISTEN      25849/java
tcp6       0      0 :::8682                 :::*                    LISTEN      5481/java
[root@172-1-2-107 ~]#

怎麼查埠詳細資訊?

知識點四: ps aux | grep 埠

[root@172-1-2-107 ~]# ps aux | grep 80
root       507  0.0  0.0  45080   412 ?        Ss    2021   0:00 /usr/lib/systemd/systemd-udevd
root       511  0.0  0.0 192580   172 ?        Ss    2021   0:00 /usr/sbin/lvmetad -f
root       881  0.2  0.0 115768  1380 ?        S     2021 1095:45 /bin/bash /usr/local/VMOptimizationTools/sangfor_vm_proxyd_w
root      1057  0.1  0.0 115780  1540 ?        S     2021 718:19 /bin/bash /usr/local/VMOptimizationTools/sangfor_watchdog
avahi     1500  0.1  0.0  30300  1180 ?        Ss    2021 744:14 avahi-daemon: registering [linux-987967.local]
root      2720  0.0  0.0 480244   480 ?        Ssl   2021   0:00 /usr/sbin/gdm
postfix   2971  0.0  0.0  91800   432 ?        S     2021   0:13 qmgr -l -t unix -u
root      4662  0.0  0.0 406180  1524 ?        Ssl   2021   2:54 /usr/libexec/packagekitd
colord    5065  0.0  0.0 410980   432 ?        Ssl   2021   0:00 /usr/libexec/colord
root      5481  0.2 12.3 3380612 479076 ?      Ssl   2021 745:03 java -Xms512M -Xmx512M -jar scf-uaa-server.jar
root      6970  0.2 19.4 3428024 754516 ?      Ssl   2021 608:40 java -Xms512M -Xmx512M -jar scf-biz-auth.jar
root     18086  0.0  0.0  51112  2120 ?        Ss   22:49   0:00 /usr/libexec/openssh/sftp-server
root     21308  0.0  0.0 112664   972 pts/2    S+   22:57   0:00 grep --color=auto 80
[root@172-1-2-107 ~]#

怎麼檢視服務詳細資訊

知識點五: ps -ef | grep 服務

[root@172-1-2-107 ~]# ps -ef | grep nginx
root     10558     1  0  2021 ?        00:00:00 nginx: master process ./nginx
nobody   16869 10558  0  2021 ?        00:01:03 nginx: worker process
nobody   16870 10558  0  2021 ?        00:01:46 nginx: worker process
root     32552 17985  0 23:00 pts/2    00:00:00 grep --color=auto nginx
[root@172-1-2-107 ~]#

怎麼殺埠?

知識點六: kill -9 pid

這裡的pid就是前面通過查服務獲取到的例如 10558這種,這個命令殺傷力比較大,我就不演示了。

怎麼快速的測試埠對外通不通?

寫到這裡,這是本文對於開發來說,最有意思的地方。因為我們部署一個專案,例如Node的專案、JAVA專案、Python專案,都要配環境、然後下載相關包和依賴,然後專案還要啟動半天,等個半死,最後發現那個埠有問題,然後再找網管或者自己開放埠,這樣子不好,其實可以並行著做,結合後面分屏。這裡的思路是你要知道你電腦有什麼環境,然後執行什麼命令可以開一個埠,現在大部分linux 系統都整合了python的環境,所以用python除錯埠簡直太香了。

知識點七: 用你熟悉的語言熟悉的命令除錯埠

  • 以Python2為例, 啟動一個web服務的命令是 python -m SimpleHTTPServer 8000

  • 以Python3為例,啟動一個web服務的命令是 python -m http.server 8000

    ataola@ataola-ubuntu:~$ python -m http.server 8000
    Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
    61.148.202.74 - - [12/Jan/2022 00:18:41] "GET / HTTP/1.1" 200 -
    61.148.202.74 - - [12/Jan/2022 00:18:41] code 404, message File not found
    61.148.202.74 - - [12/Jan/2022 00:18:41] "GET /favicon.ico HTTP/1.1" 404 -
    
  • 以PHP為例, 啟動一個web服務的命令是 php -S 127.0.0.1:8000

➜  ~ php -S 127.0.0.1:8000
[Wed Jan 12 00:20:42 2022] PHP 7.4.3 Development Server (http://127.0.0.1:8000) started

這樣是不是除錯埠方便多了,這裡建議用Python,php可能還需要再設定下才能外網訪問,至於其他語言的,歡迎讀者在評論區分享你知道的。

介面怎麼搞?

這裡是這樣子的一個場景,例如正常你是一個螢幕對吧,然後可能你去下什麼依賴,或者啟動一個大一點的專案要好久的,這個時候電腦螢幕不是卡住了嗎,總不能低頭玩手機吧,領導看到了多尷尬,而且幹不完的活留到晚上內卷嘛,不行的,不要內卷我。。。。。。

知識點八: 通過screen分屏可以並行著做很多事情,比如一個屏去下載依賴,一個螢幕去人肉查資料庫,一個螢幕去釋出前端的專案,而且他有個好處是,哪怕你關掉相關的ssh連線, 下次連上去還是能恢復到上次的工作環境,而且比如你在執行一個指令碼,你期望你關閉ssh連線後它還是可以工作,一種是搞後臺程式,另一種就是放到screen分屏裡面,都可以實現前面的效果。

具體的命令,你不需要了解太多,知道下面幾個就好了。

  • 建立一個名為zjt的session會話, screen -S zjt
  • 顯示出所有會話, screen -ls
  • 加入到zjt的session會話, screen -x zjt
  • detach zjt的這個session會話, screen -d zjt
  • 回到zjt的這個會話, screen -r zjt
  • 結束當前會話回到zjt會話, screen -d -r zjt
  • 殺掉zjt會話, screen -S zjt -X quit
  • 切換下一個分屏, CTRL + A +N
  • 重新命名這個分屏,CTRL + A, SHIFT +A
  • 這個分屏我不要了, 直接輸入exit

未分類

查記憶體free

➜  ~ free
              total        used        free      shared  buff/cache   available
Mem:        2035368     1532212      116216        2516      386940      322984
Swap:             0           0           0
➜  ~

查程式top

top - 00:42:51 up 88 days,  1:19,  5 users,  load average: 0.00, 0.00, 0.00
Tasks: 195 total,   1 running, 194 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  1.0 sy,  0.3 ni, 98.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1987.7 total,    113.0 free,   1496.4 used,    378.2 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    315.3 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    724 root      20   0  835284  30868   6036 S   1.0   1.5 963:45.30 hosteye
 701110 root      39  19  621624   6404   2764 S   0.3   0.3   7:54.05 bcm-agent
      1 root      20   0  168432   8624   4468 S   0.0   0.4  16:25.52 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.98 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     10 root      20   0       0      0      0 S   0.0   0.0  11:33.19 ksoftirqd/0
     11 root      20   0       0      0      0 I   0.0   0.0   7:44.51 rcu_sched
     12 root      rt   0       0      0      0 S   0.0   0.0   0:29.03 migration/0
     13 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs
     16 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
     17 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_kthre
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd
     19 root      20   0       0      0      0 S   0.0   0.0   0:04.94 khungtaskd
     20 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper
     21 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback
     22 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kcompactd0
     23 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd
     24 root      39  19       0      0      0 S   0.0   0.0   0:17.00 khugepaged
     70 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kintegrityd
     71 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kblockd
     72 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 blkcg_punt_bio
     73 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 tpm_dev_wq
     74 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 ata_sff
     75 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 md
     76 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 edac-poller
     77 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 devfreq_wq
     78 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdogd
     81 root      20   0       0      0      0 S   0.0   0.0   0:07.97 kswapd0
     82 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ecryptfs-kthrea

查磁碟df

➜  ~ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev              989060        0    989060   0% /dev
tmpfs             203540      960    202580   1% /run
/dev/vda1       61860632 10968544  48254460  19% /
tmpfs            1017684        0   1017684   0% /dev/shm
tmpfs               5120        0      5120   0% /run/lock
tmpfs            1017684        0   1017684   0% /sys/fs/cgroup
tmpfs             203536        0    203536   0% /run/user/0
overlay         61860632 10968544  48254460  19% /var/lib/docker/overlay2/a8b0c3c7f1df653e6d36241bb396312391771a12c0493ec67ae9f30f4e125fbf/merged
➜  ~

寫在最後

通過本文的學習,我相信讀者在運維方面已經掌握了一些“核武器”的技巧,不管是時間上,還是思路上都有一定的成效,在面臨真實環境的時候能夠做到不慌不亂、沉重冷靜、淡定,都是小場面,讓我用“核彈”試試,2333333333333。

相關文章