shell 脚本 demo
[TOC]

学习资源

#! 的作用

# 用于注释,! 用于指定用哪个 shell 来运行脚本。
通常是 #!/bin/bash

监控进程是否运行的脚本

1
#!/bin/bash
2
# -v 是排除 grep 进程本身, print $2 是获取第二个参数,也就是 PID,反引号是为了运行后面的脚本
3
pid=`ps -fe | grep "python /home/work/cpu_consume/cpu_consume.py" | grep -v grep | awk '{print $2}'`
4
if [ -z "$pid" ]; then # $ pid 字符串为空
5
echo "無程序運行"
6
else
7
echo "有程序運行"
8
kill $pid
9
fi
10
exit 0
Copied!

监控缓存,超过 300M,就释放

1
#!/usr/bin/env bash
2
3
buff_cache=`free -h | grep Mem: | awk '{print int(substr($6,0,length($6)))}'`
4
# 结果有两种,xxxM 或 x.xG
5
if (( $buff_cache <= 4 )); then
6
buff_cache=1000
7
fi
8
9
# buff 和 cache 的阈值,超过阈值,则清理缓存
10
buff_cache_threshold=300
11
if (( $buff_cache > $buff_cache_threshold )); then
12
sync; sync; sync; echo 1 > /proc/sys/vm/drop_caches
13
date
14
echo "release cache success"
15
else
16
echo "do not need to release cache"
17
fi
Copied!

磁盘分区 Demo

1
# 有问题的脚本
2
#!/bin/bash
3
4
# 输入 raid 盘的名字,以 sd 开头
5
read -p "please input raid name:" raid_name
6
7
# 对输入的 raid 盘名进行校验
8
# todo
9
10
# 判断 raid 是否已自动挂载,如果已挂载,则取消对 raid 盘的挂载,否则无法进行分区操纵
11
# todo
12
13
# 对 raid 盘进行分区
14
# 注意,分区的时候设置的文件系统类型关系不大,后面要对其进行格式化的
15
# 可选的文件系统类型为:ext2fat16, fat32 hfs, hfs+, hfsx linux-swap NTFS reiserfs ufs btrfs
16
parted -s "/dev/"${raid_name} \
17
mklabel gpt \
18
mkpart part-efi fat32 0GB 1GB \
19
mkpart part-boot xfs 1GB 2GB \
20
mkpart part-biosboot xfs 2GB 3GB \
21
mkpart part-swap linuxswap 3GB 19GB \
22
mkpart part-other xfs 19GB 100%
23
24
# 对 U 盘进行测试分区
25
#parted -s "/dev/"${raid_name} \
26
# mklabel gpt \
27
# mkpart part-efi xfs 0GB 1GB \
28
# mkpart part-boot xfs 1GB 2GB \
29
# mkpart part-other xfs 2GB 100%
30
31
# 对分区进行格式化
32
mkfs.fat "/dev/"${raid_name}"1"
33
mkfs.xfs "/dev/"${raid_name}"2"
34
mkfs.xfs "/dev/"${raid_name}"3"
35
mkfs.xfs "/dev/"${raid_name}"4"
36
mkfs.xfs "/dev/"${raid_name}"5"
37
38
# 挂载
39
mkdir /boot/efi
40
mount "/dev/"${raid_name}"1" /boot/efi
41
mount "/dev/"${raid_name}"2" /boot
42
mount "/dev/"${raid_name}"3" /biosboot
43
# swap 分区挂载并激活
44
mkswap "/dev/"${raid_name}"4"
45
swapon "/dev/"${raid_name}"4"
46
mount "/dev/"${raid_name}"5" /
47
48
echo "over"
Copied!
Last modified 12d ago