分类
devops

bash

计算内存使用率

解答一

#!/usr/bin/env bash

line=$(free | head -2 | tail -1);
total=$(echo "$line" | awk '{print $2}')
used=$(echo "$line" | awk '{print $3}')
# echo $used;
# echo $total;
x=$((used * 100 * 100  / total))
cordon=$((80 * 100 ))

# echo $x

percentage=$(awk --assign=x="${x}" 'BEGIN{printf "%.2f",x/100}')
## 因为-gt不能比较小数,上边值放大了100倍
if [[ $x -gt cordon ]]; then
    echo "当前内存超过80%"
else
    echo "内存使用率为${percentage}%"
fi

解答二

#!/usr/bin/env bash

line=$(free | head -2 | tail -1);
total=$(echo "$line" | awk '{print $2}')
used=$(echo "$line" | awk '{print $3}')
# echo $used;
# echo $total;
# x=$((used * 100 * 100  / total))
# cordon=$((80 * 100 ))

# echo $x


percentage=$(awk --assign=used="${used}" --assign=total="${total}" 'BEGIN{printf "%.2f",used*100/total}')

# 或者用bc,此处xargs printf 仅为了处理bc计算结果中如果出现<1的小数不是以0.开头的,比如0.45为.45,需要额外处理下
# percentage=$(bc <<< "scale=2;${used}*100/${total}" | xargs printf "%.2f\n" )

if [[ $(echo "$percentage > 80 " | bc) -eq 1 ]]; then
    echo "当前内存超过80%"
else
    echo "内存使用率为${percentage}%"
fi

如何在 Linux 中将用户添加到多个组

假设我们有一个名为 “john” 的用户,我们想将他添加到 “developers”、”testers” 和 “managers” 这三个组中。

# 使用 usermod 命令将用户添加到多个组
sudo usermod -a -G developers,testers,managers john

解释:
sudo:以管理员权限运行命令
usermod:修改用户账户的命令
-a:追加模式,将用户添加到附加组而不会从其他组中删除
-G:指定要添加用户的附加组,多个组之间用逗号分隔
john:要添加到组的用户名
执行此命令后,用户 “john” 将被添加到 “developers”、”testers” 和 “managers” 组中,同时保留他原有的组成员身份。

bash中如何解压 .xz 和 .tar.xz 文件

# 解压 .xz
xz -d file.xz

# -k 或 --keep:保留原始文件。
# -q 或 --quiet:在执行过程中不显示任何信息。
# -t 或 --test:测试压缩文件的完整性,而不解压缩它。

# 解压  .tar.xz
tar -xJvf archive.tar.xz

bash中如何遍历数组

array=(apple banana orange)

## 方式1
for element in "${array[@]}"; do
    echo "$element"
done

## 方式2
for i in "${!array[@]}"; do
    echo "${array[$i]}"
done

## 方式3
i=0
while [ $i -lt "${#array[@]}" ]; do
    echo "${array[$i]}"
    ((i++))
done