云服务器EC2配置Swap分区解决Cannot Allocate Memory

 centos  云服务器EC2配置Swap分区解决Cannot Allocate Memory已关闭评论
9月 192019
 

今天在EC2(Centos 7)上使用nvm 安装node时出现下面错误提示:

# nvm install 8.16.1
Downloading and installing node v8.16.1…
Downloading https://nodejs.org/dist/v8.16.1/node-v8.16.1-linux-x64.tar.xz…
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
xz: (stdin): Cannot allocate memory
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Binary download failed, trying source.
Downloading https://nodejs.org/dist/v8.16.1/node-v8.16.1.tar.xz…
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
xz: (stdin): Cannot allocate memory
tar: Child returned status 1
tar: Error is not recoverable: exiting now
nvm: install v8.16.1 failed!

这台EC2内存只有1G,看来需要配个交换分区。

 

步骤

# 创建一个全0填充的2GB文件。InputFile利用Linux系统的/dev/zero。bs是BlockSize。

sudo dd if=/dev/zero of=/mnt/2GB.swap bs=1M count=2048

 

# 把该文件格式化为Swap文件

sudo mkswap /mnt/2GB.swap

 

# 把该Swap文件挂载为Swap分区

sudo swapon /mnt/2GB.swap

 

# 检查是否成功挂载。Swap那一行现在就不是0了。

$ free -m

total        used        free      shared  buff/cache   available

Mem:            963         677          74          78         211          52

Swap:          2047          84        1963

# 配置fstab,使开机时自动挂载Swap文件为Swap分区

sudo vim /etc/fstab

 

# 在/ect/fstab中添加

/mnt/2GB.swap none swap sw 0 0

 

CentOS系统中常用查看系统信息和日志命令

 centos  CentOS系统中常用查看系统信息和日志命令已关闭评论
9月 042019
 

一、系统日志文件(可以通过cat或tail命令来查看)

/var/log/message # 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

/var/log/secure # 与安全相关的日志信息

/var/log/maillog # 与邮件相关的日志信息

/var/log/cron # 与定时任务相关的日志信息

/var/log/spooler # 与UUCP和news设备相关的日志信息

/var/log/boot.log # 守护进程启动和停止相关的日志消息

二、系统信息

uname -a # 查看内核/操作系统/CPU信息

cat /etc/issue

cat /etc/redhat-release # 查看操作系统版本

cat /proc/cpuinfo  # 查看CPU信息

hostname # 查看计算机名

lspci -tv # 列出所有PCI设备

lsusb -tv # 列出所有USB设备

lsmod # 列出加载的内核模块

env # 查看环境变量

三、资源

free -m # 查看内存使用量和交换区使用量

df -h # 查看各分区使用情况

du -sh <目录名> # 查看指定目录的大小

grep MemTotal /proc/meminfo # 查看内存总量

grep MemFree /proc/meminfo # 查看空闲内存量

uptime # 查看系统运行时间、用户数、负载

cat /proc/loadavg # 查看系统负载

 

四、磁盘和分区

mount | column -t # 查看挂接的分区状态

fdisk -l # 查看所有分区

swapon -s # 查看所有交换分区

hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)

dmesg | grep IDE # 查看启动时IDE设备检测状况

五、网络

ifconfig # 查看所有网络接口的属性

iptables -L # 查看防火墙设置

route -n # 查看路由表

netstat -lntp # 查看所有监听端口

netstat -antp # 查看所有已经建立的连接

netstat -s # 查看网络统计信息

六、进程

ps -ef # 查看所有进程

top # 实时显示进程状态(另一篇文章里面有详细的介绍)

七、用户 

w # 查看活动用户

id <用户名> # 查看指定用户信息

last # 查看用户登录日志

cut -d: -f1 /etc/passwd # 查看系统所有用户

cut -d: -f1 /etc/group # 查看系统所有组

crontab -l # 查看当前用户的计划任务

八、服务

chkconfig –list # 列出所有系统服务

chkconfig –list | grep on # 列出所有启动的系统服务

九、程序

rpm -qa # 查看所有安装的软件包

 

来自:https://blog.csdn.net/twc829/article/details/75284332

Linux下文件分割与合并(split, cat)(转)

 linux  Linux下文件分割与合并(split, cat)(转)已关闭评论
9月 032019
 

1、前记

Linux学习系列主要侧重数据处理的命令实战学习,包括但不限于awk,grep,sed等命令的实战学习。

2、文件分割(split)

2.1 命令语法

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

