1. 程式人生 > 實用技巧 >linux 系統管理

linux 系統管理

開機自啟動流程

1. 按下電源
2. BIOS自檢  
3. MBR引導  
4. 進入GRUB選單   
5. 載入核心 Kernel
6. systemd      init程序
7. 讀取執行級別   
8. 執行初始化系統檔案
9. 並行啟動系統開機自啟動的服務
10. 執行getty檔案,顯示登陸介面

# 系統啟動預設配置檔案
[root@localhost ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 41 Aug  5 10:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

# 系統啟動等級檔案
[root@localhost ~]# ll /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Jul  5 00:11 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Jul  5 00:11 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Jul  5 00:11 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  5 00:11 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  5 00:11 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Jul  5 00:11 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Jul  5 00:11 /usr/lib/systemd/system/runlevel6.target -> reboot.target

# 系統初始化檔案
[root@localhost ~]# ll /usr/lib/systemd/system/sysinit.target
-rw-r--r--. 1 root root 518 Oct 31  2018 /usr/lib/systemd/system/sysinit.target

# getty檔案
[root@localhost ~]# ll /usr/lib/systemd/system/getty.target
-rw-r--r--. 1 root root 460 Oct 31  2018 /usr/lib/systemd/system/getty.target

centos-6                   centos-7   開機啟動的區別
init管理程序		   systemd管理程序
序列啟動服務	           並行啟動服務
啟動效率慢,容易故障	   啟動效率高,不容易出現故障 

系統執行級別

[root@localhost ~]# ll /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Jul  5 00:11 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Jul  5 00:11 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Jul  5 00:11 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  5 00:11 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  5 00:11 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Jul  5 00:11 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Jul  5 00:11 /usr/lib/systemd/system/runlevel6.target -> reboot.target

0		poweroff            # 關機 
1		rescue		    # 單使用者模式  
2		multi-user	    # 多使用者模式 
3		multi-user	    # 多使用者模式
4		multi-user	    # 多使用者模式 
5		graphical	    # 圖形介面模式  桌面模式
6		reboot		    # 重啟 

# 如何檢視系統執行級別
centos-6
[root@localhost ~]# runlevel 
N 3
[root@localhost ~]# init 5
[root@localhost ~]# runlevel
3 5
[root@localhost ~]# init 3
[root@localhost ~]# runlenve
[root@localhost ~]# runlevel
5 3

# centos-7
[root@localhost ~]# systemctl get-default 
multi-user.target

# 修改執行級別
[root@localhost ~]# systemctl set-default graphical.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@localhost ~]# systemctl get-default 
graphical.target
[root@localhost ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@localhost ~]# systemctl get-default
multi-user.target

system系統呼叫命令

systemd 全稱 system daemon 表示 守護系統程序

# 主配置檔案目錄
[root@localhost ~]# ll /etc/systemd/system/ -d
drwxr-xr-x. 12 root root 4096 Aug  5 15:21 /etc/systemd/system/

# 系統服務配置檔案目錄
[root@localhost ~]# ll /etc/systemd/system/ -d
drwxr-xr-x. 12 root root 4096 Aug  5 15:21 /etc/systemd/system/

# 程式,程序執行時產生的一些檔案目錄
[root@localhost ~]# ll /run/systemd/system/ -d
drwxr-xr-x 5 root root 160 Aug  5 15:01 /run/systemd/system/

systemctl命令選項:
restart      # 重新啟動(先關閉在啟動id會變) 示例:systemctl restart nginx      
start        # 開始啟動 示例:systemctl start nginx   
status       # 服務狀態 示例:systemctl status nginx
stop         # 服務停止 示例:systemctl stop nginx
reload       # 平滑重啟(id不變 重新載入服務配置檔案) 示例:systemctl reload nginx
mask         # 禁用某個服務 示例:systemctl mask nginx
unmask       # 解除某個禁用 示例:systemctl unmask nginx
enable       # 設定成開啟自啟動 示例:systemctl enable nginx
disable      # 取消開機自啟動 示例:systemctl disable nginx

# status 狀態說明
active (running)	    # 執行 
Active: inactive (dead)	    # 不在執行
disabled		    # 開機不自啟
enabled			    # 開機自啟
failed			    # 失敗

# 顯示當前執行級別下開機自啟動的服務
systemctl list-unit-files
[root@localhost ~]# systemctl list-unit-files
UNIT FILE                                     STATE      # 單元檔案狀態  
proc-sys-fs-binfmt_misc.automount             static     # 靜態的 不能作為開機自啟動
tmp.mount                                     disabled   # 禁止開機自啟動
auditd.service                                enabl      # 開機自啟動的

hostname systemctl設定

# 使用systemctl進行關機重啟操作
systemctl reboot    # 重啟
systemctl poweroff  # 關機

# 如何設定主機名
hostnaem                                # 檢視主機名
hostnamectl                             # 檢視主機詳細資訊
hostnamectl set-hostname admin.local    # 修改主機名重啟生效(永久)

# 主機名配置檔案
/etc/hostname

如何修改字符集

# 檢視本機字符集
[root@localhost ~]# echo $LANG
en_CN.UTF-8

# 改主機字符集
[root@localhost ~]# localectl set-locale LANG=zh_CN.UTF-8  # 重啟生效
[root@localhost ~]# echo $LANG
en_CN.UTF-8

# 字符集配置檔案 /ect/locale.conf

# export臨時修改變數
[root@qls ~]# export   LANG=en_US.UTF-8
[root@qls ~]# echo  $LANG
en_US.UTF-8

系統日誌管理

[root@qls ~]# journalctl  -xe	          # 檢視當前服務的日誌 
[root@qls ~]# tail  /var/log/messages     # 系統的安全日誌 

# 檢視日誌的最後20行內容
[root@qls ~]# journalctl   -n 20

# 實時檢視日誌的輸出
[root@qls ~]# journalctl   -f

# 顯示日誌的級別日誌
[root@qls ~]# journalctl   -p  
alert    crit     debug    emerg    err      info     notice   warning  

# 只檢視某個服務的日誌 
[root@qls ~]# journalctl   -u  sshd

單使用者模式

#  忘記root密碼 
開機在grub介面輸入 e
在linux16開頭的行的最後面輸入  init=/bin/bash   enforcing=0      
按 ctrl鍵  +  x  
重新掛載根分割槽     mount  -o   rw,remount   /
修改密碼  echo 'new passwd' | passwd --stdinn root
重啟   exec  /sbin/init


#執行級別被設定為重啟
[root@web01 ~]# systemctl   set-default   reboot.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/reboot.target.
[root@web01 ~]# systemctl  get-default 
reboot.target
開機在grub介面輸入 e
在linux16開頭的行的最後面輸入  rd.break
按 ctrl鍵  +  x  
重新掛載根分割槽   mount  -o  rw,remount   /sysroot
賦予許可權     chroot   /sysroot
修改執行級別  
exit
reboo

救援模式

# 系統損壞了,資料很重要    需要把資料拷貝出來 
# MBR引導壞掉  
dd  if=/dev/zero  of=/dev/sda  bs=1  count=446

# 修復MBR 
grub2-install   /dev/sda   
grub2-mkconfig   -o   /boot/grub2/grub.cfg

網咖命令規則

規則1:如果Firmware或者BIOS提供的裝置索引資訊可用就用此命名。比如eno1。否則使用規則2
規則2:如果Firmware或Bios的PCI-E擴充套件插槽可用就用此命名。比如ens1,否則使用規則3
規則3:如果硬體介面的位置資訊可用就用此命名。比如enp2s0
規則4:根據MAC地址命名,比如enx7d3e9f。預設不開啟。
規則5:上述均不可用時迴歸傳統命名方式
上面的所有命名規則需要依賴於一個安裝包:biosdevname

# 命令列修改網絡卡命名規則
mv /etc/sysconfig/network-scripts/ifcfg-ens33   /etc/sysconfig/network-scripts/ifcfg-eth0
NAME=ens33
DEVICE=ens33
修改 
NAME=eth0
DEVICE=eth0
grub2-mkconfig   -o  /boot/grub2/grub.cfg
reboot

簡單系統優化



[root@qls ~]# ifconfig   eth1   172.16.1.100/24
[root@qls ~]# cp  /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth1

[root@qls ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.100
PREFIX=24

# 更新源
[root@qls ~]# rm -rf /etc/yum.repos.d/*
[root@qls ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@qls ~]# curl  -o   /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@qls ~]# ll  /etc/yum.repos.d/
total 8
-rw-r--r--. 1 root root 2523 Aug  5 20:09 CentOS-Base.repo
-rw-r--r--. 1 root root  664 Aug  5 20:09 epel.repo


# 關閉firewalld及selinux
[root@qls ~]# systemctl  stop firewalld
[root@qls ~]# systemctl  disable  firewalld
[root@qls ~]# setenforce  0
[root@qls ~]# vi  /etc/sysconfig/selinux 
[root@qls ~]# grep  'SELINUX'  /etc/sysconfig/selinux
# SELINUX= can take one of these three values:
SELINUX=disabled

# 關閉NetworkManager網路
[root@qls ~]# systemctl   stop NetworkManager
[root@qls ~]# systemctl   disable   NetworkManager

# 同步時間
[root@qls ~]# crontab -l
* * * * *  /usr/bin/ntpdate  ntp.aliyun.com  &> /dev/null

# 配置檔案介紹
<domain> <type>  <item>  <value>
<domain>表示要限制的使用者
<type>設定型別
<item>表示可選的資源
<value>表示要限制的值

# 加大檔案描述符
[root@qls ~]# echo '*               -       nofile          65535 ' >>/etc/security/limits.conf 

# 檢查結果
[root@qls ~]# tail -1 /etc/security/limits.conf