linux 系統磁盤管理

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

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

#]tune2fs -m 2 /dev/sda3
[root@localhost ~]# mke2fs  -t ext4 -b 2048 -L MYDATA -m 2 /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=MYDATA
OS type: Linux
塊大小=2048 (log=1)
分塊大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=273678336
320 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, 1327104, 
        2048000, 3981312

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

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

[root@localhost ~]# mkdir -pv  /data/mydata
mkdir: 已建立目錄 "/data"
mkdir: 已建立目錄 "/data/mydata"
[root@localhost ~]# mount /dev/sda3 /data/mydata/


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

[root@localhost ~]#mkswap /dev/sda4
[root@localhost ~]#swapon /dev/sda4

三、寫一個腳本網絡

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

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

#!/bin/bash
#
echo "當前系統磁盤設備有:"

fdisk -l | grep -o "^Disk /dev/[sh]d[a-z]" | cut -d' ' -f2

# 顯示每一個磁盤的分區信息

for i in $(fdisk -l | grep -o "^Disk /dev/[sh]d[a-z]" | cut -d' ' -f2);do
  echo "============$i 磁盤分區信息==========="
  fdisk -l $i
  echo
done

腳本測試dom

[root@localhost script]# bash getdisk.sh 
當前系統磁盤設備有:
/dev/sda
/dev/sdb
============/dev/sda 磁盤分區信息===========

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004d0da

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       10444    83373056   8e  Linux LVM

============/dev/sdb 磁盤分區信息===========

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x266ebb54

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb2            1307        1332      208845   82  Linux swap / Solaris

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

  RAID 全稱 Redundant Arrays f Independent Disks,目前經常使用RAID級別有5種:RAID0、一、四、五、六、10。工具

  RAID0:提供了IO性能擴展能力,讀寫性能獲得提高。

         缺點:無容錯能力,一塊磁盤損壞,其餘磁盤將受影響。

         組合方式:經過2塊及以上磁盤組成可用空間爲N*min(S1,S2,...)磁盤。

  RAID1:讀性能提高,寫性能略有降低,有冗餘能力

         組合方式:2塊及以上磁盤組成可用空間爲min(S1,S2,...)

  RAID4:讀寫性能獲得提高,同時擁有冗餘能力

          組合方式:兩塊磁盤存儲數據,第三存儲前兩塊磁盤按位異或的結果。

          如:DISK1存儲:1101;DISK2存儲:0110;DISK3存儲:1101異或0110=>1011

  RAID5:讀寫性能提高,有1塊磁盤容錯能力。與RAID4不一樣的是,在每塊磁盤上都有chuk。

          組合方式:最少3塊磁盤數,組成可用空間:(N-1)*min(S1,S2,...)磁盤

  RAID6:讀寫性能提高,有2塊磁盤容錯能力。比RAID5多一塊校驗盤

          組合方式:最少4塊磁盤數,組成可用空間:(N-2)*min(S1,S2,...)磁盤

  RAID10:讀寫性能提高,存儲數據先分割,後存儲到兩塊磁盤組成的RAID1的鏡像中

          有容錯能力,每組RAID1組成的鏡像自多隻能壞一塊磁盤

          組合方式:最少4塊磁盤數,組成可用空間:N*min(S1,S2,...)/2磁盤

        

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

一、建立3塊10G空閒盤,並調整格式爲fd

