1.創建一個10G分區,并格式為ext4文件系統:
(1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;
(2)掛載至/data/mydata目錄,要求掛載時禁止程序自行運行,且不更新文件的訪問時間戳;
fdisk /dev/sdb
partx -a /dev/sdb1
mkfs.ext4 -b 2048 -m 2 -L "MYDATA" /dev/sdb1
vim /etc/fstab
/dev/sdb1 /data/mydata ext4 rw,suid,dev,noexec,auto,nouser,async,noatime 0 0
2.創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;
fdisk /dev/sdb
partx -a /dev/sdb2
mkswap -L "myswap" /dev/sdb2
swapon /dev/sdb2
3.寫一個腳本
(1)獲取并列出當前系統上的所有磁盤設備;
(2)顯示每個磁盤設備上每個分區相關的空間使用信息;
#!/bin/bash
#
echo "all disk as follows :"
fdisk -l |egrep '^Disk[[:space:]]+/dev/' |awk '{print $2}' |awk -F: '{print $1}'
echo "————————"
echo "partions space has used:"
for disk in $(fdisk -l |egrep '^Disk[[:space:]]+/dev/' |awk '{print $2}' |awk -F: '{print $1}');do
for part in $(fdisk -l $disk |grep '^/dev/'|awk '{print $1}');do
echo "$part partion used:$(df -h $part| awk '/\/dev\//{print $5}')"
done
done
4.總結RAID的各個級別機器組合方式和性能的不同:
raid0:條帶卷;至少2塊盤,讀、寫性能提升,無冗錯能力,空間:N*min(S1,S2,…)
raid1:鏡像卷;至少2塊盤,讀性能提升、寫性能下降,有冗錯能力,空間:1*min(S1,S2,…)
raid4:奇偶校驗的獨立磁盤結構;存儲校驗碼的硬盤是單獨的盤,其余和raid5基本類似
raid5:分布式奇偶校驗的獨立磁盤結構;至少3塊盤,讀、寫性能提升,有冗余能力,空間:(N-1)*min(S1,S2,…)
raid6:兩種存儲的奇偶校驗碼的磁盤結構;至少4塊盤,讀寫性能提升,有容錯能力,空間:(N-2)*min(S1,S2,…)
raid10:先做raid1,再做raid0;讀寫性能提升,至少4塊盤,有容錯能力,空間:N*min(S1,S2,…)/2
JBOD:將多塊磁盤的空間合并一個大的連續空間使用,空間:sum(S1,S2,…)
5.創建一個大小為10G的raid1,要求有一個空閑盤,而且chunk大小為128K;
mdadm -C /dev/md0 -n 2 -x 1 -c 128 -l 1 /dev/sdb3 /dev/sdc1 /dev/sdc2
6.創建一個大小為4G的raid5設備,chunk大小為256K,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能;
mdadm -C /dev/md0 -n 3 -l 5 -c 256 /dev/sdb3 /dev/sdc1 /dev/sdc2
mkfs.ext4 /dev/md0
vim /etc/fstab
/dev/md/localhost.localdomain:0 /backup ext4 rw,acl,noatime 0 0
7.寫一個腳本:
(1)接受一個以上文件路徑作為參數
(2)顯示每個文件擁有的行數
(3)總結說明本次公文幾個文件統計了其行數
#!/bin/bash
#
read -p "please input the file path:" -a line
echo "================================="
if [ ${#line[@]} -lt 1 ];then
echo "please input file path like:/path/to/file"
else
for i in $(seq 0 $[${#line[*]}-1]);do
if [ -f ${line[$i]} ];then
echo "${line[$i]} lines is:$(cat ${line[$i]} |wc -l)"
else
echo "please input a file path like:/etc/path/to/file"
exit 1
fi
done
echo "file number:${#line[@]}"
fi
8.寫一個腳本:
(1)傳遞兩個以上的字符串當做用戶名
(2)創建這些用戶名,且密碼同用戶名
(3)總結說明共創建了幾個用戶
#!/bin/bash
#
declare -i sum=0
read -p "please more than one strings:" -a user
if [ ${#user[@]} -lt 1 ];then
echo "please input strings like:string1 string1 …"
exit 1
else
for i in $( seq 0 $[${#user[*]}-1]);do
if id ${user[$i]} &>/dev/null ;then
echo "${user[$i]} is exist!please input agin!"
elif [[ ! ${user[$i]} =~ [[:alpha:]]+ ]];then –>想匹配為大小寫字母及數字,但是user$此類還是可以添加成功
echo "please input correct string"
else
useradd ${user[$i]}&&echo "${user[$i]}" |passwd –stdin ${user[$i]} &>/dev/null &&echo "${user[$i]} add success"&&let sum++
fi
done
fi
echo "sum of new adduser:$sum"
9.寫一個腳本,新建20個用戶,visitor1-visitor20,計算他們的ID之和;
#!/bin/bash
#
declare -i sum=0
for i in {1..20};do
useradd visitor${i}&&echo "add success"
let sum+=$(id user1|cut -d" " -f1 |sed -r 's/\(.*\)//g;s/uid=//g')
done
echo "userid sum:$sum"
10.寫一個腳本,分別統計/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#開頭的行數之和,以及總的空白行數
#!/bin/bash
#
echo "At the beginning of the line # ,rc.sysinit:$(cat /etc/rc.d/rc.sysinit |egrep '^#' |wc -l)"
echo "Blank row ,rc.sysinit:i$(cat /etc/rc.d/rc.sysinit |egrep '^$' |wc -l)"
echo
echo "At the beginning of the line # ,functions:$(cat /etc/rc.d/init.d/functions |egrep '^#' |wc -l)"
echo "Blank row ,functions:i$(cat /etc/rc.d/init.d/functions |egrep '^$' |wc -l)"
echo
echo "At the beginning of the line # ,/etc/fstab:$(cat /etc/fstab |egrep '^#' |wc -l)"
echo "Blank row ,/etc/fstab:i$(cat /etc/fstab |egrep '^$' |wc -l)"
11.寫一個腳本,顯示當前系統上所有默認shell為bash的用戶的用戶名、UID以及此類所有用戶的UID之和
#!/bin/bash
#
echo "/bin/bash user==>uname uid:"
echo "$(awk -F: '$NF=="/bin/bash"{print $1,$3}' /etc/passwd)"
echo "sum of uid:$(awk -F: 'BEDIN{sum=0}$NF=="/bin/bash"{sum=sum+$3}END{print sum}' /etc/passwd)"
12.寫一個腳本,顯示當前系統上所有擁有附加組的用戶的用戶名,并說明共有多少個此類用戶
#!/bin/bash
#
User=($(awk -F: '{print $1}' /etc/passwd))
for i in $(seq 0 $[${#User[@]}-1]);do
if [ $(id ${User[$i]} |cut -d" " -f3 |awk -F"," '{print NF}') -gt 1 ];then
echo "user who have supp-group:${User[$i]}"
let sum++
fi
done
echo "sum,user who have supplementary group:$sum"
13.創建一個有至少兩個物理卷組成的大小為20G的卷組,要求:PE大小為8M;
在卷組中創建一個大小為5G的邏輯卷mylv1,格式戶為ext4文件系統,開機自動掛載至/users目錄,支持acl;
分區:
fdisk /dev/sdb
fdisk /dev/sdc
分別創建/dev/sdb3、/dev/sdc1分區;分區類型設置8e;partx -a /dev/sdb3、partx -a /dev/sdc1重讀硬盤分區表信息
lvm創建:
(1)pvcreate /dev/sdb3 /deb/sdbc1
(2)vgcteate -s 8M myvg /deb/sdb3 /deb/sdc1
(3)lvcreate -L 5G -n mylv1 myvg
(4)mkfs.ext4 /dev/mapper/myvg-mylv1
(5)mkdir /users
(6)vim /etc/fstab –>添加一條內容:/dev/mapper/myvg-mylv1 /users ext4 rw,acl,auto 0 0
(7)
14.新建用戶magedu,其家目錄為/users/magedu,而后su切換至此用戶,賦值多個文件至家目錄;
useradd -m -k /etc/skel -d /users/magedu magedu;su -l magedu ;cp -a /etc/pam.d /users/magedu
15.擴展mylv1至9G,確保擴展后原有數據可用;
lvextend -L 9G /dev/mapper/myvg-mylv1 ; resize2fs /dev/mapper/myvg-mylv1 ;df -h
16.縮減mylv1至7G,確保擴展后原有數據可用;
umount /dev/mapper/myvg-mylv1
e2fsck -f /dev/mapper/myvg-mylv1
resize2fs /dev/mapper/myvg-mylv1 7G
lvreduce -L 7G /dev/mapper/myvg-mylv1
mount /dev/mapper/myvg-mylv1 /users/
17.對mylv1創建快照,并通過備份數據,要求保留原有的屬主屬組等信息;
lvcreate -s -p r -L 1G -n mylv1-snapshot /dev/mapper/myvg-mylv1
mount /dev/mapper/myvg-mylv1 /mnt
文件系統備份:
tar -Jcvpf /tmp/mylv1_$(date +%Y-%m-%d-%T).tat.xz /mnt/
塊的備份:
dd if=/dev/mapper/myvg-mylv1–snapshot of=/tmp/myvg-mylv1–snapshot.dd
刪除快照:
lvremove /dev/mapper/myvg-mylv1–snapshot
原創文章,作者:snow,如若轉載,請注明出處:http://www.www58058.com/19368
寫的很棒,有的腳本是不是可以在優化一下那?