您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
马哥linux运维学习笔记-脚本编程之八 脚本完成磁盘分区格式化
发布时间:2018-07-29 17:45:49编辑:雪饮阅读()
until循环
c风格for循环
ping命令
awk
抹除一个硬盘的所有分区
脚本实现一键分区
关机
until循环
基础用法
条件不满足时执行的一种循环
#!/bin/bash
read -p "Input something:" STRING
until [ $STRING == 'quit' ];do
echo $STRING | tr 'a-z' 'A-Z'
read -p "Input something:" STRING
done
实例1:使用until循环判断某用户是否登录
#!/bin/bash
who | grep "xy2" &> /dev/null
RETVAL=$?
until [ $RETVAL -eq 0 ];do
echo "xy is not come."
sleep 5
who | grep "xy2" &> /dev/nul
RETVAL=$?
done
echo "xy is logged in."
实例2:使用until循环判断某用户是否登录(简写)
#!/bin/bash
until who | grep "xy2" &> /dev/null;do
echo "xy is not come."
sleep 5
done
echo "xy is logged in."
c风格for循环
实例1
#!/bin/bash
declare -i SUM=0
for ((j=1;j<=100;j++));do
let SUM+=$j
done
echo $SUM
实例2:自定义步长
[root@localhost ~]# cat ./c.sh
#!/bin/bash
declare -i SUM=0
for ((j=1;j<=100;j+=2));do
let SUM+=$j
done
echo $SUM
ping命令的使用
linux中ping命令默认是无限ping,也就是你执行后若不手动终止则会无限ping下去
-c:指定ping的次数
-W:指定每次ping的秒数
实例:
[root@localhost ~]# ping -c 1 -W 1 192.168.43.144
PING 192.168.43.144 (192.168.43.144) 56(84) bytes of data.
64 bytes from 192.168.43.144: icmp_seq=1 ttl=128 time=0.849 ms
--- 192.168.43.144 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1ms
rtt min/avg/max/mdev = 0.849/0.849/0.849/0.000 ms
awk命令
awk的简单使用
awk命令默认以空格(无论多少个)将多行文本按列分割
一个正常的多行文本
[root@localhost ~]# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 4.1G 13G 26% /
tmpfs 936M 156K 936M 1% /dev/shm
/dev/sda1 477M 34M 419M 8% /boot
/dev/mapper/myvg-testlv 3.0G 136M 2.7G 5% /ljj
/dev/mapper/myvg-testlv--snap 3.0G 136M 2.7G 5% /kz
按空格分割后取第一列
[root@localhost ~]# df -Ph | awk '{print $1}'
Filesystem
/dev/mapper/VolGroup-lv_root
tmpfs
/dev/sda1
/dev/mapper/myvg-testlv
/dev/mapper/myvg-testlv--snap
按空格分割后取第二列
[root@localhost ~]# df -Ph | awk '{print $2}'
Size
18G
936M
477M
3.0G
3.0G
按空格分割后取第一、三列
[root@localhost ~]# df -Ph | awk '{print $1,$3}'
Filesystem Used
/dev/mapper/VolGroup-lv_root 4.1G
tmpfs 156K
/dev/sda1 34M
/dev/mapper/myvg-testlv 136M
/dev/mapper/myvg-testlv--snap 136M
[root@localhost ~]#
awk统计当前行的列数与获取当前行的最后一列
统计当前行的列数
[root@localhost ~]# df -Ph | awk '{print NF}'
7
6
6
6
6
6
获取当前行最后一列
[root@localhost ~]# df -Ph | awk '{print $NF}'
on
/
/dev/shm
/boot
/ljj
/kz
自定义awk的输入分隔符
awk默认输入输出分隔符都是空格。
下面是定义输入分隔符的实例,定义了输入分隔符为":"
[root@localhost ~]# awk -F: '{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
uucp 10
operator 11
games 12
gopher 13
ftp 14
nobody 99
dbus 81
usbmuxd 113
vcsa 69
rpc 32
rtkit 499
avahi-autoipd 170
abrt 173
rpcuser 29
nfsnobody 65534
haldaemon 68
gdm 42
ntp 38
apache 48
saslauth 498
postfix 89
pulse 497
sshd 74
tcpdump 72
xy 500
xy2 501
xy33 502
www 503
user1 504
user2 505
user3 506
一键擦除指定硬盘的所有分区
所有的操作先在内存中完成,内存中完成后才同步到磁盘
操作后要睡3秒,因为该操作太快,可能对磁盘有影响
这里一键擦除了/dev/sdb硬盘
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000497625 秒,1.0 MB/秒
[root@localhost ~]# sync
[root@localhost ~]# sleep 3
脚本实现一键分区
#!/bin/bash
echo 'n
p
1
+20M
n
p
2
+512M
n
p
3
+128M
t
3
82
w' | fdisk /dev/sdb
关机
shutdown -h now
关键字词:linux,脚本编程,磁盘,分区,格式化