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
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
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
免密拷貝
通過建立信任關係,可以實現不輸入密碼。
這裏假設A的IP:192.168.10.1
B的IP:192.168.10.2
需要從A免密碼輸入複製文件至B。
1.在主機A上執行如下命令來生成配對密鑰:
# ssh-keygen -t rsa
- 按照提示操作,注意,不要輸入passphrase。提示信息如下(一路回車即可):
默認在 /root/.ssh/ 下生成id_rsa和id_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目錄並不存在,需要手動創建。
監測服務器網絡狀況
說明:
1、查看某個進程的帶寬佔用需要明確知道PID、進程名字、發送速度、接收速度。
2、很遺憾,在Linux原生的軟件中沒有這樣的一款,只能額外裝,最符合以上的情況就只有nethogs。
3、nethogs可以指定網卡,但是不能指定PID,這就是一個缺陷。
1.安裝nethogs
# yum install -y nethogs //CentOS下先裝上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下的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
問題解決