参数解释

  • -a:指定输出文件名的后缀长度,默认为2个(aa,ab…);
  • -d:指定输出文件名的后缀用数字代替;
  • -l<行数>:行数分割模式,指定每多少行切成一个小文件;
  • -b<字节>:二进制分割模式,指定每多少字切成一个小文件,支持单位:m,k;
  • -C<字节>:文件大小分割模式,与-b参数类似,但切割时尽量维持每行的完整性;
  • –help:显示帮助;
  • –version:显示版本信息;
  • [输出文件名]:设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。

2.2 使用实例

(1)查看文件总行数

wc -l seven.sql

输出:3307194 seven.sql,即约330万行,分割时以30万行为单位。

(2)分割文件

split -l 300000 seven.sql /home/kinson/Desktop/test1/seven_
--解释:
--参数"l"表示按行分割;
--"300000"表示每个文件30w行
--"seven.sql"为将分割文件;
--"/home/kinson/Desktop/test1/seven_"为分割后的文件路径与命名。

(3)分割结果

分割结果

3、文件合并(cat)

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

cat主要有如下三大功能:

  • 一次显示整个文件:cat filename;
  • 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件;
  • 将几个文件合并为一个文件:cat file1 file2 > file。

3.1 命令语法

cat [-AbeEnstTuv] [--help] [--version] fileName 

参数解释

  • -A:–show-all,等价于 -vET;
  • -b: –number-nonblank,对非空输出行编号;
  • -e:等价于 -vE;
  • -E: –show-ends,在每行结束处显示 $;
  • -n:–number,对输出的所有行编号,由1开始对所有输出的行数编号;
  • -s:–squeeze-blank,有连续两行以上的空白行,就代换为一行的空白行;
  • -t:与 -vT 等价;
  • -T:–show-tabs,将跳格字符显示为 ^I;
  • -v:–show-nonprinting,使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外。

3.2 使用实例

(1)合并全部已分割文件并检验行数

cat test1/seven_* >newseven
wc -l newseven

输出:3307194 newseven,与原文件seven.sql行数一致。

(2)合并部分已分割文件并检验行数

cat test1/seven_aa > seven_part
cat test1/seven_ab >> seven_part
cat test1/seven_ac >> seven_part
wc -l seven_part 

>>表示追加,输出900000 seven_part,即合并了3个文件,每个30万行,所以合并后文件总行数为90万行。

转自链接:https://www.jianshu.com/p/014ec71b0215

linux下分别使用find和grep进行查找

 linux  linux下分别使用find和grep进行查找已关闭评论
8月 302019
 

网上的资料,这个介绍的很详细,收藏下:

在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。

区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。

