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 root@192.168.1.2:/usr/local/app //-r递归
提示是否保存密钥,并输入目标服务器的root密码(192.168.1.2),然后任务开始。
2.Ctrl+Z将任务暂停并挂起到后台:
[2]+ Stopped scp -r /usr/local/frp/ root@192.168.1.2:/usr/local/app
3.使用bg指令后台运行该任务
#bg 2
4.确认该任务状态
#jobs -l
[2] 24233 Running scp -r /usr/local/frp/ root@192.168.1.2:/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 root@192.168.10.2:/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 root@192.168.10.2:/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/ root@39.98.41.26:/usr/local/
- 此时复制开始,并占用当前界面,可以用Ctrl +Z放到后台
[2]+ Stopped scp -r /usr/local/frp_server/ root@39.98.41.26:/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/ root@39.98.41.26:/usr/local/
#fg 2 //调起scp -r /usr/local/frp_server/ root@39.98.41.26:/usr/local/指令,并在前台运行
###5.bg
将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。
- 查看后台任务
# job -l
[2]+ Stopped scp -r /usr/local/frp_server/ root@39.98.41.26:/usr/local/
- 调起scp -r /usr/local/frp_server/ root@39.98.41.26:/usr/local/指令,并在后台运行
#bg 2
[2]+ scp -r /usr/local/frp_server/ root@39.98.41.26:/usr/local/ &
- 确认状态
#jobs -l
[2] 24233 Running scp -r /usr/local/frp_server/ root@39.98.41.26:/usr/local/ &
###6.kill
用法1:通过jobs命令查看job号(假设为num),然后执行kill %num
#jobs -l
[2] 24233 Running scp -r /usr/local/frp_server/ root@39.98.41.26:/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/ root@39.98.41.26:/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
问题解决