【Linux】服務器運維筆記


title: Devops
date: 2019-01-14 19:10:00
tags: Devops

@hucong

目錄導航

#服務器運維筆記

查看內存的使用量方法

文章參考:Linux查看CPU和內存使用情況
               Linux下查看內存使用情況方法總結

  • 在做Linux系統優化的時候,物理內存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的內存資源的使用情況。下面的清單詳細的列出了Linux系統下通過視圖工具或命令行來查看內存使用情況的各種方法。
  • Linux服務器之前的文件傳輸:scp指令

1./proc/meminfo

查看RAM使用情況最簡單的方法是通過/proc/meminfo。這個動態更新的虛擬文件實際上是許多其他內存相關工具(如:free / ps / top)等的組合顯示。/proc/meminfo列出了所有你想了解的內存的使用情況。進程的內存使用信息也可以通過/proc//statm 和 /proc//status 來查看。

#[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# cat /proc/meminfo
MemTotal:        3924684 kB
MemFree:          626336 kB
Buffers:          176804 kB
Cached:           770276 kB
SwapCached:            0 kB
Active:          2138488 kB
Inactive:         985060 kB
Active(anon):    1517364 kB
Inactive(anon):   659268 kB
Active(file):     621124 kB
Inactive(file):   325792 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194296 kB
SwapFree:        4194296 kB
Dirty:                72 kB
Writeback:             0 kB
AnonPages:       2176500 kB
Mapped:            43996 kB
Shmem:               164 kB
Slab:             120816 kB
SReclaimable:      91068 kB
SUnreclaim:        29748 kB
KernelStack:        3656 kB
PageTables:         8516 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6156636 kB
Committed_AS:    2690380 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       19640 kB
VmallocChunk:   34359716220 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1937408 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        6016 kB
DirectMap2M:     2091008 kB
DirectMap1G:     2097152 kB

2.atop

atop命令是一個終端環境的監控命令。它顯示的是各種系統資源(CPU, memory, network, I/O, kernel)的綜合,並且在高負載的情況下進行了彩色標註。

注:可能需要安裝 yum install atop