(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。

一.find命令

    基本格式:find  path expression

1.按照文件名查找

(1)find / -name httpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf  #在/etc目录下文件httpd.conf
(3)find /etc -name ‘*srm*’  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name ‘srm*’   #表示当前目录下查找文件名开头是字符串‘srm’的文件

2.按照文件特征查找

(1)find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2   # 查找在系统中最后48小时访问的文件
(3)find / -empty   # 查找在系统中为空的文件或者文件夹
(4)find / -group cat   # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1   #查找在系统中最后24小时里修改过的文件
(7)find / -user fred   #查找在系统中属于fred这个用户的文件
(8)find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k   #查找出小于1000KB的文件

3.使用混合查找方式查找文件

 参数有: !,-and(-a),-or(-o)。

(1)find /tmp -size +10000c -and -mtime +2   #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred -or -user george   #在/目录下查找用户是fred或者george的文件文件
(3)find /tmp ! -user panda  #在/tmp目录中查找所有不属于panda用户的文件

二、grep命令

   基本格式:find  expression

 1.主要参数

[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。

pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ – ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
* :有字符,长度可以为0。

2.实例

(1)grep ‘test’ d*  #显示所有以d开头的文件中包含 test的行
(2)grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中包含test的行
(3)grep ‘[a-z]\{5\}’ aa   #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
(4)grep magic /usr/src  #显示/usr/src目录下的文件(不含子目录)包含magic的行
(5)grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行

(6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

 

转自:https://www.cnblogs.com/xudong-bupt/archive/2013/03/23/2976793.html

CentOS 7 下安装 MySQL 5.7

 centos, mysql  CentOS 7 下安装 MySQL 5.7已关闭评论
8月 212019
 

原文链接:https://blog.csdn.net/u011886447/article/details/79796802

从 CentOS 7 系统开始,MariaDB 成为 yum 源中默认的数据库安装包。在 CentOS 7 及以上的系统中使用 yum 安装 MySQL 包将无法使用 MySQL。您可以选择使用完全兼容的 MariaDB,或依照本文介绍配置来继续使用 MySQL。本文以在 CentOS 7 下安装 MySQL 5.7.21 为例。

 

  1. 检查 MariaDB 是否安装

yum list installed | grep mariadb

 

 

 

  1. 卸载全部MariaDB 相关

yum -y remove mariadb*

 

  1. 下载 MySQL 的 YUM 源

进入到要下载到的路径:cd /usr/local/src

 

下载:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

 

  1. 安装MySQL 的 YUM 源

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

 

  1. 检查MySQL 的 YUM 源是否安装成功

yum repolist enabled | grep “mysql.*-community.*”

 

 

 

如图所示则安装成功。

 

  1. 查看 MySQL 版本

yum repolist all | grep mysql

 

 

 

  1. 安装 MySQL

yum install mysql-community-server

 

一直输 y 就可以了。

 

  1. 启动 MySQL 服务

systemctl start mysqld

 

  1. 测试连接 MySQL 服务

mysql -u root 或者 mysql

 

——————————————————————————–

 

提示:

 

刚安装的 MySQL 是没有密码的,这时如果出现:

 

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO),解决如下:

 

① 停止 MySQL 服务:systemctl stop mysqld

 

② 以不检查权限的方式启动 MySQL: mysqld –user=root –skip-grant-tables &

 

③ 再次输入 mysql -u root 或者 mysql,这次就可以进来了。

 

④ 更新密码:

 

MySQL 5.7 以下版本:UPDATE mysql.user SET Password=PASSWORD(‘123456′) where USER=’root’;

 

MySQL 5.7 版本:UPDATE mysql.user SET authentication_string=PASSWORD(‘123456′) where USER=’root’;

 

⑤ 刷新:flush privileges;

 

⑥ 退出:exit;

 

设置完之后,输入 mysql -u root -p,这时输入刚设置的密码,就可以登进数据库了。

 

——————————————————————————–

 

  1. 防火墙设置

远程访问 MySQL,需要开放 3306 端口:

 

firewall-cmd –permanent –zone=public –add-port=3306/tcp

 

firewall-cmd –permanent –zone=public –add-port=3306/udp

 

firewall-cmd –reload

 

如果是 CentOS 7,需要将 MySQL 服务加入防火墙,然后重启防火墙:

 

firewall-cmd –zone=public –permanent –add-service=mysql

 

systemctl restart firewalld

 

——————————————————————————–

 

提示:

 

在输入 firewall-cmd –permanent –zone=public –add-port=3306/tcp 时可能会报 ‘FirewallD is not running’,是说防火墙本身就没有打开,解决方法:

 

① 查看防火墙状态:systemctl status firewalld,会发现状态是 dead,即防火墙未开启。

 

② 打开防火墙:systemctl start firewalld

 

③ 再次查看防火墙状态:systemctl status firewalld,这时会发现状态变为 running,即防火墙开启成功。

 

 

 

 

 

 

这时再输入开放 3306 端口的命令就没有问题了。

 

——————————————————————————–

 

  1. 设置允许远程访问

默认情况下 MySQL 是不允许远程连接的,所以在 Java 项目或者 MySQLWorkbench 等数据库连接工具连接服务器上的 MySQL 服务的时候会报 “Host ‘x.x.x.x’ is not allowed to connect to this MySQL server”。可以通过下面的设置解决。详细可以参考之前写的一篇文章 XXX is not allowed to connect to this MySQL server。

 

① grant all privileges on *.* to root@”%” identified by ‘0’;

 

② flush privileges;

 

——————————————————————————–

 

提示:

 

在执行第一条命令的时候,可能会报:

 

‘ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.’ 需要让我们重置密码。原因是因为我刚刚的命令中设置的数据库密码是0,这个密码过于简单,不符合 MySQL 的安全要求。只要重新设置一个复杂点的密码就可以了:

 

mysql> SET PASSWORD = PASSWORD(‘xxx’);   //xxx 是重置的新的复杂的密码

 

——————————————————————————–

 

思考:

 

之前设置简单密码是没有问题的,可能原因:

 

① 可能目前环境是 CentOS 7 + MySQL 5.7.21,安全性有所提升。

 

② 也有可能是之前的数据库设置过

 

mysql> set global validate_password_policy=0;

 

mysql> set global validate_password_length=1;

 

允许设置简单密码。

 

  1. 相关命令

MySQL 相关:

 

systemctl start mysqld    #启动mysql

 

systemctl stop mysqld    #停止mysqld

 

systemctl restart mysqld    #重启mysqld

 

systemctl enable mysqld    #设置开机启动

 

systemctl status mysqld    #查看 MySQL Server 状态

 

防火墙相关:

 

systemctl status firewalld    #查看防火墙状态

 

systemctl start firewalld    #打开防火墙

 

systemctl stop firewalld    #关闭防火墙

 

systemctl restart firewalld    #重启防火墙

 

 

您不能安装“Network Link Conditioner”偏好设置。“Network Link Conditioner”偏好设置是随 macOS 安装,不能被替换。

 mac  您不能安装“Network Link Conditioner”偏好设置。“Network Link Conditioner”偏好设置是随 macOS 安装,不能被替换。已关闭评论
8月 162019
 

其实出现这个提示,基本都是以前使用过Network Link Conditioner, 后来关闭后,Network Link Conditioner从“系统设置”里看不到了,然后再次从“Additional_Tools_for_Xcode_xxxx.dmg”中的Hardware目录里点击Network Link Conditioner .prefPane出现这样的提示, 其实这个程序已经安装了,可以通过操作spotlight找到并打开:

  • 按住 Command + Space 打开 spotlight 全局搜索
  • 搜索 Network Link Conditioner
  • 在结果列表里双击打开
  • 自动添加到设置面板并打开

DONE!

Ubuntu 16.04 升级内核 安装 BBR

 bbr, ubuntu  Ubuntu 16.04 升级内核 安装 BBR已关闭评论
3月 272019
 

 BBR 只能配合 Linux Kernel 4.10 以上内核才能使用, 所以需要升级内核


查看内核版本,如达到要求略

# uname -r

4.4.0-1075-aws  //默认4.4.0,因此需要升级

//切换到root用户

$ sudo -s  

# wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh

# chmod +x bbr.sh 

# ./bbr.sh

———- System Information ———-

 OS      : Ubuntu 16.04.5 LTS

 Arch    : x86_64 (64 Bit)

 Kernel  : 4.4.0-1075-aws

—————————————-

 Auto install latest kernel for TCP BBR

 URL: https://teddysun.com/489.html

—————————————-

Press any key to start…or Press Ctrl+C to cancel

按任意键后会显示

Info: Getting latest kernel version…

———— kernel setting ————

1) 4.14

……

…..

234) 4.20.16

