ssh免交互生成密钥及远程ssh

#### ssh免交互生成密钥及远程ssh
“`
ssh-keygen -t rsa -N “” -f ~/.ssh/id_rsa
ssh -o stricthostkeychecking=no root@ip -p port
“`
#### Centos 4T以上硬盘分区
感谢[codemanship](https://blog.csdn.net/codemanship/article/details/47056673 “codemanship”)
“`
parted /dev/sde
p(打印)
mklabel gpt
mkpart primary 0 -1
Ignore
quit
mkfs.ext4 /dev/sde1
“`

#### iotop使用
“`shell
# 选项

-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。

# iotop常用快捷键
左右箭头:改变排序方式,默认是按IO排序。

r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。
“`

#### MegaCLI 使用
“`
# 查看每块硬盘的状态,主要看是否重建完成和是否正常加入
# 如果没有加入,证明里面有脏raid信息,建议使用MegaRaid操作
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL|grep ‘Firmware state’
“`

#### Centos安装中文
“`
CentOS6:yum -y install fonts-chinese
CentOS7: yum groupinstall “fonts”

“`

#### Centos7 修改时区
“`
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</pre>
“`

#### Centos7 修改主机名
“`
hostnamectl set-hostname C7-Basic
“`

#### vim编辑器中文乱码
“`
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
“`
查看正常是系统字符集,编辑是vim字符集

#### 系统历史命令要加大
>HISTFILESIZE与HISTSIZE的区别
在linux系统中,history命令可以输出历史命令,历史命令默认保存在文件~/.bash_history中。

>HISTFILESIZE 与 HISTSIZE都是history命令需要用到的两个shell变量,这两个变量到底有什么区别呢?

>HISTFILESIZE 定义了在 .bash_history 中保存命令的记录总数,可以理解为.bash_history文件中最多只有HISTFILESIZE行

>HISTSIZE 定义了 history 命令输出的记录数,即输出.bash_history文件中的最后HISTSIZE行

“`shell
HISTFILESIZE=4000
HISTSIZE=4000
“`

#### CentOS 7添加开机启动服务/脚本

##### 默认
“`shell
systemctl enable jenkins.service #设置jenkins服务为自启动服务
sysstemctl start jenkins.service #启动jenkins服务
“`

##### 传统方式一

“`shell
# 赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh

# 打开/etc/rc.d/rc/local文件,在末尾增加如下内容
/opt/script/autostart.sh

# 在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
“`

##### 传统方式二

“`shell
# 将脚本移动到/etc/rc.d/init.d目录下
mv /opt/script/autostart.sh /etc/rc.d/init.d

# 增加脚本的可执行权限
chmod +x /etc/rc.d/init.d/autostart.sh

# 添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
chkconfig –add autostart.sh
chkconfig autostart.sh on
“`

[以上内容摘自Linux公社](https://www.linuxidc.com/Linux/2016-12/138079.htm “以上内容摘自Linux公社”)

#### 切割文件
5位,数字,100行一个文件
“`
split -a 5 -d -l 100 /data/bak_resouce/20190319_kimissbbs.sql kmbbs_
“`
#### 文件系统只读
一般没什么用,如果系统运行时出现,先去排查系统磁盘问题
“`
mount -o rw,remount /
“`

#### Nginx awk分析
“`
awk ‘{a[$2]++;if(a[$2]>100){b[$2]++}}END{for(i in b){print i,a[i]}}’ my.access.log

“`

#### Centos7 常用命令
“`shell
# 获取主机名
hostnamectl
# 修改主机名
hostnamectl set-hostname dev

vim /etc/hostname

“`

#### shell将文本转换为整齐的表格,格式化
“`shell
命令: Column
使用的参数:
-t :表格,默认以空格间隔
-s:需要配合-t使用,指定分隔符
“`
#### Xargs向后引用
“`shell
xargs 后向引用 xargs -i cp {} /tmp
“`

#### 临时增加IP
“`shell
ifconfig eth0 192.168.1.1 netmask 255.255.255.0

“`
#### 单网卡多IP
“`shell
# 临时增加
ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up
# 永久增加
# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=”yes”
IPADDR=192.168.1.1
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

# 永久增加2
IPADDR0=”192.168.1.150″
IPADDR1=”192.168.1.151″
IPADDR2=”192.168.1.152″

“`

以上内容来自[敲代码的C罗](https://blog.csdn.net/lv302677589/article/details/79087893 “敲代码的C罗”)

#### 命令行格式
“`shell
column -t
使用的参数:
-t :表格,默认以空格间隔
-s:需要配合-t使用,指定分隔符
“`

#### 快速扫描端口
“`shell
nc -nvz 192.168.1.100 1-65535

“`

#### 获取当前IDC出口IP
“`shell
curl ifconfig.me
curl http://members.3322.org/dyndns/getip
elinks www.123cha.com | awk -F ‘[][]’ ‘/ip:/{print $4}’
“`
#### 查看网络运行情况
##### 获取连接情况
“`shell
ss -ant|awk ‘{++S[$1]}END{for (a in S)print a,S[a]}’
“`
注释:
“`shell
{++S[$2]} 将某列作为数据存进S
END{for (a in S) 结束后,执行for循环
print a,S[a]} 打印数据中的元素和统计数
“`
>http://blog.csdn.net/hustsselbj/article/details/47438781

#### 系统中统计连接数前10的IP
“`shell
ss -ant|awk -F ‘[ :]+’ ‘{print $4}’|awk ‘/^[0-9]/{++S[$0]}END{for (a in S)print a,S[a]}’|sort -nk 2 -r |head -10|awk ‘{sum+=$2}END{print sum}’

1.用分号和空格间隔,获取IP列(去掉端口)
2.把内容输入到awk队列,然后自增后输出到第二列
3.sort基于第2列,降序排列
4.head 取前10行
5.把第二列统计
#如果需要统计所有数量,把head -10去掉就可以了
“`

#### 随机生成强密码
方法一 使用openssl
“`shell
for i in `seq 100`;do openssl rand -base64 12;done;
“`
方法二 使用mkpasswd
摘自[三口酥屋](http://blog.csdn.net/liangdsh “三口酥屋”),感谢分享
“`shell
#光盘自带
yum install expect tcl
“`
“`shell
-l (密码的长度定义, 默认是 9)
-d (数字个数, 默认是 2)
-c (小写字符, 默认是 3)
-C (大写字符, 默认是 2)
-s (特殊字符, 默认是 1)
-v (详细。。。)
“`
创建了一个长度为20位,包括数字个数,包含小写字母个数,包含大写字母个数,包含特殊符号个数。
“`shell
mkpasswd -l 20 -d 5 -c 5 -C 5 -s 5
0f>pLe27GF8\tRA$v(/9
“`

修改一个用户的密码为强密码
“`shell
mkpasswd -l 20 -d 5 -c 5 -C 5 -s 5 -v ding
spawn /bin/passwd boxhill
Changing password for user boxhill.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
password for ding is \nP}2UPF7jf]O:51{yf5

“`

#### 查看系统硬件资源
服务器品牌和型号
“`shell
dmidecode |grep -A4 ‘System Information’
“`
查看主板信息
“`shell
dmidecode -t 2
“`
查询内存信息
“`shell
dmidecode -t 16

“`
查看当前内存数和插槽数
“`shell
dmidecode|grep -P -A5 “Memory Device” |grep Size

“`
查看内存插槽详细信息
“`shell
dmidecode -t 17

“`
查看CPU信息
“`shell
dmidecode -t 4

“`
查看RAID或磁盘信息
“`shell
cat /proc/scsi/scsi

“`
查看内存速率
“`shell
dmidecode|grep -A16 “Memory Device”|grep ‘Speed’
“`

#### 常用命令
“`
系统
  # uname -a # 查看内核/操作系统/CPU信息
  # head -n 1 /etc/issue # 查看操作系统版本
  # 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 # 查看所有安装的软件包
其他常用命令整理如下:
  查看主板的序列号:dmidecode | grep -i ‘serial number’
  用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)
  查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i ‘cpu’][dmidecode -t processor]
  查看内存信息:cat /proc/meminfo [free -m][vmstat]
  查看板卡信息:cat /proc/pci
  查看显卡/声卡信息:lspci |grep -i ‘VGA'[dmesg | grep -i ‘VGA’]
  查看网卡信息:dmesg | grep -i ‘eth'[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i ‘eth’]
  查看PCI信息:lspci (相比cat /proc/pci更直观)
  查看USB设备:cat /proc/bus/usb/devices
  查看键盘和鼠标:cat /proc/bus/input/devices
  查看系统硬盘信息和使用情况:fdisk & disk – l & df
  查看各设备的中断请求(IRQ):cat /proc/interrupts
  查看系统体系结构:uname -a
  查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]
  查看硬件信息,包括bios、cpu、内存等信息:dmidecode
  测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev ?
  查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v
  查看当前系统中已经应用的补丁:showrev –p
  显示当前的运行级别:who –rH
  查看当前的bind版本信息:nslookup –class=chaos –q=txt version.bind
  查看硬件信息:dmesg | more
  显示外设信息, 如usb,网卡等信息:lspci
  查看已加载的驱动:
  lsnod
  lshw
  查看当前处理器的类型和速度(主频):psrinfo -v
  打印当前的OBP版本号:prtconf -v
  查看硬盘物理信息(vendor, RPM, Capacity):iostat –E
  查看磁盘的几何参数和分区信息:prtvtoc /dev/rdsk/c0t0d0s
  显示已经使用和未使用的i-node数目:
  df –F ufs –o i
  isalist –v
  对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
  主机CPU信息:Cpuinfo
  主机DMA通道信息:Dma
  文件系统信息:Filesystems
  主机中断信息:Interrupts
  主机I/O端口号信息:Ioprots
  主机内存信息:Meninfo
  Linux内存版本信息:Version
备注: proc – process information pseudo-filesystem 进程信息伪装文件系统
“`

#### 机房带宽测速
大促来临,需要为外网IP增加带宽,需要测试是否生效

##### 软件选择
“`shell
# speedtest-cli
https://github.com/sivel/speedtest-cli
# 下载
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
“`
执行
“`shell
# 直接执行测试,自动选择节点
python speedtest.py
# 查看所有节点,获取ID
./speedtest.py –list|grep -i beijing
# 指定节点测试
python speedtest.py –server 18462
“`

#### 增加前后对比
增加前
“`shell
Download: 458.67 Mbit/s
Upload: 154.39 Mbit/s
“`
增加后
“`shell
Download: 458.67 Mbit/s
Upload: 154.39 Mbit/s
“`

#### 备注
>机房通常在带宽充足的时候会放开限制,当带宽资源不足时,才会限制带宽,所以,如果你的带宽是300M,可能测试出500M的数据也是正常,可以和机房确认

>speedtest-cli测试不是很准确,需要多次测量求平均值

>iperf是另外的工具,机房建议使用,有兴趣的可以学习下
https://iperf.fr/

#### /var/logs/文件解读
“`shell
var/log/messages #包括整体系统信息,其中也包含系统启动期间的日志。
#此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。

/var/log/dmesg #包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。

/var/log/auth.log #包含系统授权信息,包括用户登录和使用的权限机制等。

/var/log/boot.log #包含系统启动时的日志。

/var/log/daemon.log #包含各种系统后台守护进程日志信息。

/var/log/dpkg.log #包括安装或dpkg命令清除软件包的日志。

/var/log/kern.log #包含内核产生的日志,有助于在定制内核时解决问题。

/var/log/lastlog #记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。

/var/log/maillog /var/log/mail.log #包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。

/var/log/user.log #记录所有等级用户信息的日志。

/var/log/Xorg.x.log #来自X的日志信息。

/var/log/alternatives.log #更新替代信息都记录在这个文件中。

/var/log/btmp #记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。

/var/log/cups #涉及所有打印信息的日志。

/var/log/anaconda.log #在安装Linux时,所有安装信息都储存在这个文件中。

/var/log/yum.log #包含使用yum安装的软件包信息。

/var/log/cron #每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。

/var/log/secure #包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。

/var/log/wtmp或/var/log/utmp #包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。

/var/log/faillog #包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
“`
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
“`
/var/log/httpd/或/var/log/apache2 #包含服务器access_log和error_log信息。

/var/log/lighttpd/ #包含light HTTPD的access_log和error_log。

/var/log/mail/ #这个子目录包含邮件服务器的额外日志。

/var/log/prelink/ #包含.so文件被prelink修改的信息。

/var/log/audit/ #包含被 Linux audit daemon储存的信息。

/var/log/samba/ #包含由samba存储的信息。

/var/log/sa/ #包含每日由sysstat软件包收集的sar文件。

/var/log/sssd/ #用于守护进程安全服务。
“`
除了手动存档和清除这些日志文件以外,还可以使用logrotate在文件达到一定大小后自动删除。可以尝试用vi,tail,grep和less等命令查看这些日志文件。

#### 解锁Fail2ban封锁的一个IP,sshd是配置文件中的域名字
“`
fail2ban-client set sshd unbanip 10.15.203.50
“`

#### 用法
“`
find . -mtime N
# 实际上你应该这样理解..
N * 24
+1 内表示 1 * 24 +24小时以外..
+0 才表示 0 * 24 +24小时以外
1 表示 1*24 + 24 到 24 之间..
0 表示 0*24 + 24 到 0 之间..
-1 表示 0*24 +24 内,甚至为未来时间…
“`
记住0也是自然数….

![](index_files/4da7d652-c076-41c2-80a4-e653aaba2269.jpg)

#### 过滤目录
-path ./a -o -path ./b -prune -o -type f

#### 磁盘测速hdparm
“`shell
-a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
-A<0或1> 启动或关闭读取文件时的快取功能。
-c<I/O模式> 设定IDE32位I/O模式。
-C 检测IDE硬盘的电源管理模式。
-d<0或1> 设定磁盘的DMA模式。
-f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。
-g 显示硬盘的磁轨,磁头,磁区等参数。
-h 显示帮助。
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I 直接读取硬盘所提供的硬件规格信息。
-k<0或1> 重设硬盘时,保留-dmu参数的设定。
-K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。
-m<磁区数> 设定硬盘多重分区存取的分区数。
-n<0或1> 忽略硬盘写入时所发生的错误。
-p<PIO模式> 设定硬盘的PIO模式。
-P<磁区数> 设定硬盘内部快取的分区数。
-q 在执行后续的参数时,不在屏幕上显示任何信息。
-r<0或1> 设定硬盘的读写模式。
-S<时间> 设定硬盘进入省电模式前的等待时间。
-t 评估硬盘的读取效率(不经过磁盘cache)。
-T 平估硬盘快取的读取效率。
-u<0或1> 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
-W<0或1> 设定硬盘的写入快取。
-X<传输模式> 设定硬盘的传输模式。
-y 使IDE硬盘进入省电模式。
-Y 使IDE硬盘进入睡眠模式。
-Z 关闭某些Seagate硬盘的自动省电功能。
“`

测试
“`shell
hdparm -tT /dev/vdc1
“`

#### page allocation failure
https://yq.aliyun.com/articles/228285
“`
vm.zone_reclaim_mode = 1
vm.min_free_kbytes = 512000
“`

#### 磁盘空间占满的排查思路
cannot create temp file for here-document: No space left on device
由于磁盘空间不够导致,一般是代日志满了,检查服务日志和系统日志

#### 磁盘修复
“`shell
fsck -y -C -t ext3 /dev/sda1
一般情况下修复完成后,所有文件移动到 lost+found目录,文件名会被改变
-C 显示进度条
-t 指定文件系统类型
-y 默认自动yes修复
“`
以上内容摘自[琴酒网络](https://www.cnblogs.com/ginvip/ “琴酒网络”)

#### 磁盘系统只读
简单处理
“`shell
mount -o rw,remount /
“`
如果提示device is busy 使用fuser解决占用
“`shell
fuser -m /boot ##将会显示使用这个模块的pid
fuser -mk /boot ##将会直接kill那个pid
“`
有的时候也不好使,只能重启了

以上内容摘自[琴酒网络](https://www.cnblogs.com/ginvip/ “琴酒网络”)

#### linux 挂载错误Transport endpoint is not connected
“`
mount了mfs后,重新挂载之后,出现如下错误:
/usr/local/mfs/bin/mfsmount -H 192.168.103.101 /mnt/
fuse: bad mount point `/mnt/’: Transport endpoint is not connected
see: /usr/local/mfs/bin/mfsmount -h for help
解决方法:
1、kill进程;
2、umount
3、重新mount
ps aux | grep mfs
umount –l /mnt
/usr/local/mfs/bin/mfsmount -H 192.168.103.101 /mnt/
“`

#### Centos SSH自动断开
“`shell
修改/etc/ssh/sshd_config文件
ClientAliveCountMax 3 服务器发出请求后客户端没有响应的次数, 就自动断开
ClientAliveInterval 60 表示每分钟发送一次
“`
#### 制作Swap分区,MySQL被OOM
“`shell
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
# /etc/fstab增加
/swapfile swap swap defaults 0 0
“`

#### 关闭IPV6

##### 方法 1
/etc/sysctl.conf 添加
“`shell
net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 =1
“`

如果想要为特定的网卡禁止IPv6,比如,对于enp0s3,添加下面的行。
“`shell
net.ipv6.conf.enp0s3.disable_ipv6 =1
“`
执行下面的命令来使设置生效。
“`shell
sysctl -p
“`

##### 方法 2(未测试)

要在运行的系统中禁止IPv6,依次输入下面的命令:

“`shell
echo 1>/proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1>/proc/sys/net/ipv6/conf/default/disable_ipv6
或者
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
“`
就是这样。现在IPv6已经禁止了。

#### 修改系统运行级别
#### 操作系统:Centos5/6
“`shell
修改/etc/inittab
“`
#### 操作系统:Centos7
##### 方法一
“`shell
systemctl isolate multi-user.target
“`
##### 方法二
“`shell
systemctl set-default multi-user.target
“`
本质是修改/etc/systemd/system/default.target的软链接

##### 手动
“`shell
rm -f /etc/systemd/system/default.target
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
“`

#### Linux下删除大文件(硬连接方式)
>原理:
当多个文件共同指向同一inode、inode链接数N>1、删除任何一个文件都是巨快。因为、此时删除的仅仅是指向inode的指针,而当N=1时、则不一样了、此时删除的文件相关的所有数据块、所以慢

测试:

“`shell
root@ # ln stock.ibd stock.id.hdlk
root@ # ls stock.* -l
-rw-rw—- 1 mysql mysql 9196 Apr 14 23:03 stock.frm
-rw-r–r– 2 mysql mysql 19096666112 Apr 15 09:55 stock.ibd
-rw-r–r– 2 mysql mysql 19096666112 Apr 15 09:55 stock.id.hdlk
“`

你会发现stock.ibd的INODES属性变成了2;

“`shell
root@127.0.0.1 : test 21:39:34> drop table stock ;
Query OK, 0 rows affected (0.99 sec)
“`

1秒不到就删除完成; 也就是DROP TABLE不用再HANG这么久了。

但table是删除了,数据文件还在,所以你还需要最后数据文件给删除。

“`shell
root # rm stock.id.hdlk

“`
最后一步删除原始大文件也可以选择rsync来删除、比rm快多了

#### 压缩传输数据
服务器两台A和B,A可以免密钥登录B

“`shell
yum install pv lz4
time tar -c Oracle9i-32-win/ |pv|lz4 -B4|ssh -c arcfour128 -o”MACs umac-64@openssh.com” 192.168.0.244 “lz4 -d |tar -xC /tmp”
“`

#### 文件描述符设置

在bash中,有个ulimit命令,提供了对shell及该shell启动的进程的可用资源控制。主要包括打开文件描述符数量、用户的最大进程数量、coredump文件的大小等。
>在centos 5/6 等版本中,资源限制的配置可以在 /etc/security/limits.conf 设置,针对root/user等各个用户或者*代表所有用户来设置。 当然,/etc/security/limits.d/ 中可以配置,系统是先加载limits.conf然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。 一个配置示例如下:

“`shell
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
“`
>不过,在CentOS 7/RHEL 7的系统中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf 文件的配置作用域缩小了一些。
limits.conf只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。登录用户的限制,与上面讲的一样,通过 /etc/security/limits.conf 和 limits.d 来配置即可。

对于systemd service的资源限制,如何配置呢?
全局的配置,放在文件
“`shell
/etc/systemd/system.conf

/etc/systemd/user.conf
“`
同时,也会加载两个对应的目录中的所有.conf文件(默认没有)
“`shell
/etc/systemd/system.conf.d/*.conf

/etc/systemd/user.conf.d/*.conf
“`

其中
“`shell
system.conf 是系统实例使用的,
user.conf用户实例使用的。

一般的sevice,使用system.conf中的配置即可。
systemd.conf.d/*.conf中配置会覆盖system.conf。
“`

“`shell
DefaultLimitCORE=infinity
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
“`

注意:修改了system.conf后,需要重启系统才会生效。

针对单个Service,也可以设置,以nginx为例。
“`shell

编辑
/usr/lib/systemd/system/nginx.service
或者
/usr/lib/systemd/system/nginx.service.d/my-limit.conf 文件,做如下配置:
“`
“`shell
[Service]
LimitCORE=infinity
LimitNOFILE=65535
LimitNPROC=65535
“`
运行如下命令,才能生效。
“`shell
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
“`

> 注意:CentOS7自带的/etc/security/limits.d/20-nproc.conf里面默认设置了非root用户的最大进程数为4096,limits.conf设置没效果,limit.d目录中的配置覆盖了。

参考文档:
man systemd
man systemd-system.conf
man bash 搜索一下ulimit

#### Centos 6 x86_64 glibc 2.12 升级2.14
“`shell
rpm -Uvh glibc-2.14.1-6.x86_64.rpm glibc-common-2.14.1-6.x86_64.rpm glibc-headers-2.14.1-6.x86_64.rpm glibc-devel-2.14.1-6.x86_64.rpm nscd-2.14.1-6.x86_64.rpm
“`

#### U盘部署系统经验
>U盘安装系统时候,要注意引导设置中选择硬盘,而不是U盘,要不引导信息被写入U盘,系统就白装了

#### 增加硬盘(阿里云环境)
备注:阿里云购买磁盘,注意和服务器相同分区

“`shell
# 格式化磁盘
fdisk -l
fdisk /dev/sdb
输入n
输入p
输入1,添加主分区
回车到结束
wq保存退出

# 格式化磁盘
mkfs.ext4 /dev/sdb1

# 手动挂载
mount /dev/sdb1 /data

# 设置开机启动(/etc/fstab增加)
/dev/sdb1 /data ext4 defaults 0 0
“`

#### 失败案例
>情况: 阿里云购买100GB磁盘,准备扩容,在分区保存时用了10多分钟,非常不正常,格式化时间也用了10多分钟。这两个过程应该非常快,大家遇到一定注意,释放后重新购买。

>故障:本着怀疑的态度,对硬盘测速,hdparm -tT /dev/vdc1 执行后服务器直接中断,系统重启用了20分钟,起来后,心磁盘挂载不上,提示没有格式化。

建议1:阿里云工程师响应迟缓(不正面响应问题),建议大家做好备份,别太指望阿里云的工程师解决这种偶然性的底层故障。
建议2:迁移数据前,做好快照。

#### 增加硬盘(服务器环境)
环境介绍
– 西数4T红盘
– 公司内部FTP服务器用(台式机)

#### 格式化
“`shell
同阿里云分区
“`
> ##### 注意一个细节:由于默认操作系统中没有绑定磁盘盘符,增加一块磁盘后,重启后的4T磁盘的盘符变成了sda,而原有硬盘变成了sdb,
> ##### 解决:通过UUID方式挂载磁盘

#### blkid获取磁盘UUID
“`shell
#blkid
/dev/sdb1: UUID=”46a60431-9969-4567-be9c-c3c33eb5af17″ TYPE=”ext4″
/dev/sdb2: UUID=”1b50ba56-a085-468d-8913-f434d84989c7″ TYPE=”swap”
/dev/sdb3: UUID=”e3244801-7922-4a97-aa52-edbc5a4b82b0″ TYPE=”ext4″
/dev/sda: UUID=”3f1fe202-9575-4c64-9d9b-16674ef9f350″ TYPE=”ext4″
“`

将UUID写在fstab中,避免多块磁盘产生的磁盘盘符变化
“`shell
UUID=”3f1fe202-9575-4c64-9d9b-16674ef9f350″ /data/ftp_data ext4 defaults 1 1
“`
>备注:由于是FTP数据盘,所以设置备份和检测策略同系统根目录配置