Browse Source
This script checks the location of itself and warns if it is located on an NVMe volume.test
committed by
GitHub
1 changed files with 60 additions and 0 deletions
@ -0,0 +1,60 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
# shellcheck disable=SC2317 |
||||
|
|
||||
|
Yellow='\e[0;33m' # ${Yellow} |
||||
|
Off='\e[0m' # ${Off} |
||||
|
|
||||
|
# Get script location |
||||
|
# https://stackoverflow.com/questions/59895/ |
||||
|
source=${BASH_SOURCE[0]} |
||||
|
while [ -L "$source" ]; do # Resolve $source until the file is no longer a symlink |
||||
|
scriptpath=$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd ) |
||||
|
source=$(readlink "$source") |
||||
|
# If $source was a relative symlink, we need to resolve it |
||||
|
# relative to the path where the symlink file was located |
||||
|
[[ $source != /* ]] && source=$scriptpath/$source |
||||
|
done |
||||
|
scriptpath=$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd ) |
||||
|
scriptfile=$( basename -- "$source" ) |
||||
|
echo "Running from: ${scriptpath}/$scriptfile" |
||||
|
|
||||
|
|
||||
|
ding(){ |
||||
|
printf \\a |
||||
|
} |
||||
|
|
||||
|
|
||||
|
# Warn if script located on M.2 drive |
||||
|
get_script_vol() { |
||||
|
local script_root vol_num vg_name |
||||
|
script_root="${scriptpath#/*}" |
||||
|
script_root="${script_root%%/*}" |
||||
|
if [[ $script_root =~ ^volume ]] |
||||
|
then |
||||
|
vol_num="${script_root:6}" |
||||
|
vg_name=$(lvs --noheadings --select=lv_name="volume_$vol_num" --options=vg_name) |
||||
|
vg_name="${vg_name// }" |
||||
|
#vol_name=$(pvs --noheadings --select=vg_name="$vg_name" --options=pv_name) |
||||
|
#vol_name="${vol_name// }" |
||||
|
# Only get first partition on volume group |
||||
|
vol_name=$(pvs --noheadings --select=vg_name="$vg_name" --options=pv_name | awk '{print $1}') |
||||
|
else |
||||
|
vol_name=$(df --output=source "/$script_root" |sed 1d) |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
#set -x # debug ##################################################################### |
||||
|
|
||||
|
get_script_vol # sets $vol_name to /dev/whatever |
||||
|
if grep -qE "^${vol_name#/dev/} .+ nvme" /proc/mdstat |
||||
|
then |
||||
|
ding |
||||
|
echo -e "\n${Yellow}WARNING${Off} Don't store this script on an NVMe volume!" |
||||
|
exit 3 |
||||
|
fi |
||||
|
|
||||
|
echo -e "\n$scriptfile is not on an NVMe volume" |
||||
|
|
||||
|
exit |
||||
|
|
||||
|
|
||||
Loading…
Reference in new issue