性能优化
安全优化
编码优化
| 1)了解⾃⼰的系统情况 |
| cat /etc/redhat-release |
| uname -r/-a/-n/-s/... # 详⻅下图 |
| 2)在系统中创建⽤户信息 |
| 创建⽤户 |
| useradd jason01 |
| passwd jason01 |
| 切换⽤户状态管理主机 |
| su - jason01 # su == switch user |
| 进⾏检查确认 |
| whoami |
环境变量
| 特征: |
| 01. 由⼤写字⺟组成 |
| 02. 配置的环境变量所有⽤户都必须遵循 |
| 03. 系统中默认就有的变量信息 |
| |
| 第⼀个环境变量:PS1 (命令提示符信息) |
| echo $PS1 |
| 修改环境变量: |
| 第⼀个⾥程:临时修改 |
| PS1="[\u@\h \w]\$" 错误修改环境变量⽅式 |
| export PS1="[\u@\h \w]\$" 正确修改环境变量⽅式 |
| |
| 第⼆个⾥程:永久修改 |
| vim /etc/profile |
| export PS1="[\u@\h \w]\$ " # 添加内容 |
| source /etc/profile # 重新加载⽂件内容 |
下载软件优化操作
| 1)需要修改yum源⽂件(指定使⽤哪个yum软件仓库) # 类似于pip |
| 换源 |
| 安全相关的优化 |
| curl -o /etc/yum.repos.d/CentOS-Base.repo |
| http://mirrors.aliyun.com/repo/Centos-7.repo |
| yum repolist |
| PS:万⼀阿⾥云不好⽤,可以选择清华yum源 |
| |
| https://mirrors.tuna.tsinghua.edu.cn/help/centos/ |
| 2)需要修改yum扩展源epel源 |
| 第⼆个特殊的软件仓库 |
| # epel Extra Packages for Enterprise Linux |
| wget -O /etc/yum.repos.d/epel.repo |
| http://mirrors.aliyun.com/repo/epel-7.repo |
| 检查测试 |
| yum install -y bash-completion-extras |
| 3)所有源⽂件更新进⾏最终确认 |
| yum repolist |
| """ |
| 闲暇时光 |
| yum install sl cowsay -y |
| sl |
| cowsay "JasonNB!!!" |
| """ |
安全相关的优化
| '''1.selinux''' |
| 1.修改selinux设置(国⼟安全局) |
| 限制皇帝root⾏为,但是实际应⽤不会使⽤它来显示root较为麻烦, |
| 基本都是关闭 |
| |
| 2.关闭selinux服务程序 |
| # 永久关闭 |
| vim /etc/selinux/config |
| # enforcing - SELinux security policy is |
| enforced. |
| # permissive - SELinux prints warnings instead of |
| enforcing. |
| # disabled - No SELinux policy is loaded. |
| SELINUX=disabled |
| ps:⽂件修改之后,配置不会⽴即⽣效,需要重启liunx操作系统 |
| 使之⽣效 |
| # 临时关闭 |
| setenforce # 设置 |
| # usage: setenforce [ Enforcing | Permissive | 1 |
| | 0 ] |
| getenforce # 查看 |
| |
| """2.防⽕墙服务""" |
| 建议学习完毕之后,再开启使⽤ |
| 防护墙 |
| centos6:iptables |
| /etc/init.d/iptables stop # 临时关闭防⽕墙 |
| /etc/init.d/iptables status # 查看 |
| chkconfig iptables off # 永久关闭防⽕墙 |
| chkconfig iptables # 查看 |
| centos7:firewalld |
| systemctl stop firewalld.service # 临时关闭防⽕ |
| 墙 |
| systemctl status firewalld.service # 查看 |
| systemctl disable firewalld.service # 永久关闭防 |
| ⽕墙 |
| systemctl status firewalld.service # 查看 |
| 应⽤防⽕墙场景 |
| 建议开启:服务器可以被外界访问(公⽹/外⽹ip) |
| 建议关闭:服务器可以被内部访问(私⽹/内⽹ip) |
| 建议关闭:服务器处于⾼并发状态(公⽹/外⽹ip) 软件防⽕墙 |
| 关闭 硬件防⽕墙进⾏安全控制 |
字符编码优化
| 1.环境变量⽅式修改 |
| echo $LANG # 查看当前系统字符编码 |
| export LANG=en_US.GBK # 临时修改 |
| echo "export LANG=en_US.GBK" >>/etc/profile # 永久修 |
| 改 |
| source /etc/profile # ⽴即⽣效 |
| 2、如何让linux 和 windows系统之间传输数据信息 |
| 第⼀个历程: 安装和传输数据相关的软件 |
| yum install -y lrzsz |
| 第⼆个历程:利⽤lrzsz软件将数据进⾏传输 |
| # linux上⾯数据 |
| 传输给 widows主机 sz -y 数据信息 |
| # windows上⾯数据 |
| 传输给 linux主机 rz -y |
| PS:空⽂件是⽆法传递的 xshell⽀持拖拽上传 |
| |
| # 2、查看系统⽂件数据信息 |
| ⽐较⼤的⽂件 如何查看信息 |
| less 逐⾏ 或者 ⼀⻚⼀⻚进⾏查看 |
| more 逐⾏ 或者 ⼀⻚⼀⻚进⾏查看 |
| 以上两个查看⽂件信息命令区别说明: |
| 1.是否可以使⽤快捷⽅式之间区别 |
| less 可以使⽤ |
| more 禁⽌使⽤ |
| 2.是否可以实现查看完毕⾃动退出 |
| less 不可以使⽤ |
| more 可以实现 |
| # 3、如何检索⽂件中的指定内容信息 |
| 测试⽂本 |
| oldboy01 |
| oldboy02 |
| oldboy03 |
| oldboy04 |
| oldboy05 |
| 三剑客 ⽼三 grep 擅⻓过滤信息 |
| grep "01" /oldboy/oldboy.txt |
| 三剑客 ⽼⼆ sed 不擅⻓过滤信息 |
| sed '/01/p' /oldboy/oldboy.txt |
| sed -n '/01/p' /oldboy/oldboy.txt |
| 三剑客 ⽼⼤ awk 不擅⻓过滤信息 |
| awk '/01/' /oldboy/oldboy.txt |
| '''擅⻓过滤的原因''' |
| grep "03" -B 2 /oldboy/oldboy.txt |
| grep "03" -A 2 /oldboy/oldboy.txt |
| grep "03" -C 1 /oldboy/oldboy.txt |
| grep -n "03" /oldboy/oldboy.txt |
| grep -v "03" /oldboy/oldboy.txt |
| # 4、如何替换⽂件数据信息 |
| 需求将⽂件中的oldboy信息替换为oldgirl |
| ⽅式1: |
| sed命令替换步骤:第⼀个历程 备份⽂件 |
| sed命令替换步骤:第⼆个历程 查看搜索 |
| sed -n '/oldboy/p' oldboy.txt |
| sed命令替换步骤:第三个历程 ⽂件信息模拟替换 |
| sed -n 's#oldboy#oldgirl#gp' |
| /oldboy/oldboy.txt |
| sed命令替换步骤:第四个历程 ⽂件信息真正替换 |
| sed -i 's#oldboy#oldgirl#g' |
| /oldboy/oldboy.txt |
| sed命令替换步骤:第五个历程 替换完成检查确认 |
| ⽅式2: |
| tr命令进⾏替换 |
| 语法说明:tr '替换的信息' '替换成什么信息' ⽂件信息 |
| tr 'oldgirl' 'oldboy' /oldboy/oldboy.txt # |
| 报错 |
| 在linux系统中,不是所有命令都可以直接编辑修改⽂件 |
| 可以直接编辑⽂件的命令 vi/vim sed xxxctl |
| tr企业应⽤:可以将指定字⺟⼤⼩写进⾏转换 1对1进⾏替换 |
| tr 'a-z' 'A-Z' < /oldboy/oldboy.txt |
别名功能
| 1、如何查看别名设置 |
| alias 别名 |
| alias cp='cp -i' |
| alias mv='mv -i' |
| alias rm='rm -i' |
| -i 如要⼈为交互,有提示信息 |
| 问题:如何⾮交互的覆盖原有信息 |
| 1. \cp /tmp/oldboy.txt /oldboy/ --取消别名功能 |
| 2. 采⽤命令绝对路径⽅式 |
| [root@02 ~]# # 查看⼀个命令到底在哪个绝对路径中 |
| [root@02 ~]# which cp |
| alias cp='cp -i' |
| /usr/bin/cp |
| [root@02 ~]# /usr/bin/cp /tmp/oldboy.txt |
| /oldboy |
| 2、如何设置别名信息 |
| 设置rm命令别名提示:rm command not use |
| 第⼀步:临时设置别名 |
| alias rm='rm -i' |
| alias rm='echo rm command not use' |
| 问题:设置别名常⻅问题 |
| 1. 别名后⾯单引号中⼀定是完整命令信息 |
| 2. 别名后⾯单引号⼀定是英⽂的 |
| |
| 第⼆步:永久设置别名 |
| ⽂件属性信息 |
| echo alias rm='echo rm command not use' |
| >>/etc/profile |
| source /etc/profile |
| 第三步: 将~/.bashrc内容进⾏注释 |
| alias rm='rm -i' |
| # 需要重新连接服务端即可 |
| ls -lhi /etc/ --- 查看数据属性信息 |
| 67683849 d rwxr-xr-x. 3 root root 101 Nov 30 12:13 |
| abrt |
| 01 02 03 04 05 06 07 |
| 08 |
| 第⼀列: inode信息 index node 索引节点 |
| 第⼆列: ⽂件类型 ⽂件权限 |
| 第三列: 硬链接数 |
| 磁盘(设备⽂件) == 超市 /mnt(挂载点) == 超市的⼊ |
| ⼝ |
| 硬链接 === 超市的多⼊⼝ /oldboy |
| 第四列: 数据(⽂件 ⽬录)的所属⽤户信息 == 监护⼈(⽗亲 ⺟亲) |
| 第五列: 数据(⽂件 ⽬录)的所属⽤户组信息 == 家庭中亲⼈ |
| 第六列: ⽂件⼤⼩信息 |
| 第七列: ⽂件修改时间信息 |
| 第⼋列: ⽂件名称(不属于⽂件属性信息) |
| """详细说明""" |
| ⽂件类型: |
| windows系统中: 根据⽂件扩展名称信息决定⽂件类型 |
| ⽂件相关命令 |
| linux系统中: 系统的⽂件类型和⽂件扩展名没有半⽑钱关系 |
| linux系统⽂件类型分类 |
| d directory ⽬录类型的⽂件 |
| - file 普通类型的⽂件 |
| l softlink 连接类型的⽂件 |
| c character 字符类型的⽂件(会源源不断的产⽣字符信 |
| 息) |
| b block 块设备类型的⽂件 设备⽂件 |
| s socket 和⽹络接⼝通讯相关(开发 ⽹络编程) |
| p pip 管道⽂件 |
| 1.显示⽂件信息类型命令 file |
| file jason.txt |
| 2.显示命令绝对路径信息 which |
| which cp |
| 3.显示命令路径以及⽂件 whereis |
| whereis cp |
| 4. 快速定位⽂件路径信息 locate |
| touch oldgirl1212.txt |
| updatedb # 更新数据库信息, 便于locate命令可以进⾏查找 |
| locate jason1.txt |
| 5.快速查找数据信息命令 find # 重点掌握 |
| 语法说明: find 区域 查找⼈的类型 具体的条件 |
| eg: |
| 1.寻找⼀个jason.txt |
| find /temp -type f -name "jason.txt" |
| 2.寻找⼀个以.txt扩展名结尾的⽂件 |
| find /temp -type f -name "*.txt" |
| 3.按照⽂件数据⼤⼩进⾏查找⽂件 查找⼤于10k的⽂件 但⼩于 |
| 10M |
| find /etc/ -type f -size +10k -size -10M # 默 |
| 认递归 |
| # 限制查找层级 |
| find /etc/ -maxdepth 1 -type f -size +10k - |
| size -10M |
| 6.对数据信息进⾏压缩处理 |
| 压缩数据的命令 tar |
| tar 参数信息 压缩包信息(箱⼦) 物品01(数据信息) 物品02(数据 |
| 信息) |
| eg: |
| 1.压缩/jason、/etc/hosts⾄/jason/jason.tar.gz |
| tar -zcvf /jason/jason.tar.gz /jason /etc/hosts |
| z 利⽤gzip⽅式进⾏压缩数据 rar zip |
| c 创建压缩包 create |
| v 详细执⾏操作过程 verbose |
| f 指定需要压缩的⽂件信息 file |
| 2.如何检查确认压缩数据 |
| tar -tf /jason/jason.tar.gz |
| 3.解压数据⽂件 |
| tar -zxvf /jason/jason.tar.gz |
| tar -zxvf system.tar.gz -C /oldgirl # 解压⾄指定 |
| 位置 |
** 文件权限**
| [root@jason /jason]# ls -l |
| # rwxr-xr-x 9位信息表示⽂件权限 |
| # ⽂件权限有哪些 |
| r read 数值 4 是否可以读取⽂件: cat file |
| w write 数值 2 是否可以写⼊⽂件: echo vim sed |
| x execute 数值 1 是否可以执⾏⽂件: sh python |
| - 空了 数值 0 ⽂件没有相应权限: 没有权限 |
| eg:rwx r-x --x -w- |
| 7 5 1 2 |
| # 权限每三位为⼀组 |
| 第⼀位: 只表示是否有读权限 |
| 第⼆位: 只表示是否有写权限 |
| 第三位: 只表示是否有执⾏权限 **** |
| rwxr-xr-x 9位信息表示⽂件权限 |
| # 对⼀个⽂件说, 可以有很多⼈管理 |
| ⽂件(你) ⽂件的所属⽤户信息--属主信息(⽗⺟教育你) |
| 由9位权限位的前3位决定属主权限 |
| 属主信息: ⼀般创建⽂件的⽤户就是⽂件的属主信息 |
| ⽂件(你) ⽂件的所属⽤户组信息--属组信息(亲⼈) |
| ⽂件所属⽤户、⽤户组 |
| 由9位权限位的中间3位决定属组权限 |
| ⽂件(你) ⽂件的其他⽤户信息(隔壁⽼王) |
| 由9位权限位的后3位决定其他⽤户权限 |
文件所属用户,用户组
| 在linux系统中,多⽤户操作系统,⽂件数据,系统进程信息都要有⽤户管 |
| 理 |
| 创建⽤户: useradd oldgirl |
| # ⽅法⼀: 交互式设置密码 |
| passwd oldgirl # ⼀定要加上⽤户名否则是设置root⽤户密码 |
| 输⼊确认密码信息 |
| # ⽅法⼆: 免交互设置密码 |
| useradd oldboy01 |
| echo "12345"|passwd --stdin oldboy01 >/dev/null |
| # ⽅法三: 即创建⽤户⼜设置⽤户密码信息(分号⽀持多个命令) |
| useradd jason;echo "12345"|passwd --stdin jason |
| |
| 查看系统⽤户是否存在 |
| id oldboy |
| uid=1000(oldboy) gid=1000(oldboy) |
| groups=1000(oldboy) |
| ⽤户id 1000 ⽤户组id 所属的组 可能⽤户还属于哪 |
| 些组 |
| |
| 到底系统中都有哪些⽤户(系统对⽤户进⾏分类) |
| 01. 超级管理员⽤户 --- 皇帝 |
| ⽂件⼤⼩信息 |
| root id=0 # 能⼒: 基本上是处于⽆敌地位 |
| 02. 普通⽤户 --- 平⺠ |
| id 1000+ # 能⼒: 需要root⽤户进⾏指定 |
| 只能管理⾃⼰家⽬录下⾯数据 /tmp 临时⽬录 |
| 03. 虚拟⽤户 --- 傀儡 |
| id 1-999 # 能⼒: 存在即可 ⽤于管理服务进程信息 |
文件大小信息
| # 查看普通⽂件⼤⼩⽅法 |
| [root@jason /tmp]# ls -lh /etc/services |
| # 查看⽬录⽂件⼤⼩⽅法 |
| du 显示⽬录中的数据真实占⽤磁盘空间⼤⼩ |
| du -sh /etc/ |
| -s 将⽬录下⾯的数据信息⼤⼩进⾏统计 |
| -h 以⼈类可读⽅式显示 |
| # 企业案例: 磁盘空间不够使⽤了删除⽐较⼤的⽂件 |
| 01. 确认磁盘空间是否不够⽤了 |
| df -h |
| 02. 确认⽐较⼤的⽂件数据信息 |
| du -sh /usr/* |
| 03. 没有⽤的⽂件(检查⼤⼩会不会有变化) |
| ⽂件⼤⼩产⽣变化的⽂件如何处理:备份 清空⽂件中的数据 |
| >⽂件信息 |
| ⽂件⼤⼩不会产⽣变化的⽂件:备份 直接进⾏删除 |
| 04. 进⾏磁盘空间利⽤率确认 |
文件索引属性信息
| # inode(index node) |
| 概念说明:书⽬录 索引指向信息 指向数据真实存储在磁盘的位置 |
| 如何查看inode信息: |
| [root@jason /tmp]# ll -hi /etc/hosts |
| # block |
| 概念说明: ⽤于真实存储数据信息 |
| 如何查看block信息: |
| [root@jason /tmp]# ls -l /etc/hosts |
| block默认⼤⼩4k 可以调整, 但建议⼀定要在格式化分区时调整 |
| # 问题: block是调整⼤⼀些10M,还是调整⼩⼀些10k |
| 情况⼀: 存储数据量⽐较⼤的时候 |
| 正确答案: 是选择⼤的block更好 |
| 可以减少block消耗, 节省磁盘IO |
| 情况⼆: 存储数据量⽐较⼩的时候 |
| 正确答案: 选择⼩的block会更好 |
| 可以节省磁盘空间, 可以让更多数据进⾏存储 |
链接信息
| # 硬链接 |
| 概念说明: |
| 磁盘(超市--数据) 有⻔进⼊超市 cat /etc/hosts |
| 多⻔进⼊超市 cat |
| /oldboy/hosts |
| 只能对⽂件做硬链接不能对⽬录做硬链接 |
| 作⽤说明: |
| 01. 可以⽤于查看数据信息 |
| 02. 可以⽤于作为备份 |
| 03. 当所有硬都被删除, 等价于数据将会被删除 |
| 区别说明: |
| 01. 对于源⽂件关注程度 |
| 源⽂件删除, 不会对硬链接⽂件产⽣影响 |
| 02. 对于链接⽂件关注程度 |
| 不会有影响, 对于源⽂件硬链接数会减少 |
| # 软链接 |
| 概念说明: |
| 创建⼀个⽂件或者⽬录的快捷⽅式 |
| 作⽤说明: |
| 01. 使复杂路径操作更加⽅便 |
| 02. 使不同软件程序版本调⽤更加⽅便 |
| 区别说明: |
| 01. 对于源⽂件关注程度 |
| 源⽂件被删除, 会影响软链接⽂件 |
| 02. 对于链接⽂件关注程度 |
| 毫⽆影响 |
| """详细操作""" |
| 1.硬链接 |
| ln /etc/hosts /oldboy/hard_link_hosts.txt |
| cat /etc/hosts |
| cat /oldboy/hard_link_hosts.txt |
| echo oldboyinfo >> /etc/hosts |
| cat /etc/hosts |
| 系统时间 |
| cat /oldboy/hard_link_hosts.txt |
| 2.软连接 |
| ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 |
| /oldboy/soft_link_eth0 |
系统时间
| # 系统时间如何查看 |
| date |
| # 按照⾃定义需求, 显示时间信息 |
| date +年-⽉-⽇ ⼩时:分钟:秒 |
| date +%y-%m-%d # date +%F |
| date +"%y-%m-%d %H:%M:%S" |
| # 显示过去的时间信息 显示未来的时间信息 |
| 显示过去的时间 |
| date +%F -d "-3 day"/date +%F -d "-3day" |
| date +%F -d "+3 day ago" |
| date +%F -d "-3 year" |
| |
| 显示未来的时间 |
| date +%F -d "+3 day"/date +%F -d "+3day" |
| |
| # 设置系统时间⽅法 |
| date -s "2022-11-11 11:11:11" |
| '''时间同步服务centos6为ntp centos7位chrony''' |
案例
| # 服务器磁盘空间满解决⽅式 |
| 磁盘空间不够可能的情况>>>:No space left on device |
| 第⼀种原因: 是因为inode空间被占⽤满了 |
| 创建出⼤量⼩⽂件会严重占⽤inode数量 |
| ⼤量⼩⽂件清除⽅式: 部分清除 * |
| 第⼆种情况: 磁盘空间真的满了 df -i\df -h |
| 将没⽤的⼤⽂件进⾏删除或者清空 |
| 扩充磁盘容量 |
| 第三种情况: ⽂件被程序调⽤ |
| 删除⽂件原理: |
| 01. 确认硬链接数为0 -i_link=0 |
| 02. 确认程序被调⽤数为0 -i_conut=0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)