系统优化
第1章 系统优化部分
1.1 系统版本 重要
查看当前的系统版本信息
方法1: cat /etc/redhat-release
[root@oldboyedu-lnb ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)
方法2: hostnamectl
[root@oldboyedu-lnb ~]# hostnamectl # 查看系统的信息 Static hostname: oldboyedu-lnb Icon name: computer-vm Chassis: vm Machine ID: 1f9751f60a184bb0b6d17d091ffb421a Boot ID: 082d427cc7a84f61a095047f5941e325 Virtualization: vmware Operating System: CentOS Linux 7 (Core) # 系统版本 CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-862.el7.x86_64 # 内核版本 Architecture: x86-64
方法3:内核及系统版本
[root@oldboyedu-lnb ~]# uname -a Linux oldboyedu-lnb 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [root@oldboyedu-lnb ~]# uname -r 3.10.0-862.el7.x86_64
1.2 系统时间同步
Linux中有两个时间 对外的服务器 时间必须相同
系统时间 内核的时间 在系统中进行配置调试 硬件时间 主板bios的时间 可以在bios中进行调试 在重启后读取系统时间进行同步
第一个步骤:
a)如何查看系统时间
[root@oldboyedu-lnb ~]# date # 重点 Tue Jul 28 10:58:05 CST 2020
b)如何查看硬件时间
[root@oldboyedu-lnb ~]# clock # 重点 Tue 28 Jul 2020 10:58:52 AM CST -0.649260 seconds [root@oldboyedu-lnb ~]# hwclock Tue 28 Jul 2020 10:58:59 AM CST -0.881400 seconds
第二个步骤:
手动修改系统时间 在测试中会用到 工作中不使用
[root@oldboyedu-lnb ~]# date -s '20180520' # 重点 Sun May 20 00:00:00 CST 2018
手动修改硬件时间 了解 扩展
[root@oldboyedu-lnb ~]# timedatectl
第三个步骤:
自动同步当前系统的时间: # 重点
服务器的域名: ntp1.aliyun.com
1) 安装ntpdate命令
[root@oldboyedu-lnb ~]# yum -y install ntpdate
2) 使用ntpdate命令进行时间同步
[root@oldboyedu-lnb ~]# ntpdate ntp1.aliyun.com 28 Jul 11:10:08 ntpdate[1745]: step time server 120.25.115.20 offset 69159722.035484 sec
第四个步骤: 了解 工作中出现问题快速的时间修改正确
硬件时间去同步系统时间 以系统时间为主
[root@oldboyedu-lnb ~]# hwclock -w # -w --systohc [root@oldboyedu-lnb ~]# clock Sun 20 May 2018 12:00:22 AM CST -0.352920 seconds
系统时间去同步硬件时间 以硬件时间为主
先更新一下当前的系统时间 硬件的不变
[root@oldboyedu-lnb ~]# ntpdate ntp1.aliyun.com 28 Jul 11:19:24 ntpdate[1774]: step time server 120.25.115.20 offset 69160628.535427 sec [root@oldboyedu-lnb ~]# hwclock -s # -s --hctosys [root@oldboyedu-lnb ~]# date
Sun May 20 00:02:40 CST 2018
1.3 系统用户
用户分为两类:
管理员 windows admin Linux root
普通用户 姓名 Linux 姓名
在工作中尽量不使用root用户 使用普通用户 提高系统的安全性
第一个步骤: 创建用户 useradd
语法:
useradd 用户名称(不存在的用户名)
useradd: user 'oldboy' already exists
useradd这个命令: 用户 oldboy 已经存在
第二个步骤: 如何查看用户是否被创建 使用 id命令
语法:
id 用户名
[root@oldboyedu-lnb ~]# id alex id: alex: no such user # 用户不存在的提示信息 [root@oldboyedu-lnb ~]# id oldboy uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy) # 用户存在提示的信息
第二种方法查看用户是否创建
[root@oldboyedu-lnb ~]# grep oldboy /etc/passwd oldboy:x:1000:1000::/home/oldboy:/bin/bash
第三个步骤: Linux中用户必须有密码才能登陆 配置密码使用passwd 直接使用xshell登陆
语法:
passwd 直接回车 # 修改当前系统用户的密码 当前登陆用户是谁 就修改谁的密码 比如 root 就是修改的root的密码
passwd 用户名 # 指定修改某个用户的密码
[root@oldboyedu-lnb ~]# passwd alexdsx Changing password for user alexdsx. # 改变alexdsx的密码 New password: # 输入新密码 BAD PASSWORD: The password is a palindrome Retype new password: # 重新输入新密码
passwd: all authentication tokens updated successfully. # 密码更改成功
扩展: 面交互配置密码
[root@oldboyedu-lnb ~]# echo 1|passwd --stdin oldboy Changing password for user oldboy. passwd: all authentication tokens updated successfully. 错误的使用方式: passwd 1 oldboy
第四个步骤: 用户和用户之间进行切换
1) root 切换到普通用户 su命令 root切换到任意用户 不需要密码
语法:
su - 普通用户 - 两端必须有空格
[root@oldboyedu-lnb ~]# su - alexdsx Last login: Tue Jul 28 12:02:22 CST 2020 from 10.0.0.1 on pts/0 [alexdsx@oldboyedu-lnb ~]$
2) 退出到root用户
[alexdsx@oldboyedu-lnb ~]$ exit logout [root@oldboyedu-lnb ~]#
3) root---> oldboy --->alexdsx
[root@oldboyedu-lnb ~]# su - oldboy Last login: Tue Jul 28 12:01:40 CST 2020 on pts/0 [oldboy@oldboyedu-lnb ~]$ su - alexdsx Password: Last login: Tue Jul 28 12:08:51 CST 2020 on pts/1 [alexdsx@oldboyedu-lnb ~]$ exit logout [oldboy@oldboyedu-lnb ~]$ exit logout
4) 远程使用alexdsx连接 执行exit
[alexdsx@oldboyedu-lnb ~]$ exit # 直接退出到xshell远程连接界面 logout
第五个步骤: 普通用户切换到root用户 需要密码
[alexdsx@oldboyedu-lnb ~]$ su - root # 普通用户切换到root用户 Password: # root用户的密码 Last login: Tue Jul 28 12:15:02 CST 2020 from 10.0.0.1 on pts/1 [root@oldboyedu-lnb ~]# [root@oldboyedu-lnb ~]# exit # 退出到alexdsx普通用户 logout [alexdsx@oldboyedu-lnb ~]$
1.4 SElinux Linux操作系统中的一个安全服务 工作中必须关闭
作用: 为了让系统更加安全
美国国家安全局开发
第一个步骤: 查看当前selinux的状态
Enforcing | Permissive
开启 关闭
[root@oldboyedu-lnb ~]# getenforce Permissive
第二个步骤: 临时关闭selinux # 装完操作系统、服务已经运行 不能关闭重启服务器 只能使用临时方式关闭
setenforce [ Enforcing | Permissive | 1 | 0 ] Enforcing ===== 1 Permissive ===== 0 [root@oldboyedu-lnb ~]# setenforce 0 # 临时关闭selinux 重启失效 和 setenforce Permissive 相同
第三个步骤: 永久关闭selinux
selinux的配置文件 /etc/selinux/config
[root@oldboyedu-lnb ~]# cat /etc/selinux/config enforcing # 完全开启状态 permissive # 临时关闭状态 提示警告信息 disabled # 关闭状态 SELINUX=disabled # 状态修改成disabled
第四个步骤: 重启操作系统 reboot
PS: 在修改配置文件前 一定要备份cp file file.bak | 把原来的配置注释掉 复制一行进行修改PS: 在Linux操作系统中大部分的中括号都是表示 可选项 里面的参数都是或者
PS: centos6.x 关闭selinux的方法和centos7.x相同
1.5 Firewalld 防火墙 系统中的一个服务 大部分服务都是被systemctl进行管理
作用: 控制数据流
1.5.1 centos6.x操作系统 iptables
1.5.2 centos7.x操作系统 firewalld
centos7.x 防火墙的启动关闭
1.5.3 如何查看当前防火墙的状态
[root@oldboyedu-lnb ~]# systemctl status firewalld active (running) # 当前状态运行中
1.5.4 如何临时关闭防火墙
[root@oldboyedu-lnb ~]# systemctl stop firewalld.service # 临时关闭 重启失效
1.5.5 如何永久关闭防火墙
[root@oldboyedu-lnb ~]# systemctl disable firewalld.service
1.5.6 启动防火墙
[root@oldboyedu-lnb ~]# systemctl start firewalld.service systmctl管理服务的动作: start # 开启 启动 stop # 停止 restart # 重启 status # 查看状态 enable # 开机自动启动 disable # 开机禁止启动 reload # 重新加载
centos6.x管理服务的方法:
/etc/init.d/服务名 动作
例:
/etc/init.d/sshd stop
开机禁止和自启动的管理方法
chkconfig 服务 off|on
1.5.7 centos6.x 防火墙的启动和关闭
查看防火墙状态
/etc/init.d/iptables status
临时关闭防火墙
/etc/init.d/iptables stop
启动防火墙
/etc/init.d/iptables start
重启防火墙
/etc/init.d/iptables restart
禁止开机启动 永久关闭
chkconfig iptables off # 开机禁止启动iptables on是开机自动启动
1.5.8 centos6.x 7.x 共同查看防火墙是否开启的命令
iptables-save # 查看当前防火墙的配置策略 如果有说明开启状态 没有说明关闭状态
1.5.9 在工作中iptables常用
centos7.x 使用iptables服务
1.5.9.1 关闭并且禁止开机启动 firewalld
systemctl stop firewalld systemctl disable firewalld
1.5.9.2 安装iptables服务
yum -y install iptables-services
1.5.9.3 配置使用iptables即可
1.5.10 什么情况下开启和关闭防火墙
1.5.10.1 开启的情况:
a. 当服务器有公网IP的情况 b. 当服务器上有对外的服务 c. 阿里云、腾讯云、百度云、亚马逊云等开启防火墙
1.5.10.2 关闭的情况:
a. 内部测试服务器
b. 没有公网 没有对外的服务 用户访问不到
c. 高并发(同一时间内 有多少个人同时访问你的服务器)
安全如保障:
采用硬件防火墙 成本高
1.6 YUM源 作用: 下载并安装软件的软件仓库
/etc/yum.repos.d/ # 配置文件的目录
安装完操作系统 默认随机生成的一个仓库 和配置的DNS有关
1.6.1 更换默认的仓库为阿里云的YUM仓库
1.6.1.1 查看当前的yum仓库 # yum repolist
[root@oldboyedu-lnb ~]# yum repolist # 查看当前软件仓库的信息 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: mirrors.163.com * updates: mirrors.163.com repo id repo name status !base/7/x86_64 CentOS-7 - Base 10,070 !extras/7/x86_64 CentOS-7 - Extras 412 !updates/7/x86_64 CentOS-7 - Updates 900 repolist: 11,382 # 当前软件仓库总弄的软件包的个数
1.6.1.2 备份默认的YUM仓库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
1.6.1.3 下载阿里云的YUM仓库 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
CentOS 7
PS: 如果使用wget进行下载 则需要提前安装wget命令 yum -y install wget
1) wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo或者 2) curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
1.6.1.4 查看是否修改成功
[root@oldboyedu-lnb ~]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
1.6.2 下载过程或者安装软件过程出错原因
1.6.2.1 服务器不能上网 ping www.baidu.com 网络延迟
1.6.2.2 命令复制错误
1.6.2.3 使用wget下载但是提示 wget命令不存在 需要提前安装
1.6.2.4 有其他仓库的缓存 需要清理 yum clean all 清空缓存
1.6.2.5 如果命令 网络 仓库都正常 提示没有可用的包 下载epel仓库 在尝试.
1.6.3 安装额外的软件包 在当前的软件仓库中不存在 需要安装额外的仓库
sl cowsay # 当前的YUM仓库中不存在这两个命令
epel # 企业额外的常用安装包
1.6.3.1 备份(如有配置其他epel源)
1.6.3.2 下载新repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1.6.3.3 安装sl cowsay命令
1.6.3.4 查看当前的所有的YUM仓库
yum repolist
PS: yum list # 列出当前软件仓库所有的软件包
1.7 字符集 文字在Linux系统中的一种表示方式
1.7.1 centos 7 字符集修改
xshell和操作系统的字符集不统一 会产生乱码 xshell默认的字符集 UTF-8
GBK 国标
UTF-8万国码
第一步: 查看字符集 使用变量LANG 查看
[root@oldboyedu-lnb ~]# echo $LANG
en_US.UTF-8
第二步: 临时修改当前系统的语言
[root@oldboyedu-lnb ~]# export LANG='zh_CN.UTF-8'
第三步: 查看是否修改成功
[root@oldboyedu-lnb ~]# useradd --help # 看结果是否中文的
用法:useradd [选项] 登录
第四步: 永久修改 修改配置文件 只要在配置文件中修改的 重启系统肯定生效
[root@oldboyedu-lnb ~]# cat /etc/locale.conf # 字符集的配置文件 LANG="en_US.UTF-8" [root@oldboyedu-lnb ~]# cat /etc/locale.conf #LANG="en_US.UTF-8" LANG="zh_CN.UTF-8"
第五步: 让配置文件及时生效
source 和 . 重新加载运行变量可执行配置文件
[root@oldboyedu-lnb ~]# source /etc/locale.conf [root@oldboyedu-lnb ~]# cat /etc/locale.conf #LANG="en_US.UTF-8" LANG="zh_CN.UTF-8" [root@oldboyedu-lnb ~]# #source /etc/locale.conf ==== LANG="zh_CN.UTF-8" [root@oldboyedu-lnb ~]# [root@oldboyedu-lnb ~]# LANG="zh_CN.UTF-8" [root@oldboyedu-lnb ~]# LANG="zh_CN.UTF-8" [root@oldboyedu-lnb ~]# echo $LANG zh_CN.UTF-8 [root@oldboyedu-lnb ~]# cat 2.txt echo hehe [root@oldboyedu-lnb ~]# source 2.txt hehe [root@oldboyedu-lnb ~]# echo hehe hehe [root@oldboyedu-lnb ~]# . 2.txt hehe
第六步: 使用命令永久+临时的方式修改语言
1) 使用localectl命令修改语言
[root@oldboyedu-lnb ~]# localectl set-locale LANG='en_US.UTF-8' [root@oldboyedu-lnb ~]# echo $LANG zh_CN.UTF-8 [root@oldboyedu-lnb ~]# cat /etc/locale.conf LANG=en_US.UTF-8
2) 重新执行配置文件的内容
[root@oldboyedu-lnb ~]# source /etc/locale.conf [root@oldboyedu-lnb ~]# echo $LANG en_US.UTF-8
1.7.2 centos6.x修改字符集
1.7.2.1 临时修改
export LANG='zh_CN.UTF-8'
1.7.2.2 修改配置文件
/etc/sysconfig/i18n # centos6.x的字符集配置文件
1.8 系统提示符 命令提示符 我们在什么情况下可以输入命令 工作中很少改动PS1变量
PS1变量
[root@oldboyedu-lnb ~]# \u \h \W
PS1的常用参数以及含义:
\h :仅取主机名中的第一个名字 \t :显示时间为24小时格式,如:HH:MM:SS \u :当前用户的账号名称 \w :完整的工作目录名称 \W :利用basename取得工作目录名称,只显示最后一个目录名
第一步: 查看当前的提示符PS1
[root@oldboyedu-lnb ~]# echo $PS1
[\u@\h \W]\$
第二步: 修改PS1
W # 显示当前所在的目录
w # 显示当前所在的绝对路径
[root@oldboyedu-lnb ~]# PS1='[\u@\h \w]\$'
第三步: 修改PS1的颜色
临时修改当前提示符的颜色
[root@oldboyedu-lnb ~]# PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
永久修改PS1的颜色
写入/etc/profile
1.9 Vim 增加内容
1.9.1 批量修改文件
ctrl+v 选中行或列 删除或增加内容
x 删除选中的内容
ctrl+v 选中列---> 大写的I 进入插入模式--->输入想要添加的内容--->按两次esc键
1.9.2 使用命令复制粘贴了解
:1copy4 复制第一行到第4行的后面 简写co :1,2co3 复制1-2行的内容到3行 :1move4 移动第一行的内容到第4行 简写mo
1.9.3 替换文件内容
格式:底行模式
s/要替换谁/替换的内容/ s@@@ s###
1.9.3.1 :s/root/oldboy/ # 替换光标所在行的第一个单词
1.9.3.2 :s/root/oldboy/g # 替换光标所在行的所有的root
1.9.3.3 全局替换 常用 sed命令
:%s/root/oldboy/g # 文件中所有的root都被替换
1.9.4 vim中使用帮助
: help nu
退出:q 退出帮助到vim
PS:Linux中所有的命令都支持直接调用变量
[root@oldboyedu-lnb ~]# dir=/tmp [root@oldboyedu-lnb ~]# [root@oldboyedu-lnb ~]# echo $dir /tmp [root@oldboyedu-lnb ~]# cd $dir [root@oldboyedu-lnb tmp]# cd [root@oldboyedu-lnb ~]# mkdir $dir/test [root@oldboyedu-lnb ~]# ll -d $dir/test