N25-week7 作業

1. 創建一個10G的分區,并格式為ext4文件系統
  (1) 要求block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;
  (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳

#創建文件系統,首先使用fdisk對磁盤進行分區操作

[root@localhost ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
#fdisk下n命令創建新的分區
     Command (m for help): n
#選擇p創建主分區
Command action
  e   extended
     p   primary partition (1-4)
#選擇1創建1號分區
Partition number (1-4): 1
#起始柱面默認選1
First cylinder (1-261, default 1):
Using default value 1
#結尾柱面默認為最后一個柱面
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261
#使用t命令來修改分區的system id
Command (m for help): t
Selected partition 1
#83為ext系列文件系統的system id
Hex code (type L to list codes): 83
#使用w命令將操作保存
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#之后使用重讀分區表

[root@localhost ~]# partx -a /dev/sdb

#查看/proc/partitions文件

[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1     512000 sda1
   8        2   20458496 sda2
   8       16    2097152 sdb
   8       17    2096451 sdb1
   8       32    1048576 sdc
 253        0   18423808 dm-0
 253        1    2031616 dm-1

#到此,分區創建完畢,下面來對分區進行ext文件系統的格式化

#使用mkfs.ext4命令來格式化/dev/sdb1

[root@localhost ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MYDATA
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 1048224 blocks
20964 blocks (2.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=537919488
64 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

#然后創建/data/mydata目錄

[root@localhost ~]# mkdir -p /data/mydata

#之后使用mount命令將/dev/sdb1掛載到/data/mydata上

[root@localhost ~]# mount -a -t ext4  -o noexec -o noatime -o acl /dev/sdb1 /dat
[root@localhost ~]# cd /data/mydata/
[root@localhost mydata]# ll
total 16
drwx------. 2 root root 16384 Feb 18 15:39 lost+found
[root@localhost mydata]#

2. 創建一個大小為10G的swap分區,并創建好文件系統,并啟用之;
#使用fdisk命令在sdc硬盤上新建分區

[root@localhost ~]# fdisk /dev/sdc

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):
Using default value 130

#調整system type為82(swap)
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#partx /dev/sdc重讀分區表

[root@localhost ~]# partx /dev/sdc
# 1:        63-  2088449 (  2088387 sectors,   1069 MB)
# 2:         0-       -1 (        0 sectors,      0 MB)
# 3:         0-       -1 (        0 sectors,      0 MB)
# 4:         0-       -1 (        0 sectors,      0 MB)

#查看系統是否認出/dev/sdc1分區

[root@localhost ~]# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1     512000 sda1
   8        2   20458496 sda2
   8       16    2097152 sdb
   8       17    2096451 sdb1
   8       32    1048576 sdc
   8       33    1044193 sdc1
 253        0   18423808 dm-0
 253        1    2031616 dm-1
[root@localhost ~]#

#為/dev/sdc1創建swap文件系統

[root@localhost ~]# mkswap /dev/sdc1
Setting up swapspace version 1, size = 1044188 KiB
no label, UUID=80f20b38-b6e2-48b1-902c-995f3cbad9da

#使用free命令查看當前swap文件系統的大小

[root@localhost ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       240M       740M       204K        22M        92M
-/+ buffers/cache:       126M       854M
Swap:         1.9G         0B       1.9G

#使用swapon命令啟用/dev/sdc1 swap分區

[root@localhost ~]# swapon /dev/sdc1

#再使用free命名查看swap文件系統的大小, 由1.9G增加到2.9G, 說明/dev/sdc1 swap分區成功啟用

[root@localhost ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       240M       739M       204K        22M        92M
-/+ buffers/cache:       126M       854M
Swap:         2.9G         0B       2.9G

3. 寫一個腳本
(1) 獲取并列出當前系統上的所有磁盤設備
(2) 顯示每個磁盤設備上每個分區相關的空間使用信息

#腳本內容

[root@localhost ~]# cat week7.sh
#!/bin/bash

#獲取并列出當前系統上的所有磁盤設備
#顯示每個磁盤設備上每個分區相關的空間使用信息

declare i #聲明變量i, 用于控制for循環體
declare disk_list #聲明變量 disk_lis,保存系統上磁盤設備列表

disk_list=$(ls /dev/{hd,sd}* 2> /dev/null)
echo -e  "System disk device list:\n$disk_list"

echo -e  "\nDetails of Used/Free space:"

for i in $disk_list ; do
        df -h -T $i
done

#腳本執行結果

[root@localhost ~]# bash week7.sh
System disk device list:
/dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdb1
/dev/sdc
/dev/sdc1

Details of Used/Free space:
Filesystem     Type  Size  Used Avail Use% Mounted on
-              -     480M  200K  480M   1% /dev
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda1      ext4  477M   28M  425M   7% /boot
Filesystem     Type  Size  Used Avail Use% Mounted on
-              -     480M  200K  480M   1% /dev
Filesystem     Type  Size  Used Avail Use% Mounted on
-              -     480M  200K  480M   1% /dev
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext4  2.0G  9.1M  1.9G   1% /data/mydata
Filesystem     Type  Size  Used Avail Use% Mounted on
-              -     480M  200K  480M   1% /dev
Filesystem     Type  Size  Used Avail Use% Mounted on
-              -     480M  200K  480M   1% /dev

4. 總結RAID的各個級別及其組合方式和性能的不同

5. 創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為 128K

6. 創建一個大小為4G的RAID5設備,chunk大小為256K,格式化為ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能

7. 寫一個腳本
(1) 接受一個以上文件路徑作為參數
(2) 顯示每個文件擁有的行數
(3) 總結說明本次共為幾個文件統計了其行數

#腳本內容
#!/bin/bash

#接受一個以上的文件路徑作為參數
#顯示每個文件擁有的行數
#總結說明本次共為幾個文件統計了行數

#聲明變量i,用于控制for循環體
declare i
declare File_List
declare File_Count=0

read -p "Please input file name here, this script could count lines number of the file you typed. Warnning:you should type at least 1 file:" File_List

if [[ -z $File_List ]]; then
   echo "At least provide one file to run this script"
   exit 2
else
   for i in $File_List; do
        if [ ! -e $i ];then
             echo "No such file: $i"
        elif [ ! -f $i ];then
             echo "File $i is not a normal file and canot count lines number"
        else
             echo "line number of file $i is $(wc -l $i|cut -f1 -d' ')"
             let File_Count=$File_Count+1
        fi
   done
fi

echo "Totaly count line number of $File_Count files."

unset i
unset File_List
unset File_Count

#運行結果
#(1)未給出參數的運行結果

[root@localhost ~]# bash week7_2.sh
Please input file name here, this script could count lines number of the file you typed. Warnning:you should type at least 1 file:
At least provide one file to run this script
[root@localhost ~]#

#(2)給出1個不存在的文件,一個設備文件,一個普通文件的運行結果

[root@localhost ~]# bash week7_2.sh
Please input file name here, this script could count lines number of the file you typed. Warnning:you should type at least 1 file:a
No such file: a
Totaly count line number of 0 files.
[root@localhost ~]#

#(3)給出N個普通文件的運行結果

[root@localhost ~]# !b
bash week7_2.sh
Please input file name here, this script could count lines number of the file you typed. Warnning:you should type at least 1 file:/etc/fstab /etc/rc.d/rc.sysinit /proc/partitins /root/week7.sh /root/week7_2.sh
line number of file /etc/fstab is 16
line number of file /etc/rc.d/rc.sysinit is 691
No such file: /proc/partitins
line number of file /root/week7.sh is 19
line number of file /root/week7_2.sh is 34
Totaly count line number of 4 files.

#(4)給出的文件中沒有普通文件的運行結果

[root@localhost ~]# !b
bash week7_2.sh
Please input file name here, this script could count lines number of the file you typed. Warnning:you should type at least 1 file:/roott/week7.sh /ect/fstab /dev/sda /dev/sdc1
No such file: /roott/week7.sh
No such file: /ect/fstab
File /dev/sda is not a normal file and canot count lines number
File /dev/sdc1 is not a normal file and canot count lines number
Totaly count line number of 0 files.
[root@localhost ~]#

8 寫一個腳本
(1) 傳遞兩個以上的字符串當做用戶名
(2) 創建這些用戶,且密碼同用戶名
(3) 總結說明共創建了幾個用戶
#腳本內容

[root@localhost ~]# cat week7_3.sh
#!/bin/bash

#傳遞兩個以上的字符串當做用戶名
#創建這些用戶,且密碼同用戶名
#總結說明共創建了幾個用戶

declare i #用于控制for循環體
declare user_list
declare user_count

read -p "please type username which need to be created:" user_list
echo $user_list
if [[ -z $user_list ]]; then
   echo "Invaild parameter"
   exit 2
else
   for i in $user_list; do
      if id $i &> /dev/null;then
         echo "$i exists"
      elif [[ $(echo ${#i}) -le 2 ]];then
         echo "Length of username should be more than 2 charactors"
      else
         useradd $i &> /dev/null && echo $i | passwd $i --stdin &> /dev/null && echo "add user $i sucessfully. Password is the same as username"
         let user_count=$user_count+1
      fi
   done
fi

echo "Totally add $user_count users."

unset i
unset user_list
unset user_count
[root@localhost ~]#

#執行結果
#(1) 未給出參數的執行結果

[root@localhost ~]# bash week7_3.sh
please type username which need to be created:

Invaild parameter
[root@localhost ~]#

#(2) 傳遞的參數字符數小于2的執行結果

[root@localhost ~]# !b
bash week7_3.sh
please type username which need to be created:a b cd de c1
a b cd de c1
Length of username should be more than 2 charactors
Length of username should be more than 2 charactors
Length of username should be more than 2 charactors
Length of username should be more than 2 charactors
Length of username should be more than 2 charactors
Totally add 0 users.
[root@localhost ~]#

#(3) 傳遞的參數已經存在于系統的執行結果

[root@localhost ~]# !b
bash week7_3.sh
please type username which need to be created:root bin daemon adm lp
root bin daemon adm lp
root exists
bin exists
daemon exists
adm exists
lp exists
Totally add 0 users.
[root@localhost ~]#

#(4) 正常添加用戶名的執行結果

[root@localhost ~]# !b
bash week7_3.sh
please type username which need to be created:week7 week7_1 week7_3
week7 week7_1 week7_3
add user week7 sucessfully. Password is the same as username
add user week7_1 sucessfully. Password is the same as username
add user week7_3 sucessfully. Password is the same as username
Totally add 3 users.
[root@localhost ~]#

9. 寫一個腳本,新建20個用戶visitor1-vistor20, 計算他們的ID之和

#腳本內容

[root@localhost ~]# cat week7_4.sh
#! /bin/bash

#寫一個腳本,新建20個用戶visitor1-vissitor20,計算他們的ID之和

declare i
declare user_count=0
declare id_sum=0

for i in {1..20}; do
   if id visitor$i &> /dev/null;then
      echo "user visitor$i exists."
   else
      useradd visitor$i &> /dev/null && echo "Add visitor$i" && let id_sum=$(id -u visitor$i)+$id_sum && let user_count=$user_count+1
   fi
done

echo "Total add $user_count users and sum id number is $id_sum"

unset i
unset user_count
unset id_sum
[root@localhost ~]#

#執行結果
#(1) 第一次執行結果,visitor1-visitor20全部添加,并計算出id之和

[root@localhost ~]# bash week7_4.sh
Add visitor1
Add visitor2
Add visitor3
Add visitor4
Add visitor5
Add visitor6
Add visitor7
Add visitor8
Add visitor9
Add visitor10
Add visitor11
Add visitor12
Add visitor13
Add visitor14
Add visitor15
Add visitor16
Add visitor17
Add visitor18
Add visitor19
Add visitor20
Total add 20 users and sum id number is 10210
[root@localhost ~]#

#(2) 第二次執行結果,visitor1-visitor20全部已經存在,沒有添加用戶,沒有計算id之和

[root@localhost ~]# bash week7_4.sh
user visitor1 exists.
user visitor2 exists.
user visitor3 exists.
user visitor4 exists.
user visitor5 exists.
user visitor6 exists.
user visitor7 exists.
user visitor8 exists.
user visitor9 exists.
user visitor10 exists.
user visitor11 exists.
user visitor12 exists.
user visitor13 exists.
user visitor14 exists.
user visitor15 exists.
user visitor16 exists.
user visitor17 exists.
user visitor18 exists.
user visitor19 exists.
user visitor20 exists.
Total add 0 users and sum id number is 0
[root@localhost ~]#

#(3) 第三次執行結果,刪除奇數結尾的visitor用戶之后,再次執行,添加了10個用戶,并計算了id之和

[root@localhost ~]# for i in $(seq 1 2 20);do userdel -r visitor$i
> done
[root@localhost ~]# tail /etc/passwd
visitor2:x:502:502::/home/visitor2:/bin/bash
visitor4:x:504:504::/home/visitor4:/bin/bash
visitor6:x:506:506::/home/visitor6:/bin/bash
visitor8:x:508:508::/home/visitor8:/bin/bash
visitor10:x:510:510::/home/visitor10:/bin/bash
visitor12:x:512:512::/home/visitor12:/bin/bash
visitor14:x:514:514::/home/visitor14:/bin/bash
visitor16:x:516:516::/home/visitor16:/bin/bash
visitor18:x:518:518::/home/visitor18:/bin/bash
visitor20:x:520:520::/home/visitor20:/bin/bash
[root@localhost ~]# bash week7_4.sh
Add visitor1
user visitor2 exists.
Add visitor3
user visitor4 exists.
Add visitor5
user visitor6 exists.
Add visitor7
user visitor8 exists.
Add visitor9
user visitor10 exists.
Add visitor11
user visitor12 exists.
Add visitor13
user visitor14 exists.
Add visitor15
user visitor16 exists.
Add visitor17
user visitor18 exists.
Add visitor19
user visitor20 exists.
Total add 10 users and sum id number is 5255
[root@localhost ~]#

原創文章,作者:JL,如若轉載,請注明出處:http://www.www58058.com/69800

(0)
JLJL
上一篇 2017-02-22
下一篇 2017-02-22

相關推薦

  • 20本最好的Linux免費書籍

    前些天Neo推薦了一個網站有《超過100本的linux免費書籍》,這里,我也向大家推薦20本最好的Linux免費書籍,當然,也是英文版的。 1. Ubuntu Pocket Guide and Reference 一本介紹關于Ubuntu 8.04和8.10的使用書。 Website www.ubuntupocketguide.com Author Keir…

    Linux干貨 2015-04-01
  • linux終端的類型與linux發展歷史

    一、linux console的類型與說明 說明:        1 由于虛擬終端的實現,人們可以多用戶多任務的在一臺計算機操作系統上工作             2 在80或90年代的舊電腦上,人們只能用分屏這樣的方法來實現多用戶,多任務的工作  …

    Linux干貨 2013-07-03
  • http協議簡介

        http:Hyper Text Transfer Protocol,超文本傳輸協議。是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。1960年美國人Ted Nelson構思了一種通過計算機處理文本信息的方法,并稱之為超文本(hyp…

    Linux干貨 2015-11-18
  • bash之腳本入門及課后作業

    概述: shell是一個工具程序,在用戶登錄后后系統啟動,它解釋并運行由命令或腳本文件輸入的命令,從而實現用戶與內核之間的交互。bash是Linux操作系統上默認的shell,在交互和編程兩方面,bash提供了許多Bourne shell沒有的功能,并且還結合了C shell和Kron shell最有用的功能。 bash的語法和結構   …

    Linux干貨 2016-08-15
  • N25第三周博客作業

    第三周博客作業: 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。                  …

    Linux干貨 2016-12-12
  • 海量數據處理算法—Bit-Map

    1. Bit Map算法簡介         來自于《編程珠璣》。所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由于采用了Bit為單位來存儲數據,因此在存儲空間方面,可以大大節省。 2、 Bit Map的基本思想       &nbs…

    Linux干貨 2015-11-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-15 01:28

    贊~給出詳細的實現方式也給出了實驗結果~比較不錯~繼續加油!

欧美性久久久久