[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 1
First cylinder (1-13054, default 1): 
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +10G
Command (m for help): t
Partition number (1-4): 
Value out of range.
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

二、用mdadm工具建立RAID1

    -C:指明建立的磁盤 md0

    -n 2: 使用兩塊設備來建立

    -l 1: 指明建立RAID級別爲RAID1

    -c 128: 指明CHUNK大小爲128

    -x 1: 指明空閒盤數爲1

[root@localhost ~]# mdadm -C md0 -n 2 -l 1 -c 128 -x 1 /dev/sdb{1,2,3}
mdadm: /dev/sdb1 appears to contain an ext2fs file system
       size=10490412K  mtime=Mon Feb 27 13:44:42 2017
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? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/md0 started.

三、mdadm -D 參數顯示建立RAID的詳細信息

[root@localhost ~]# mdadm -D /dev/md/md0
/dev/md/md0:
        Version : 1.2
  Creation Time : Sun Mar  5 15:45:56 2017
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Sun Mar  5 15:46:29 2017
          State : clean, resyncing 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
  Resync Status : 11% complete
           Name : localhost.localdomain:md0  (local to host localhost.localdomain)
           UUID : 50c34387:f13ce1b2:1087d348:1fe1ebef
         Events : 1
    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       2       8       19        -      spare   /dev/sdb3



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

一、建立3塊空間爲2G的分區,並調整類型爲fd,建立過程同上。

二、建立RAID5

[root@localhost ~]# mdadm -C /dev/md1 -l 5 -n 3 -c 256 -a yes /dev/sdb{5,6,7}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost ~]# mdadm  -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Sun Mar  5 16:05:48 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 : Sun Mar  5 16:07:35 2017
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
         Layout : left-symmetric
     Chunk Size : 256K
           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : ea6f54f2:c745274e:f56132bc:a84d4cad
         Events : 18
    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       3       8       23        2      active sync   /dev/sdb7


#] mkfs.ext4 /dev/md1     #格式化爲ext4文件系統;
#建立目錄 /backup
]# mkdir /backup
 
#修改配置文件,設置開機自動掛載至/backup;
]# echo "/dev/md1 /backup ext4 defaults,noatime,acl 0 0" >>/etc/fstab


七、寫一個腳本

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

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

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

#!/bin/bash
# addu.sh
# 建立多個用戶,並設置用戶名與密碼相同
# 腳本接受至少2個參數做爲用戶名
#

declare -i count=0

