• 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

  • 相关阅读:
    git撤销操作总结
    pull request的一些思考
    设计模式之门面模式
    设计模式之策略模式
    java中的堆栈
    git冲突的处理
    Eclipse 未正常退出,导致进不去的问题
    think in java读后总结---Map集合的几种遍历方式
    maven打包后项目名称不对
    python之正则表达式
  • 原文地址:https://www.cnblogs.com/devops-docker/p/11495620.html
Copyright © 2020-2023  润新知