­

系統優化

第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 //mirrors.aliyun.com/repo/Centos-7.repo或者
2) curl -o /etc/yum.repos.d/CentOS-Base.repo //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 //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