计算内存使用率
解答一
#!/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
## 方式4
for ((i=0; i<${#array[@]}; i++)); do
echo ${array[$i]}
done
从here-document产生数组
## 方式1
readarray -t arr <<EOF
ddd
xxxx
EOF
## 方式2
readarray -t arr < <(cat <<EOF
ddd
xxxx
EOF
)