# 重定向輸出文件描述符
exec 3>$1
exec 3>&2
exec 1>/dev/null
exec 2>/dev/null
#
# 檢查腳本參數個數
if [ $# -ge 2 ];then
  for user in $@;do
# 判斷用戶是否存在,如不存在,則添加用戶,並設置密碼與用戶名相同
    if ! id $user;then
        useradd $user && echo $user | passwd --stdin $user && (( count++ ))
    fi
  done
  echo "成功添加用戶$count個。" >&3
else
  echo "至少需傳遞兩個參數做爲用戶名" >&3
fi
# 恢復重定向文件描述符
exec 1>&3
exec 2>&3
# 關閉建立的文件描述符
exec 3>&-
~

測試腳本:
[root@localhost script]# bash addu.sh user1
至少需傳遞兩個參數做爲用戶名
[root@localhost script]# bash addu.sh user1 user2
成功添加用戶2個。
[root@localhost script]# bash addu.sh user1 user2 user3
成功添加用戶1個。
[root@localhost script]# bash addu.sh user1 user2 user3
成功添加用戶0個。
[root@localhost script]#


八、寫一腳本,分別統計/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#號開頭的行數之和,以及總的空白行數;

[root@localhost script]# vim cnt.sh
#!/bin/bash
# cnt.sh
# 統計/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab
# 以#開頭行數之和,以及總空白行

declare -i count1=0
declare -i count2=0
file="/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab"
for f in $file;do
  if [ -f $f ];then
   count1=$(grep '^#' $f | wc -l)
   count2=$(grep '^$' $f | wc -l)
   echo "$f 文件以#開頭有:$count1 行;空白行爲:$count2"
  fi
done

測試腳本:

[root@localhost script]# bash cnt.sh 
/etc/rc.d/rc.sysinit 文件以#開頭有:44 行;空白行爲:99
/etc/rc.d/init.d/functions 文件以#開頭有:42 行;空白行爲:76
/etc/fstab 文件以#開頭有:7 行;空白行爲:1


九、寫一個腳本,顯示當前系統上全部,擁有附加組的用戶的用戶名;並說明共有多少個此類用戶;

#!/bin/bash
#
# hasmultgrp.sh
#

declare -i count=0
declare -i cnt=0
user=$(awk -F: '{print $1}' /etc/passwd| sed 's/[[:space:]]*//')
echo -n "如下用戶擁有附加組:"
for i in $user;do
  count=$(id -G $i | awk -F' ' '{print NF}')
  if [ $count -ge 2 ];then
    echo -n "$i "
    (( cnt++ ))
  fi
done
  echo
  echo "擁有附加組的用戶共有$cnt個"

測試腳本:

[root@localhost script]# bash hasmulgrp.sh 
如下用戶擁有附加組:bin daemon adm postfix user1 user3 user4 
擁有附加組的用戶共有7個


十、建立一個由至少兩個物理卷組成的大小爲20G的卷組;要求,PE大小爲8M;而在卷組中建立一個大小爲5G的邏輯卷mylv1,格式化爲ext4文件系統,開機自動掛載至/users目錄,支持acl;


一、本次實驗經過兩塊硬盤的3個分區來建立20G卷組,sdb8:8G,sdc1:6G,sdc2:6G,並調整分區類型爲8e。建立分區過程在此略過。

[root@localhost ~]# fdisk -l /dev/sd{b,c} | grep '8e'
/dev/sdb8            4705        5749     8393931   8e  Linux LVM
/dev/sdc1               1         784     6297448+  8e  Linux LVM
/dev/sdc2             785        1568     6297480   8e  Linux LVM

二、用3個分區建立3個物理卷,經過pvcreate命令來建立,pvdisplay來顯示物理卷

[root@localhost ~]# pvcreate /dev/sdb8
  Physical volume "/dev/sdb8" successfully created
[root@localhost ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
[root@localhost ~]# pvcreate /dev/sdc2
  Physical volume "/dev/sdc2" successfully created
[root@localhost ~]# pvdisplay -C
  PV         VG       Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup lvm2 a--  79.51g    0 
  /dev/sdb8           lvm2 ---   8.01g 8.01g
  /dev/sdc1           lvm2 ---   6.01g 6.01g
  /dev/sdc2           lvm2 ---   6.01g 6.01g

三、建立卷組MyVG,使用vgcreate -s 8建立pe=8M的卷組,vgs顯示卷組簡要信息

[root@localhost ~]# vgcreate -s 8 MyVG /dev/sdb8 /dev/sdc{1,2}
  Volume group "MyVG" successfully created
[root@localhost ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree 
  MyVG       3   0   0 wz--n- 20.00g 20.00g


四、建立5G大小邏輯卷mylv1,使用命令lvcreate

[root@localhost ~]# lvcreate -L 5G -n mylv1 MyVG
  Logical volume "mylv1" created.
[root@localhost ~]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1   MyVG     -wi-a-----  5.00g

五、格式化爲ext4文件系統,並掛載至/user目錄下,支持acl,開機自動掛載

[root@localhost ~]# mkfs.ext4 /dev/MyVG/mylv1 
.....
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
.....
[root@localhost ~]# mkdir /user
[root@localhost ~]# mount /dev/MyVG/mylv1 /user/
[root@localhost ~]# echo -e "/dev/mapper/MyVG-mylv1\t/user\text4\tdefault,acl\t0 0">>/etc/fstab


十一、擴展mylv1至9G,確保擴展完成後原有數據徹底可用;

一、在/user目錄下建立目錄mydata,複製部分數據至改目錄

二、擴展邏輯卷經過命令lvextend, -L指定擴展大小,使用resize2fs來修復邏輯卷大小上的改變

[root@localhost script]# lvextend -L 9G /dev/MyVG/mylv1 
  Size of logical volume MyVG/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
  Logical volume mylv1 successfully resized
[root@localhost script]# resize2fs /dev/MyVG/mylv1 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/MyVG/mylv1 is mounted on /user; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/MyVG/mylv1 to 2359296 (4k) blocks.
The filesystem on /dev/MyVG/mylv1 is now 2359296 blocks long.
[root@localhost script]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1   MyVG     -wi-ao----  9.00g

三、確認數據能夠性

[root@localhost script]# pwd
/user/mydata/script
[root@localhost script]# ls
addu.sh  cnt.sh  getdisk.sh  hasmulgrp.sh  ks.sh  nine.sh  ping2.sh  ping.sh  user1
[root@localhost script]# less cnt.sh 
#!/bin/bash
# cnt.sh
declare -i count1=0
declare -i count2=0
file="/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab"

十二、縮減mylv1至7G,確保縮減完成後原有數據徹底可用;

一、縮減邏輯卷前須要先卸載,檢查文件系統

[root@localhost ~]# umount /user/
[root@localhost ~]# e2fsck -f /dev/MyVG/mylv1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/MyVG/mylv1: 24/589824 files (0.0% non-contiguous), 72726/2359296 blocks

二、改變邏輯卷大小爲7G

[root@localhost ~]# resize2fs /dev/MyVG/mylv1 7G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/MyVG/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/MyVG/mylv1 is now 1835008 blocks long.
[root@localhost ~]# resize2fs /dev/MyVG/mylv1 7G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/MyVG/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/MyVG/mylv1 is now 1835008 blocks long.

三、lvreduce縮減邏輯卷大小7G

[root@localhost ~]# lvreduce -L 7G /dev/MyVG/mylv1 
  WARNING: Reducing active logical volume to 7.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv1? [y/n]: y
  Size of logical volume MyVG/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
  Logical volume mylv1 successfully resized
[root@localhost ~]# lvs
  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1   MyVG     -wi-a-----  7.00g

四、從新掛載邏輯卷,並檢查數據可用性

[root@localhost ~]# mount /dev/MyVG/mylv1 /user/
[root@localhost script]# pwd
/user/mydata/script
[root@localhost script]# less cnt.sh 
#!/bin/bash
# cnt.sh
declare -i count1=0
declare -i count2=0
file="/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab"


1三、對mylv1建立快照,並經過備份數據;要求保留原有的屬主屬組等信息;

一、建立名爲snap_mylv1的快照,lvcreate命令:-s指定建立快照

[root@localhost ~]# lvcreate -L 7G -p r -s -n snap_mylv1 /dev/MyVG/mylv1 
  Logical volume "snap_mylv1" created.
[root@localhost mydata]# lvs
  LV         VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1      MyVG     owi-aos---  7.00g                                                    
  snap_mylv1 MyVG     sri-a-s---  7.00g      mylv1  0.00

二、查看快照

[root@localhost mydata]# ll /dev/MyVG/
total 0
lrwxrwxrwx. 1 root root 7 Mar  5 18:24 mylv1 -> ../dm-3
lrwxrwxrwx. 1 root root 7 Mar  5 18:24 snap_mylv1 -> ../dm-6

三、掛載快照至/snap

[root@localhost mydata]# mkdir /snap
[root@localhost mydata]# mount /dev/MyVG/snap_mylv1 /snap/
mount: block device /dev/mapper/MyVG-snap_mylv1 is write-protected, mounting read-only
[root@localhost mydata]# df -hP
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   50G  4.3G   43G  10% /
tmpfs                         940M   76K  939M   1% /dev/shm
/dev/sda1                     477M   42M  410M  10% /boot
/dev/mapper/VolGroup-lv_home   26G   46M   24G   1% /home
/dev/mapper/MyVG-mylv1        6.8G   12M  6.5G   1% /user
/dev/mapper/MyVG-snap_mylv1   6.8G   12M  6.5G   1% /snap

四、建立一個100M大小的文件,比對快照與原始邏輯卷的空間

[root@localhost user]# dd if=/dev/zero of=test bs=2048k count=50
50+0 records in
50+0 records out
104857600 bytes (105 MB) copied, 0.408157 s, 257 MB/s
[root@localhost user]# df -hP
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   50G  4.3G   43G  10% /
tmpfs                         940M   76K  939M   1% /dev/shm
/dev/sda1                     477M   42M  410M  10% /boot
/dev/mapper/VolGroup-lv_home   26G   46M   24G   1% /home
/dev/mapper/MyVG-mylv1        6.8G  112M  6.4G   2% /user
/dev/mapper/MyVG-snap_mylv1   6.8G   12M  6.5G   1% /snap

1四、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)

一、將linux主機添加至TCP/IP網絡。在CENTOS6系列,編輯/etc/sysconfig/network-scripts/ifcfg-eth0文件,設定IPADDR,NETMASK,GATEWAY,DNS1,BOOTPROTO等信息

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost network-scripts]# less ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0c:29:97:c0:34
TYPE=Ethernet   #指明接口類型
UUID=140eddab-b7cc-4ec7-afd0-df43c15b5402
ONBOOT=yes #在系統的引導過程當中,是否激活此接口
NM_CONTROLLED=yes 
BOOTPROTO=static
IPADDR=172.16.100.10
NETMASK=255.255.255.0
GATEWAY=172.16.100.1
DNS1=114.114.114.114
IPV6INIT=no
USERCTL=no

二、重啓網絡服務生效

[root@localhost ~]# service network restart

1五、爲Linux主機配置網絡信息的方式有哪些,請描述各個過程。


1)使用命令ifconfig eth0 172.16.100.10  臨時當即生效,重啓系統後失效 