235) 4.20.17

236) 5.0

237) 5.0.1

238) 5.0.2

239) 5.0.3

240) 5.0.4

which kernel you’d select (default 5.0.4):  // 按回车键选择最新版本 

your selection: 5.0.4

–2019-03-27 02:55:58–  https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0.4/linux-modules-5.0.4-050004-generic_5.0.4-050004.201903231634_amd64.deb

Resolving kernel.ubuntu.com (kernel.ubuntu.com)… 91.189.94.216

Connecting to kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:443… connected.

HTTP request sent, awaiting response… 200 OK

Length: 46593520 (44M) [application/x-debian-package]

Saving to: ‘linux-modules-5.0.4-amd64.deb’

     0K ………. ………. ………. ………. ……….  0%  160K 4m44s

    50K ………. ………. ………. ………. ……….  0%  321K 3m33s

   100K ………. ………. ………. ………. ……….  0% 24.3M 2m22s

   150K ………. ……..

……..

done

Info: The system needs to reboot.

Do you want to restart system? [y/n]y  //按“y“重启

./bbr.sh: line 271:  8748 Terminated              reboot



#######重启后##########

$ uname -r

5.0.4-050004-generic

$ sudo -s


#分别输入下面命令检查

# sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = reno cubic bbr


# sysctl net.ipv4.tcp_congestion_control

net.ipv4.tcp_congestion_control = bbr


# sysctl net.core.default_qdisc

net.core.default_qdisc = fq


# lsmod | grep bbr

tcp_bbr                20480  6


看到bbr即完成


ubuntu 16.04安装shadowsocks(ss) gui 客户端

 ubuntu  ubuntu 16.04安装shadowsocks(ss) gui 客户端已关闭评论
11月 282018
 

如何安装ss服务器请自行搜索,本文只讲解在ubuntu 16.04/14.04下ss gui客户端安装,请依次执行: 

1. 安装 shadowsocks-qt5

sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5 

2. 配置ss服务器连接

打开shadowsocks-qt5, 然后通过菜单 连接->添加->手动 , 添加服务器ip,端口,密码,加密方式,本地地址,本地端口(如:1080)等, 保存后连接


3. 配置本机网络连接

在系统设置中,选择网络 –> 网络代理 –> 方法手动 –> Socks主机 127.0.0.1   1080。应用到整个系统即可

ubuntu 16.04 下安装 pyaudio

 python, ubuntu  ubuntu 16.04 下安装 pyaudio已关闭评论
11月 202018
 
1.先使用命令安装:
sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0

2. 再使用下面命令即可
pip install pyaudio