Linux系统 日常优化

linux 系统基础查看
查看主机负载参数 uptime
查看cpu使用率 sar 1 4
查看内存 free -m
查看网络流量 iostat
查看本机IP ifconfig
查看最大文件打开数 ulimit -n
查看磁盘使用率 df -h
用硬件检测程序 kuduz探测新硬件:service kudzu start ( or restart)
查看CPU信息: cat /proc/cpuinfo
查看cpu个数 lscpu
查看板卡信息: cat /proc/pci
查看PCI信息: lspci (相比cat /proc/pci更直观)
查看内存信息: cat /proc/meminfo
查看内存大小 free -m
查看USB设备: cat /proc/bus/usb/devices
查看键盘和鼠标: cat /proc/bus/input/devices
查看系统硬盘信息和使用情况:fdisk -l & df -h
查看硬盘空间大小 vgdisplay
查看各设备的中断请求(IRQ): cat /proc/interrupts
查看启动硬件检测信息日志: dmesg more /var/log/dmesg
查看主机名 uname -a
查看主机序列号 dmidecode -t 1
查看目录大小 du -sh name
查看系统位数 x86_64
查看系统类型 uname -s
几种查看Linux版本信息的方法:
1.uname -a
2.cat /proc/version
3.cat /etc/redhat-release
4.cat /etc/system-release

/etc/init.d/ 系统服务启动脚本文件
/etc/rc.local 开机自启动命令调用脚本文件

日志
/var/log/messages 系统日志
/var/log/secure 系统登入安全信息日志

查看常看登入信息 last
系统用户登入信息 lastlog

2>&1 | tee
2>&1 表示标准的错误重定向到标准输出
tee 输出到文件

远程拷贝
scp -r root@192.168.10.1:/opt/APP /opt/APP

软件包安装的规范
一般有两种方法安装软件包
rpm包
yum源安装解决依赖关系
源码包安装 指定安装路径
软件包由二进制文件、库文件、配置文件、帮助文件、头文件等组成
二进制文件:/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin
库文件: /lib /usr/lib /usr/local/lib
配置文件:/etc
帮助文件 /usr/share/mam /usr/local/share/mam

源码包安装
./configure 检查编译环境
make 进行编译
make install 编译安装
下载软件包不安装
yum install --downloadonly --downloaddir=下载地址 下载软件名字
createrepo -p -d -o /var/www/html/centos7/Packages/ /var/www/html/centos7/Packages/

LVM缩容扩容
umount /dev/mapper/cl-home
lvremove /dev/mapper/cl-home
lvextend -L +520GB -n /dev/mapper/cl-root
resize2fs /dev/mapper/cl-root
xfs_growfs /dev/mapper/cl-root


性能优化
无验证密码更改 echo 123 |passwd --stdin linux(用户名)
清除历史命令 history -c
grep -vEi “linux|linux1”排除可选项不区分大小写egrep=grep -E 精简开机启动项
seq 1000打印到指定数
tail -f 跟踪文件变化
locate 查找命令
which 查找命令位置
w 查看当前登入

最小化系统安装
最小化开启程序
最小化操作
最小化登入
vimdiff比较文件

系统优化
1.权限优化
用户权限sodu
不用root添加普通用户,通过SUDO权限
root all all
linux all NOPASSWD:ALL

which 查看命令路径
文件权限chmod chattr
锁定配置文件如(passwd)
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 锁定系统关键文件使用chattr命令后,为了安全我们需要将其改名
chattr -i 解锁
命令权限setuid

2..更改默认的远程连接
SSH服务端口及禁止root用户远程登入 lsof -i :端口

3.定时自动更新服务器时间
crond定时任务 备份
/var/spool/cron/root
crontab -e定时任务
分钟 小时 日 月 星期
* * 3 * *
echo '*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2 >&1' >>/var/spool/cron/root

4.配置YUM更新源,最好从本地下载
[centos7]
name=centos7
base=file://
enable=1
gpgcheck=0

5.关闭selinux
setenforce 0

6.修改Linux系统对用户的关于打开文件数的软限制和硬限制
vim /etc/security/limits.conf
* soft nofile 65535
* soft nproc 65535
* hard nofile 65535
* hard nproc 65535


7.定时自动清理/var/spool/sendmail文件
find /var/soopl/sendmail 减少inode节点

8.精简开机自启动服务
刚装完操作系统可以只保留crond,network,rsyslog,sshd这四个服务
for sun in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sun off;done
for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done
chkconfig --list|grep 3:on

9.修改/etc/issue 删除里面的内容隐藏系统版本
cat /etc/issue 清空保护机器版本

10.openssh、openssl、zlib、ntp升级

11.安全优化
调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制
vim /etc/pam.d/login
sessionrequired /lib/security/pam_limits.so

12.私钥秘钥配置
第一步:在本地机器上使用ssh-keygen产生公钥私钥对
$ ssh-keygen
第二步:用ssh-copy-id将公钥复制到远程机器中
$ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
注意: ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中
第三步: 登录到远程机器不用输入密码
$ssh 用户名字@192.168.x.xxx

13.优化内核方面
把参数添加到/etc/sysctl.conf中,然后执行sysctl -p使参数生效,永久生效
查看Linux系统级的最大打开文件数限制
cat /proc/sys/fs/file-max
修改/etc/sysctl.conf文件内
fs.file-max=65535

TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口,查看当前TCP连接的状态和对应的连接数量:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

#表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;
#表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭;
#表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
#对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
#表示用于向外连接的端口范围。缺省情况下很小,改为1024到65535。
#表示SYN队列的长度,默认为1024,加大队列长度为16384,可以容纳更多等待连接的网络连接数。
#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默认为180000,改为5000。此项参数可以控制TIME_WAIT的最大数量。
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 1024 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000

#最大socket读buffer,可参考的优化值:873200
#最大socket写buffer,可参考的优化值:873200
#TCP读buffer,可参考的优化值:32768 436600 873200
#TCP写buffer,可参考的优化值:8192 436600 873200
#低于此值,TCP没有内存压力,在此值下,进入内存压力阶段,高于此值,TCP拒绝分配socket。
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_mem = 786432 1048576 1572864

#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
#listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256.
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。
关闭路由功能
net.core.netdev_max_backlog = 16384
net.core.somaxconn = 16384
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_forward = 0


#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
#在内核放弃建立连接之前发送SYN包的数量。
#控制内核向已经建立连接的远程主机重新发送数据的次数,低值可以更早的检测到与远程主机失效的连接,因此服务器可以更快的释放该连接,可以修改为5
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_retries2 = 5

#在认定TCP连接失效之前,最多发送多少个keepalive探测消息。默认值为9次
#探测消息未获得响应时,重发该消息的间隔时间(秒)。默认值75秒

net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15

net.ipv4.tcp_no_metrics_save = 1

################################################################################

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000


14.修改主机名 /etc/sysconfig/network

15.修改DNS信息 /etc/resolv.conf

16.安装开发包软件为源码包安装做准备
yum -y install gcc gcc-c++ openssl-devel libstdc++* libcap* pcre-devel openssl-devel zlib-devel libcurl-devel bzip2-devel
libmcrypt-devel mhash-devel libevent-devel gd-devel
yum -y groupinstall "Server Platform Development" "Development Tools"

17.定期清空缓存
查看rpm -qa |grep rsync
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches


18.修改系统默认字符集
/etc/sysconfig/il8n
LANG="zh_CN.UTF-8"

19.检测Linux IP冲突
yum -y install arp-scan
arp-scan –I eth0 -l

原文地址:https://www.cnblogs.com/devops-docker/p/11495620.html