[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# atop

ATOP - iZ2ze7gl52onms2ithgtodZ                  2019/01/14  17:18:28                  ---------                  10s elapsed
PRC |  sys    0.45s  |  user   0.98s  |  #proc     90  |  #tslpi   456  |  #tslpu     0  |  #zombie    0  |  #exit	0  |
CPU |  sys	 5%  |  user     10%  |  irq	   0%  |  idle    184%  |  wait      0%  |  curf 2.50GHz  |  curscal   ?%  |
cpu |  sys	 3%  |  user	  5%  |  irq	   0%  |  idle     92%  |  cpu001 w  0%  |  curf 2.50GHz  |  curscal   ?%  |
cpu |  sys	 2%  |  user	  5%  |  irq	   0%  |  idle     92%  |  cpu000 w  0%  |  curf 2.50GHz  |  curscal   ?%  |
CPL |  avg1    0.24  |  avg5    0.22  |  avg15   0.19  |  csw     4766  |  intr    3609  |                |  numcpu     2  |
MEM |  tot     3.7G  |  free  606.2M  |  cache 754.1M  |  dirty   2.3M  |  buff  172.7M  |  slab  118.7M  |                |
SWP |  tot     4.0G  |  free    4.0G  |                |                |                |  vmcom   2.6G  |  vmlim   5.9G  |
DSK |           vda  |  busy      0%  |  read       1  |  write      7  |  MBr/s   0.00  |  MBw/s   0.01  |  avio 2.38 ms  |
NET |  transport     |  tcpi	   9  |  tcpo      12  |  udpi       0  |  udpo       0  |  tcpao      0  |  tcppo      0  |
NET |  network       |  ipi        9  |  ipo       12  |  ipfrw      0  |  deliv      9  |  icmpi      0  |  icmpo      0  |
NET |  eth0    ----  |  pcki       3  |  pcko       6  |  si    0 Kbps  |  so    4 Kbps  |  erri       0  |  erro       0  |
NET |  lo      ----  |  pcki       6  |  pcko       6  |  si    0 Kbps  |  so    0 Kbps  |  erri       0  |  erro	0  |

  PID   TID  RUID      EUID      THR   SYSCPU   USRCPU  VGROW   RGROW   RDDSK  WRDSK  ST  EXC S  CPUNR   CPU  CMD        1/1
 2351     -  root      root       73    0.40s    0.88s     0K      0K      0K     8K  --    - S      0   13%  java
 2076     -  root      root	 205    0.02s    0.04s -4904K  -4904K      4K     0K  --    - S      0    1%  java
26032     -  root      root	   1    0.02s    0.02s  2500K    472K      0K     0K  --    - R      0    0%  atop
  941     -  root      root	  15    0.00s    0.02s     0K      0K      0K     0K  --    - S      0    0%  java
  783     -  root      root	  17    0.01s    0.01s     0K      0K      0K     0K  --    - S      0    0%  AliYunDun
 1528     -  mysql     mysql	  44    0.00s    0.01s     0K      0K      0K     0K  --    - S      0    0%  mysqld
  768     -  root      root        4    0.00s    0.00s     0K      0K      0K     0K  --    - S      1    0%  AliYunDunUpdat
 1722     -  root      root        6    0.00s    0.00s     0K      0K	   0K     0K  --    - S      1    0%  aliyun-service
  996     -  nscd      nscd        8    0.00s    0.00s     0K      0K      0K     0K  --    - S      0    0%  nscd
  939     -  root      root 	   2    0.00s    0.00s     0K      0K      0K     0K  --    - S      0    0%  wrapper
   41     -  root      root 	   1    0.00s    0.00s     0K      0K      0K     0K  --    - S      0    0%  khugepaged
  270     -  root      root        1    0.00s    0.00s     0K	   0K	   0K    20K  --    - S      0    0%  jbd2/vda1-8
  358     -  root      root        1    0.00s    0.00s     0K	   0K	   0K     4K  --    - S      1    0%  flush-252:0

3.htop
htop命令顯示了每個進程的內存實時使用率。它提供了所有進程的常駐內存大小、程序總內存大小、共享庫大小等的報告。列表可以水平及垂直滾動。

注:可能需要安裝 yum install htop

# htop

Alt
End with an example of getting some data out of the system or using it for a little demo

4.top

Explain how to run the automated tests for this system

[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# top

top - 17:26:28 up 11 days,  1:41,  1 user,  load average: 0.17, 0.17, 0.17
Tasks:  90 total,   1 running,  88 sleeping,   1 stopped,   0 zombie
Cpu(s): 14.2%us,  5.8%sy,  0.0%ni, 80.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3924684k total,  3301188k used,   623496k free,   176852k buffers
Swap:  4194296k total,        0k used,  4194296k free,   772740k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                       
 2076 root      20   0 3693m 873m  13m S 39.6 22.8   1552:28 java                                                           
  941 root      20   0 2443m  61m 3784 S  0.3  1.6  76:33.71 java                                                           
26072 root      20   0 15036 1196  932 R  0.3  0.0   0:00.02 top                                                            
    1 root      20   0 19364 1536 1212 S  0.0  0.0   0:00.50 init                                                           
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                       
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.36 migration/0                                                    
    4 root      20   0     0    0    0 S  0.0  0.0   0:02.30 ksoftirqd/0                                                    
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                    
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.87 watchdog/0                                                     
    7 root      RT   0     0    0    0 S  0.0  0.0   0:00.34 migration/1                                                    
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/1                                                    
    9 root      20   0     0    0    0 S  0.0  0.0   0:02.37 ksoftirqd/1                                                    
   10 root      RT   0     0    0    0 S  0.0  0.0   0:00.64 watchdog/1                                                     
   11 root      20   0     0    0    0 S  0.0  0.0   0:32.02 events/0                                                       
   12 root      20   0     0    0    0 S  0.0  0.0   0:32.92 events/1                                                       
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                                                         
   14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper                                                        
   15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                                                          
   16 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr                                                      
   17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                                                             
   18 root      20   0     0    0    0 S  0.0  0.0   0:02.10 sync_supers                                                    
   19 root      20   0     0    0    0 S  0.0  0.0   0:02.61 bdi-default                                                    
   20 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                  
   21 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/1                                                  
   22 root      20   0     0    0    0 S  0.0  0.0   0:05.13 kblockd/0                                                      
   23 root      20   0     0    0    0 S  0.0  0.0   0:00.75 kblockd/1                                                      
   24 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                         
   25 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify                                                   
   26 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_hotplug                                                  
   27 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_aux                                                        
   28 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_sff/0                                                      
   29 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_sff/1                                                      
   30 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksuspend_usbd                                                  
   31 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khubd                                                          
   32 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kseriod     

5.free

free命令是一個快速查看內存使用情況的方法,它是對 /proc/meminfo 收集到的信息的一個概述。

[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# free
             total       used       free     shared    buffers     cached
Mem:       3924684    3300932     623752          0     176852     772764
-/+ buffers/cache:    2351316    1573368
Swap:      4194296          0    4194296

6.nmon
nmon是一個基於ncurses的系統基準測試工具,它可以監控CPU、內存、I/O、文件系統及網絡資源等的互動模式。對於內存的使用,它可以實時的顯示 總/剩餘內存、交換空間等信息。

                                                                                                                          
x   ------------------------------ ----------------------------------------------------------------------------------------x
x    _ __  _ __ ___   ___  _ __    	 For help type H or ...                                                            x
x   | '_ \| '_ ` _ \ / _ \| '_ \          nmon -?  - hint                                                                  x
x   | | | | | | | | | (_) | | | |         nmon -h  - full details                                                          x
x   |_| |_|_| |_| |_|\___/|_| |_|                                                                                          x
x                                        To stop nmon type q to Quit                                                       x
x   ------------------------------                                                                                         x
x                                                                                                                          x
x   CentOS release 6.5 (Final) CentOS release 6.5 (Final)                                                                  x
x   Vendor=GenuineIntel Model=Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz                                                 x
x   MHz=2499.994 bogomips=4999.98          lscpu:CPU=2 Little Endian                                                       x
x   ProcessorChips=1 PhyscalCores=1              Sockets=1 Cores=1 Thrds=2                                                 x
x   Hyperthreads  =2 VirtualCPUs =2              MHz=2499 max=0 min=0                                                      x
x                                                                                                                          x
x   Use these keys to toggle statistics on/off:                                                                            x
x     c = CPU         l = CPU Long-term     - = Faster screen updates                                                      x
x     C = " WideView  U = Utilisation       + = Slower screen updates                                                      x
x     m = Memory      V = Virtual memory    j = File Systems                                                               x
x     d = Disks       n = Network           . = only busy disks/procs                                                      x
x     r = Resource    N = NFS               h = more options                                                               x
x     k = Kernel      t = Top-processes     q = Quit                                                                       x
x--------------------------------------------------------------------------------------------------------------------------x

輸入m查看內存信息

x  Memory and Swap                                                                                                         x
x PageSize:4KB   RAM-Memory  Swap-Space       High-Memory     Low-Memory                                                   x
x Total (MB)         3832.7      4096.0       - not in use   - not in use                                                  x
x Free  (MB)          570.7      4096.0                                                                                    x
x Free Percent         14.9%      100.0%                                                                                   x
x Linux Kernel Internal Memory (MB)                                                                                        x
x                        Cached=     787.2     Active=    2109.0                                                           x
x Buffers=     173.9 Swapcached=       0.0  Inactive =     981.5                                                           x
x Dirty  =       0.1 Writeback =       0.0  Mapped   =      43.2                                                           x
x Slab   =     119.1 Commit_AS =    2633.0 PageTables=       8.4                                                           x
x                                                                                                                          x

7.ps

ps命令可以實時的顯示各個進程的內存使用情況。

Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。

你可以使用 “–sort”選項對進程進行排序,例如按RSS進行排序:

[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# ps aux --sort -rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2076  9.7 22.8 3782296 894944 ?      Sl   Jan03 1554:00 /usr/local/jdk1.8.0_144/bin/java -Djava.util.logging.confi
root      2351 10.7 21.6 3626568 847788 ?      Sl   Jan03 1711:29 /usr/local/jdk1.8.0_144/bin/java -Djava.util.logging.confi
mysql     1528  0.0 10.0 1652972 395236 ?      Sl   Jan03   6:58 /usr/sbin/mysqld --basedir=/usr --datadir=/data/mysql --plu
root       941  0.4  1.5 2502644 62464 ?       Sl   Jan03  76:38 /usr/local/cloudmonitor/jre/bin/java -Djava.compiler=none -
root       783  0.1  0.2 119800 10200 ?        S<sl Jan07  20:38 /usr/local/aegis/aegis_client/aegis_10_57/AliYunDun
nginx     2329  0.0  0.1 111400  5552 ?        S    Jan03   0:39 nginx: worker process
nginx     2330  0.0  0.1 111116  5328 ?        S    Jan03   0:34 nginx: worker process
root     25778  0.0  0.1 144484  4160 pts/0    T    16:34   0:00 vim apache-tomcat-saas/
root     23771  0.0  0.1  98316  4080 ?        Ss   10:29   0:00 sshd: root@pts/0 
root       768  0.0  0.0  24832  3388 ?        Ssl  Jan07   1:56 /usr/local/aegis/aegis_update/AliYunDunUpdate
root      1722  0.0  0.0  80740  2824 ?        Ssl  Jan03   2:00 /usr/sbin/aliyun-service
root      2328  0.0  0.0 110352  2168 ?        Ss   Jan03   0:00 nginx: master process nginx
root     23776  0.0  0.0 108548  1992 pts/0    Ss   10:30   0:00 -bash
root       842  0.0  0.0 251196  1932 ?        Sl   Jan03   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
ntp       1119  0.0  0.0  26592  1672 ?        Ss   Jan03   0:02 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      1154  0.0  0.0 108336  1552 ?        S    Jan03   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/data/mysql --socket
root         1  0.0  0.0  19364  1536 ?        Ss   Jan03   0:00 /sbin/init
nscd       996  0.0  0.0 630204  1496 ?        Ssl  Jan03   0:05 /usr/sbin/nscd
root       939  0.0  0.0 116616  1424 ?        Sl   Jan03   5:13 /usr/local/cloudmonitor/wrapper/bin/./wrapper /usr/local/cl
root      1704  0.0  0.0 117332  1316 ?        Ss   Jan03   0:02 crond
root      1111  0.0  0.0  66628  1192 ?        Ss   Jan03   0:00 /usr/sbin/sshd
root     26317  0.0  0.0 110348  1116 pts/0    R+   17:40   0:00 ps aux --sort -rss
root       360  0.0  0.0  10912   996 ?        S<s  Jan03   0:00 /sbin/udevd -d
root      1762  0.0  0.0  10908   980 ?        S<   Jan03   0:00 /sbin/udevd -d
root      1763  0.0  0.0  10908   980 ?        S<   Jan03   0:00 /sbin/udevd -d
root      1744  0.0  0.0   4064   552 tty1     Ss+  Jan03   0:00 /sbin/mingetty /dev/tty1
root      1750  0.0  0.0   4064   552 tty4     Ss+  Jan03   0:00 /sbin/mingetty /dev/tty4
root      1746  0.0  0.0   4064   548 tty2     Ss+  Jan03   0:00 /sbin/mingetty /dev/tty2
root      1748  0.0  0.0   4064   548 tty3     Ss+  Jan03   0:00 /sbin/mingetty /dev/tty3
root      1752  0.0  0.0   4064   548 tty5     Ss+  Jan03   0:00 /sbin/mingetty /dev/tty5
root      1754  0.0  0.0   4064   548 tty6     Ss+  Jan03   0:00 /sbin/mingetty /dev/tty6
root         2  0.0  0.0      0     0 ?        S    Jan03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jan03   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    Jan03   0:02 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    Jan03   0:00 [migration/0]
root         6  0.0  0.0      0     0 ?        S    Jan03   0:00 [watchdog/0]

8.vmstat
vmstat命令顯示實時的和平均的統計,覆蓋CPU、內存、I/O等內容。例如內存情況,不僅顯示物理內存,也統計虛擬內存。

[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 587428 178144 807096    0    0     1     6   21    4  7  3 89  0  0	
[root@iZ2ze7gl52onms2ithgtodZ apache-tomcat-saas]# vmstat -s
      3924684  total memory
      3337380  used memory
      2156380  active memory
      1005400  inactive memory
       587304  free memory
       178144  buffer memory
       807108  swap cache
      4194296  total swap
            0  used swap
      4194296  free swap
     14111955 non-nice user cpu ticks
          403 nice user cpu ticks
      6167455 system cpu ticks
    170956417 idle cpu ticks
        51025 IO-wait cpu ticks
            0 IRQ cpu ticks
         2305 softirq cpu ticks
            0 stolen cpu ticks
      2407046 pages paged in
     10653024 pages paged out
            0 pages swapped in
            0 pages swapped out
    426365627 interrupts
    480378631 CPU context switches
   1546501469 boot time
        90515 forks

服務器之間的文件傳輸

將測試服務器192.168.1.1的/usr/local/frp文件夾複製到正式服務器192.168.1.2的指定位置/usr/local/app下

正常拷貝

1.使用scp指令通過ssh協議傳輸

#scp -r /usr/local/frp [email protected]:/usr/local/app     //-r遞歸

提示是否保存密鑰,並輸入目標服務器的root密碼(192.168.1.2),然後任務開始。
2.Ctrl+Z將任務暫停並掛起到後臺:

[2]+  Stopped                 scp -r /usr/local/frp/ [email protected]:/usr/local/app

3.使用bg指令後臺運行該任務

#bg 2

4.確認該任務狀態

#jobs -l
[2]  24233 Running                 scp -r /usr/local/frp/ [email protected]:/usr/local/app &

完成後,frp文件夾就在192.168.1.2的/usr/local/app/frp

可參考 Linux查看、關閉、後臺運行任務

免密拷貝

通過建立信任關係,可以實現不輸入密碼。

這裏假設A的IP:192.168.10.1

B的IP:192.168.10.2

需要從A免密碼輸入複製文件至B。
1.在主機A上執行如下命令來生成配對密鑰:

# ssh-keygen -t rsa 
  • 按照提示操作,注意,不要輸入passphrase。提示信息如下(一路回車即可):

默認在 /root/.ssh/ 下生成id_rsaid_rsa.pub文件
2.在主機B上存放生成密鑰
首先先確認主機B上是否已經存在了一個密鑰authorized_keys(默認在/root/.ssh/authorized_keys )
如果存在,就將驗證文件追加上去
A機器上執行:

# scp .ssh/id_rsa.pub [email protected]:/root/.ssh/a.pub

B機器上執行

# cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys

如果B機器不存在authorized_keys驗證文件,直接將 .ssh 目錄中的 id_rsa.pub 文件複製到 主機B 的 ~/.ssh/ 目錄中,並改名爲 authorized_keys。

# scp .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys 

以後從A主機scp到B主機就不需要密碼了。
使用此方法需要注意:複製的兩臺計算機需要用相同的賬戶名,這裏都是用的root。爲了安全起見,需要在兩臺機器中創建相同的賬號,然後在A上用su命令切換至賬號下,執行第1步,第二步中複製文件時可能.ssh目錄並不存在,需要手動創建。

參考:Linux下用SCP無需輸入密碼傳輸文件

監測服務器網絡狀況

說明:
1、查看某個進程的帶寬佔用需要明確知道PID、進程名字、發送速度、接收速度。
2、很遺憾,在Linux原生的軟件中沒有這樣的一款,只能額外裝,最符合以上的情況就只有nethogs。
3、nethogs可以指定網卡,但是不能指定PID,這就是一個缺陷。

1.安裝nethogs

# yum install -y nethogs       //CentOS下先裝上EPEL

安裝EPEL

2.使用方法:

[root@iz8vbia7opzm9l175id9izz canal-deployer-1.1.2]# nethogs
Ethernet link detected
                      Waiting for first packet to arrive (see sourceforge.net bug 1019381)

NetHogs version 0.8.5

    PID USER     PROGRAM                                                                     DEV        SENT      RECEIVED       
   9340 root     sshd: root@pts/1=                                                           eth0        0.343       0.094 KB/sec
      ? root     172.26.100.222:445-59.111.181.70:50003                                                  0.021       0.026 KB/sec
      ? root     172.26.100.222:11111-149.129.68.40:54482                                                0.011       0.014 KB/sec
      ? root     172.26.100.222:9290-176.119.4.49:47548                                                  0.000       0.000 KB/sec
      ? root     172.26.100.222:23901-5.188.206.38:56953                                                 0.000       0.000 KB/sec
   1060 root     /usr/local/aegis/aegis_client/aegis_10_57/AliYunDun                                     0.000       0.000 KB/sec
   8249 mysql    /usr/sbin/mysqld                                                                        0.000       0.000 KB/sec
      ? root     unknown TCP                                                                             0.000       0.000 KB/sec

  TOTAL                                                                                                  0.375       0.134 KB/sec
  • DEV列顯示設備名,SEND是服務器發送的流量,RECEIVED服務器接收的流量。
  • 按 m 可以切換統計方式 : 流量速度KB/sec 或 總數{KB /B /m}
  • 圖中第二行就是測試中的流量記錄,表示59.111.181.70這臺客戶端去訪問我的445 端口所佔用的帶寬。
  • 在PID 那一列,可以使用 lsof -p pid 查看進程測試。或者ps aux|grep PID查看進程情況
  • 用lsof -i :端口號,來查看是哪些進程在佔用。如查看80端口lsof -i :445或者用netstat -tunlp |grep 445用於查看指定的端口進程情況

文檔參考:
               1.Linux下進程/程序網絡帶寬佔用情況查看工具 – NetHogs
               2.Linux查看當前使用的網卡 以及 查看某進程使用的網絡帶寬情況 以及 端口占用的情況

Linux配置SWAP分區

開啓 SWAP

1、創建8GB用於交換分區的文件:

# dd if=/dev/zero of=/mnt/swap bs=1M count=8192  

注:block_size、number_of_block 大小可以自定義,比如 bs=1M count=1024 代表設置 1G 大小 SWAP 分區。

2、設置交換分區文件:

mkswap /mnt/swap

3、立即啓用交換分區文件

swapon /mnt/swap

注:如果在 /etc/rc.local中有 swapoff -a 需要修改爲 swapon -a

4、設置開機時自啓用 SWAP 分區:

需要修改文件 /etc/fstab 中的 SWAP 行,添加

/mnt/swap swap swap defaults 0 0

注:/mnt/swap 路徑可以修改,可以根據創建的 SWAP 文件具體路徑來配置。

5、修改 swpapiness 參數

在 Linux 系統中,可以通過查看 /proc/sys/vm/swappiness 內容的值來確定系統對 SWAP 分區的使用原則。當 swappiness 內容的值爲 0 時,表示最大限度地使用物理內存,物理內存使用完畢後,纔會使用 SWAP 分區。當 swappiness 內容的值爲 100 時,表示積極地使用 SWAP 分區,並且把內存中的數據及時地置換到 SWAP 分區。

查看修改前爲 0,需要在物理內存使用完畢後纔會使用 SWAP 分區:

可以使用下述方法臨時修改此參數,假設我們配置爲空閒內存少於 20% 時才使用 SWAP 分區:

echo 20 >/proc/sys/vm/swappiness

若需要永久修改此配置,在系統重啓之後也生效的話,可以修改 /etc/sysctl.conf 文件,並增加以下內容:

#vim /etc/sysctl.conf

修改爲vm.swappiness=20,保存後輸入

# sysctl -p

關閉 SWAP

當系統出現內存不足時,開啓 SWAP 可能會因頻繁換頁操作,導致 IO 性能下降。如果要關閉 SWAP,可以採用如下方法。

1、free -m 查詢 SWAP 分區設置:

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:          8191           0        8191

2、使用命令 swapoff 關閉 SWAP,比如:

swapoff /mnt/swap  

3、修改 /etc/fstab 文件,刪除或註釋相關配置,取消 SWAP 的自動掛載:

# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 /                       ext4    defaults        1 1
#/mnt/swap swap swap defaults 0 0

4、 通過 free -m 確認 SWAP 已經關閉。

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:             0           0           0

5、 swappiness 參數調整:
可以使用下述方法臨時修改此參數,這裏配置爲 0%:

echo 0 >/proc/sys/vm/swappiness    

若需要永久修改此配置,在系統重啓之後也生效的話,可以修改 /etc/sysctl.conf 文件,並增加以下內容:

# vim /etc/sysctl.conf

設置vm.swappiness=0

# sysctl -p

參考文檔:雲服務器 ECS Linux SWAP 配置概要說明

Linux下將指令後臺運行、關閉、查看任務

###1.&
直接加到指令的後面,就可以將該條指令放到後臺運行,不建議在還需要交互的指令上使用&,會直接忽略(比如輸入密碼確認)

  • 運行java程序canal-receiver
#java -jar canal-receiver.jar start 1 &    //執行一個java程序

###2.Ctrl +Z

可以將一個正在前臺執行的命令放到後臺,並且處於暫停狀態

  • 將本機上的/usr/local/frp_server/文件夾複製到39.98.41.26的/usr/local/目錄下
#scp -r /usr/local/frp_server/ [email protected]:/usr/local/ 
  • 此時複製開始,並佔用當前界面,可以用Ctrl +Z放到後臺
[2]+  Stopped                 scp -r /usr/local/frp_server/ [email protected]:/usr/local/

 [命令號] + 狀態                 執行指令

###3.jobs

查看當前有多少在後臺運行的命令

jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的進程標識。

###4.fg
將後臺中的命令調至前臺繼續運行。如果後臺中有多個命令,可以用fg %jobnumber(是命令編號,不是進程號)將選中的命令調出。

# job -l               //查看後臺任務
[2]+  Stopped                 scp -r /usr/local/frp_server/ [email protected]:/usr/local/
#fg 2                 //調起scp -r /usr/local/frp_server/ [email protected]:/usr/local/指令,並在前臺運行

###5.bg
將一個在後臺暫停的命令,變成在後臺繼續執行。如果後臺中有多個命令,可以用bg %jobnumber將選中的命令調出。

  • 查看後臺任務
# job -l               
[2]+  Stopped                 scp -r /usr/local/frp_server/ [email protected]:/usr/local/
  • 調起scp -r /usr/local/frp_server/ [email protected]:/usr/local/指令,並在後臺運行
#bg 2              
[2]+ scp -r /usr/local/frp_server/ [email protected]:/usr/local/ &
  • 確認狀態
#jobs -l
[2]  24233 Running                 scp -r /usr/local/frp_server/ [email protected]:/usr/local/ &

###6.kill
用法1:通過jobs命令查看job號(假設爲num),然後執行kill %num

#jobs -l
[2]  24233 Running                 scp -r /usr/local/frp_server/ [email protected]:/usr/local/ &
#kill 24233
Killed by signal 15.

用法2:通過ps命令查看job的進程號(PID,假設爲pid),然後執行kill pid
注:ps命令詳解

#ps -aux            //a:顯示所有程序 u:以用戶爲主的格式來顯示 x:顯示所有程序,不以終端機來區分
root     24271  0.0  0.0  57700  2184 pts/0    S    11:53   0:00 scp -r /usr/local/frp_server/ [email protected]:/usr/local/
#kill 24271
Killed by signal 15.

###7.nohup

如果讓程序始終在後臺執行,即使關閉當前的終端也執行(之前的&做不到),這時候需要nohup。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。關閉中斷後,在另一個終端jobs已經無法看到後臺跑得程序了,此時利用ps(進程查看命令)

#nohup java -jar canal-receiver.jar start 1 

###8.Ctrl+C
前臺進程的終止

參考於:linux後臺運行和關閉、查看後臺任務

升級Linux下的python版本

安裝指定版本的python

1.安裝指定版本的python
以python-3.5.4爲例,在/usr/local目錄下創建python目錄,將python安裝到此目錄下,原版本爲2.7
創建文件夾

mkdir /usr/local/python3.5

下載

wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz

解壓

tar xvf Python-3.5.4.tgz
cd python-3.5.4

安裝

./configure --prefix=/usr/local/python3.5     //安裝到/usr/local/python3.5這個目錄中
make
make install

安裝後/usr/local/python3.5的目錄層次

[root@iz8vbia7opzm9l175id9izz python3.5]# ll
總用量 20268
drwxr-xr-x  2 root     root         4096 2月  21 20:57 bin
drwxr-xr-x  3 root     root         4096 2月  21 20:45 include
drwxr-xr-x  4 root     root         4096 2月  21 20:45 lib
drwxr-xr-x 17 tempuser tempuser     4096 2月  21 20:44 Python-3.5.4
-rw-r--r--  1 root     root     20733411 2月  21 20:29 Python-3.5.4.tgz
drwxr-xr-x  3 root     root         4096 2月  21 20:45 share

更新python環境配置

2.將/usr/bin目錄下的原來的Python的軟連接重新更名
保險起見先將/usr/bin下原版本的python備份(按實際文件路徑而定)

cp /usr/bin/python /usr/bin/python.bk
cp /usr/bin/python2.7 /usr/bin/python2,7.bk
mv /usr/bin/python /usr/bin/python2.7

改完後在訪問python就會出現 -bash: /usr/bin/python: 沒有那個文件或目錄

3、將新版本大的python的軟連接增加到/usr/bin目錄下

ln -s /usr/local/python3.5/bin/python3.5 /usr/bin/python

4、將版本python3.5命令加入環境變量

vim /etc/profile

文末添加 export PATH=$PATH:/usr/local/python3.5/bin
文件生效

source /etc/profile

5、檢查python版本

[root@iz8vbia7opzm9l175id9izz bin]# python -V
Python 3.5.4

附:常見問題

1.pip指令異常:
-bash: /usr/bin/pip: /usr/bin/python2: 壞的解釋器: 沒有那個文件或目錄

說明/usr/bin/python2引用的pip路徑有誤

vim /usr/bin/pip

發現原本第一行爲 #!/usr/bin/python2 不是安裝過程指定的python,手動修改爲 #!/usr/bin/python2
問題解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章