天天看點

第八周作業

一、每周的工作日1:30,将/etc備份至/backup目錄中,儲存的檔案名稱格式 為“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的時間

建立腳本:etc_bakcup.sh

[root@centos6 data]# vim etc_backup.sh

#!/bin/bash

[ -d /backup ] || mkdir /backup

rpm -q xz >/dev/null

[ $? -eq 0 ] || yum -y install xz >/dev/null

DATEFORMAT=<code>date -d yesterday "+%Y-%m-%d-%H-%M"</code>

tar -cf /backup/etcbak-$DATEFORMAT.tar /etc &gt; /dev/null &amp;&amp; xz -z /backup/etcbak-$DATEFORMAT.tar

[root@centos6 data]# chmod +x etc_backup.sh

[root@centos6 data]#crontab -e

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

30 1 0 /data/etc_backup.sh &amp;&gt;/dev/null

如圖:是為了更快看見效果,調整為每分鐘執行一次的結果圖:

第八周作業

如何還原:

xz -d -k etcbak-2021-07-11-14.tar.xz

tar xf etcbak-2021-07-11-14.tar

二、工作日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區使用率高于80%,就發送郵件報警

[17:00:35 root@centos8[ script]#cat checkdisk.sh

WARNING=80

SPACE_USED=<code>df |grep '^/dev/sd'|grep -oE '[0-9]+%'|tr -d %|sort -nr|head -1</code>

INODE_USED=<code>df -i |grep '^/dev/sd'|grep -oE '[0-9]+%'|tr -d %|sort -nr|head -1</code>

[ "$SPACE_USED" -gt $WARNING -o "$INODE_USED" -gt $WARNING ] &amp;&amp; echo "disk used is $SPACE_USED,INODE_USED:$INODE_USED,will be full" | mail -s diskwarning [email protected]

三、簡述linux作業系統啟動流程

Centos 6啟動流程

1.加載BIOS的硬體資訊,獲得第一個啟動裝置

2.讀取第一個啟動裝置MBR的引導程式(grub)的啟動資訊

grub啟動過程

1st stage(1階段):MBR的前446個位元組

1.5 stage(1.5階段): MBR 之後的扇區,讓stage1中的bootloader能識别stage2所在的分區 上的檔案系統

2nd stage(2階段),解析分區檔案/boot/grub/解析/boot/grub/grub.conf(指明核心和驅動程式)

3.加載核心作業系統的核心資訊,核心開始解壓縮,并嘗試驅動所有的硬體裝置

4.核心執行init程式,并獲得預設的運作資訊

5.init程式執行/etc/rc.d/rc.sysinit檔案,重新關注根檔案系統

6.啟動核心的外挂子產品

7.init執行運作的各個批處理檔案(scripts)

8.init執行/etc/rc.d/rc.local

9.執行/bin/login程式,等待使用者登入

10.登入後開始以shell控制主機

CentOS 7之後版本啟動流程

UEFi或BIOS初始化,運作POST開機自檢

選擇啟動裝置

引導裝載程式, centos7是grub2,加載裝載程式的配置檔案:

/etc/grub.d/

/etc/default/grub

/boot/grub2/grub.cfg

加載initramfs驅動子產品

加載核心選項

核心初始化,centos7使用systemd代替init

執行initrd.target所有單元,包括挂載/etc/fstab

從initramfs根檔案系統切換到磁盤根目錄

systemd執行預設target配置,配置檔案/etc/systemd/system/default.target

systemd執行sysinit.target初始化系統及basic.target準備作業系統

systemd啟動multi-user.target下的本機與伺服器服務

systemd執行multi-user.target下的/etc/rc.d/rc.local

Systemd執行multi-user.target下的getty.target及登入服務

systemd執行graphical需要的服務

四、制作一個隻運作shell的linux系統

1.分區并建立檔案系統

#分兩個必要的分區,/dev/sdb1對應/boot /dev/sdb2對應根 /

[root@centos6 ~]#echo -e 'n\np\n1\n\n+1G\nw\n' | fdisk /dev/sdb

[root@centos6 ~]#echo -e 'n\np\n2\n\n\n\nw\n' | fdisk /dev/sdb

[root@centos6 ~]#mkfs.ext4 /dev/sdb1

[root@centos6 ~]#mkfs.ext4 /dev/sdb2

2.挂載boot

#子目錄必須為boot

[root@centos6 ~]#mkdir /mnt/boot

[root@centos6 ~]#mount /dev/sdb1 /mnt/boot

3.安裝grub

[root@centos6 ~]#grub-install --root-directory=/mnt/ /dev/sdb

4.準備核心和initramfs檔案

[root@centos6 ~]#cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /mnt/boot/vmlinuz

[root@centos6 ~]#cp /boot/initramfs-2.6.32-754.el6.x86_64.img /mnt/boot/initramfs.img

5.建立grub.conf

[root@centos6 ~]# cat /mnt/boot/grub/grub.conf

default=0

timeout=6

title tiger linux

root (hd0,0)

kernel /vmlinuz root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs.img

6.準備根下面相關程式和庫

#準備根目錄下目錄

[root@centos6 ~]#mkdir /mnt/sysroot

[root@centos6 ~]#mount /dev/sdb2 /mnt/sysroot

[root@centos6 ~]#mkdir –pv /mnt/sysroot/{boot,dev,sys,proc,etc,lib,lib64,bin,sbin,tmp,var,usr,opt,home,root,mnt,media}

#複制相關程式及相關庫檔案

[root@centos6 ~]# which bash

/bin/bash

[root@centos6 ~]# cp -a /bin/bash /mnt/sysroot/bin/

[root@centos6 ~]# ldd /bin/bash |sed -nr 's#.(\/./.) .#\1#p'

/lib64/libtinfo.so.5

/lib64/libdl.so.2

/lib64/libc.so.6

/lib64/ld-linux-x86-64.so.2

[root@centos6 ~]# cp -ar <code>ldd /bin/bash |sed -nr 's#.*(\/.*/.*) .*#\1#p'</code> /mnt/sysroot/lib64/

#準備網卡驅動

[root@centos6 ~]#ethtool -i eth0

[root@centos6 ~]#modinfo -n e1000

/lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko

[root@centos6 ~]#cp /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/

[root@centos6 ~]#chroot /mnt/sysroot

五、總結systemctl管理指令及system unit檔案格式

管理系統服務service unit

格式:

systemctl COMMAND name.service

常用COMMAND:

start:啟動服務

restart:重新開機

stop:停止

status:檢視狀态

enable:設定開啟啟動

disable:開機不啟動

mask:禁止自動和手動啟動服務,将服務mask後start指令就不起作用

unmask:取消mask

is-active:檢視服務是否激活狀态

is-enabled:檢視服務是否開機啟動

list-units:檢視所有了units

list-dependencies:檢視服務依賴關系

system unit檔案格式

service unit file檔案通常由三部分組成:

[Unit]:定義與Unit類型無關的通用選項;用于提供unit的描述資訊、unit行為及依賴關系等

[Service]:與特定類型相關的專用選項;此處為Service類型

[Install]:定義由“systemctl enable”以及"systemctl disable“指令在實作服務啟用或禁用時用到的一些選項

六、破解centos7 密碼

方法一:

1.啟動時任意鍵暫停啟動

2.按e鍵進入編輯模式

3.将光标移動linux 開始的行,添加核心參數rd.break

4.按ctrl-x啟動

5.切根并修改密碼

mount –o remount,rw /sysroot

chroot /sysroot

passwd root

#如果SELinux是啟用的,才需要執行下面操作,如查沒有啟動,不需要執行

touch /.autorelabel

exit

reboot

方法二:

3.将光标移動linux 開始的行,改為rw init=/sysroot/bin/sh

5.切根,并修改root密碼,