2)使用命令ip addr add 172.16.100.10/24 dev eth0 臨時當即生效,重啓系統後失效

3)修改網卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 須要重啓服務後生效    

4)使用圖形界面 setup--網絡配置  修改後重啓服務


1六、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的全部主機的在線狀態;

    在線的主機使用綠色顯示;

    不在線的主使用紅色顯示;

#!/bin/bash
#
# ping.sh
# ping命令探測主機狀態,在線顯示綠色,不在線顯示紅色
net="172.16.250."

for h in $(seq 1 20);do
  ping -c 1 -w 1 $net$h &>/dev/null && echo -e "\033[32m $net$h \033[0m" || echo -e "\033[31m $net$h \033[m"
done


1七、經常使用的網絡管理類工具備哪些,並用示例形式描述他們的使用方法。


1八、寫一個腳本,完成如下功能

  (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;

  (2) 顯示全部以K開頭的文件的文件名,而且給其附加一個stop字符串;

  (3) 顯示全部以S開頭的文件的文件名,而且給其附加一個start字符串;

  (4) 分別統計S開頭和K開頭的文件各有多少;

#!/bin/bash
#
# 統計/etc/rc.d/rc3.d目錄下S開頭和K開頭文件個數
# 並將這些文件顯示出來

dir="/etc/rc.d/rc3.d"
if [ -d $dir ];then
  kfile=$(ls $dir | grep '^K')
  sfile=$(ls $dir | grep '^S')

  kcnt=$(echo $kfile | wc -w)
  scnt=$(echo $sfile | wc -w)

  for f in $kfile;do
    echo "$f stop"
  done

  for f in $sfile;do
   echo "$f start"
  done

  echo "S開頭文件有$scnt個,K開頭文件有$kcnt個"


1九、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100之內有哪些主機在線,將在線的顯示出來;

#!/bin/bash
#
#
net="172.16.250."
echo "172.16.250.20-100在線主機爲:"
for i in $(seq 20 100);do
  ping -c 1 -w 1 $net$i &>/dev/null && echo "$net$i"
done
~


20、打印九九乘法表;

[root@localhost script]# vim nine.sh
#!/bin/bash
#
#
# 打印九九乘法表

for i in $(seq 1 9);do
  for j in $(seq 1 $i);do
    echo -e -n "${i}x${j}=$[$i*$j]\t"
  done
  echo
done

腳本測試:

[root@localhost script]# bash nine.sh 
1x1=1
2x1=2   2x2=4
3x1=3   3x2=6   3x3=9
4x1=4   4x2=8   4x3=12  4x4=16
5x1=5   5x2=10  5x3=15  5x4=20  5x5=25
6x1=6   6x2=12  6x3=18  6x4=24  6x5=30  6x6=36
7x1=7   7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49
8x1=8   8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64
9x1=9   9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81
相關文章
相關標籤/搜索