Linux基礎練習題(五)

一、建立一個10G分區,並格式爲ext4文件系統;

(1) 要求其block大小爲2048, 預留空間百分比爲2, 卷標爲MYDATA, 默認掛載屬性包含acl;linux

[root@bj-1-142 ~]# mke2fs -t ext4 -m3 -L MYDATA -b 2048 /dev/sdb1
# 配置默認掛在屬性啓用acl
[root@bj-1-142 ~]# tune2fs -o acl /dev/sdb1

(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;shell

[root@bj-1-142 ~]# mount -o noatime,noexec /dev/sdb1 /data/mydata/

二、建立一個大小爲1G的swap分區,並建立好文件系統,並啓用之;vim

[root@bj-1-142 ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。


命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分區號 (2-4,默認 2):2
起始 扇區 (20973568-167772159,默認爲 20973568):
將使用默認值 20973568
Last 扇區, +扇區 or +size{K,M,G} (20973568-167772159,默認爲 167772159):+1G
分區 2 已設置爲 Linux 類型,大小設爲 1 GiB

命令(輸入 m 獲取幫助):t
分區號 (1,2,默認 2):2
Hex 代碼(輸入 L 列出全部代碼):82
已將分區「Linux」的類型更改成「Linux swap / Solaris」

# 格式化swap分區並啓用之
[root@bj-1-142 ~]# swapon /dev/sdb2
[root@bj-1-142 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            977         244         139          11         593         560
Swap:          3072           0        3072

三、寫一個腳本

(1)、獲取並列出當前系統上的全部磁盤設備;bash

(2)、顯示每一個磁盤設備上每一個分區相關的空間使用信息;性能

[root@bj-1-142 ~]# cat disk.sh
#!/bin/bash
# Filename: disk.sh
# Author: enzhi.wang
# Date: 2017-02-15
# chkconfig:
# discription:

# print current system all disks
echo "print disk list."
fdisk -l | grep -o  "/dev/sd[a-z]"| uniq

# print all disk partition
echo "file system disk space usage"
df -h |grep "/dev/sd[a-z]"

四、總結RAID的各個級別及其組合方式和性能的不一樣;

RAID0特性:ui

​ 一、讀寫性能提高;this

​ 二、可用空間,N*minspa

​ 三、無容錯能力;3d

​ 四、最小磁盤數2,2+code

RAID1特性:

​ 一、讀性能提高,寫性能略有降低,同一份數據要存兩份;

​ 二、可用空間,1*min,磁盤總空間的一半;

​ 三、有冗餘能力;

​ 四、最少磁盤數,2,2+;

RAID5特性:

​ 一、讀寫性能提高;

​ 二、可用空間,N-1*min;

​ 三、有冗餘能力;

​ 四、最少磁盤數,3,3+;

RAID10特性:

​ 一、讀寫性能提高;

​ 二、可用空間,N*min/2;

​ 三、有冗餘能力,每組鏡像最多隻能壞一塊;

​ 四、最少磁盤數,4,4+;

五、建立一個大小爲10G的RAID1,要求有一個空閒盤,並且CHUNK大小爲128k;

[root@bj-1-160-enzhi ~]# mdadm -C /dev/md0 -a yes -l 1 -c 128 -n 2 /dev/sd[b,c]1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

六、建立一個大小爲4G的RAID5設備,chunk大小爲256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,並且不更新訪問時間戳,且支持acl功能;

[root@bj-1-160-enzhi ~]# mdadm -C /dev/md0 -c 256 -l 5 -n 3 /dev/sd[b,c,d]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@bj-1-160-enzhi ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Wed Feb 15 21:11:09 2017
     Raid Level : raid5
     Array Size : 4204544 (4.01 GiB 4.31 GB)
  Used Dev Size : 2102272 (2.00 GiB 2.15 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Wed Feb 15 21:11:20 2017
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 256K

           Name : bj-1-160-enzhi.com:0  (local to host bj-1-160-enzhi.com)
           UUID : 93d0b6f4:43f15ed3:8d289e89:bd0dea44
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       3       8       49        2      active sync   /dev/sdd1
[root@bj-1-160-enzhi ~]# mkfs.ext4 /dev/md0
[root@bj-1-160-enzhi ~]# mkdir /backup
[root@bj-1-160-enzhi ~]# vim /etc/fstab
/dev/md0                /backup                 ext4    defaults,noatime,acl    0 0
[root@bj-1-160-enzhi ~]# mount -a
[root@bj-1-160-enzhi ~]# mount |grep "/dev/md0"
/dev/md0 on /backup type ext4 (rw,noatime,acl)

七、寫一個腳本

​ (1) 接受一個以上文件路徑做爲參數;

​ (2) 顯示每一個文件擁有的行數;

​ (3) 總結說明本次共爲幾個文件統計了其行數;

#!/bin/bash
# -*- coding: utf-8 -*-
# Filename:    files.sh
# Author: enzhi.wang
# Date: 2017-02-15
# Description:

if [ $# -lt 1 ];then
    echo "Usage: $0 /path/to/somefile ..."
    exit 2
fi

count=0
# 若是參數爲目錄文件則提示用戶不是文件
for f in $*;do
    if [ -d $f ];then
        echo "error $f is a directory."
           exit 4
    else
        lines=$(wc -l $f|awk '{print $1}')
        echo "$f line sum = $lines"
        let count++
    fi
done
echo "本次共爲$count個文件統計了行數."

八、寫一個腳本

​ (1) 傳遞兩個以上字符串看成用戶名;

​ (2) 建立這些用戶;且密碼同用戶名;

​ (3) 總結說明共建立了幾個用戶;

#!/bin/bash
# -*- coding: utf-8 -*-
# Filename:    adduser1.sh
# Author: enzhi.wang
# Date: 2017-02-15
# Description:

if [ $# -lt 1 ];then
    echo "Usage: $0 username1 username2 ..."
    exit 2
fi

count=0
for u in $*;do
    if id $u &>/dev/null;then
        echo "error user $u is exists."
    else
        useradd $u
        echo "$u"|passwd --stdin $u &>/dev/null
        echo "useradd $u is finished."
        let count++
    fi
done
echo "create $count users."

九、寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和;

#!/bin/bash
# -*- coding: utf-8 -*-
# Filename:    adduser2.sh
# Author: enzhi.wang
# Date: 2017-02-15
# Description:
uid_sum=0
for i in {1..20};do
    useradd visitor$i
    uid=$(id -u visitor$i)
    uid_sum=$[$uid_sum + $uid]
done
echo "UID sum $uid_sum"
相關文章
相關標籤/搜索