一些惊艳到我的运维实施技巧和思路

因为穷,买不起房,买不起车,也娶不到老婆,不是很安分,总想着靠死工资过日子也不是个事啊(额,也投资了一些基金,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
[[email protected] ~]# 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
[[email protected] ~]# 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

[[email protected] ~]#

端口怎么搞?

怎么查端口?

知识点三: netstat -nlpt 查看相关的监听端口

[[email protected] ~]# 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: [email protected]
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: [email protected]
tcp6       0      0 :::2080                 :::*                    LISTEN      24031/n9e-agent
tcp6       0      0 :::8675                 :::*                    LISTEN      25849/java
tcp6       0      0 :::8682                 :::*                    LISTEN      5481/java
[[email protected] ~]#

怎么查端口详细信息?

知识点四: ps aux | grep 端口

[[email protected] ~]# 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
[[email protected] ~]#

怎么查看服务详细信息

知识点五: ps -ef | grep 服务

[[email protected] ~]# 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
[[email protected] ~]#

怎么杀端口?

知识点六: kill -9 pid

这里的pid就是前面通过查服务获取到的例如 10558这种,这个命令杀伤力比较大,我就不演示了。

怎么快速的测试端口对外通不通?

写到这里,这是本文对于开发来说,最有意思的地方。因为我们部署一个项目,例如Node的项目、JAVA项目、Python项目,都要配环境、然后下载相关包和依赖,然后项目还要启动半天,等个半死,最后发现那个端口有问题,然后再找网管或者自己开放端口,这样子不好,其实可以并行着做,结合后面分屏。这里的思路是你要知道你电脑有什么环境,然后运行什么命令可以开一个端口,现在大部分linux 系统都集成了python的环境,所以用python调试端口简直太香了。

知识点七: 用你熟悉的语言熟悉的命令调试端口

  • 以Python2为例, 启动一个web服务的命令是 python -m SimpleHTTPServer 8000

  • 以Python3为例,启动一个web服务的命令是 python -m http.server 8000

    [email protected]:~$ python -m http.server 8000
    Serving HTTP on 0.0.0.0 port 8000 (//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 (//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。