Жесткие ссылки на файлы неотличимы от того, что вы называете "настоящими файлами" -на самом деле это один и тот же файл, который находится в двух каталогах. Лучшим решением в вашем случае будет просто добавить еще один параметр -exclude-dir="^/timeshift"
в команду clamscan
.
Это основано на ответе Джоэле ; весь скрипт можно было бы написать и на AWK:
#!/usr/bin/awk -f
BEGIN {
while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2
if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }
exit 1
}
Это также проверяет базовый уровень («уровень 1» здесь ), выводит только самый высокий поддерживаемый уровень и завершает работу с кодом выхода, соответствующим первому неподдерживаемому уровню.
Вот сценарий оболочки для определения уровня архитектуры процессора x86 _64 в Linux. Он совместим с BusyBox. С опцией -v
он показывает, каких флагов вам не хватает, чтобы перейти на следующий уровень. См. Что означают флаги в /proc/cpuinfo? для объяснения флагов.
#!/bin/sh
set -e
verbose=
while getopts v OPTLET; do
case "$OPTLET" in
v) verbose=1;;
\?) exit 2;;
esac
done
flags=$(grep '^flags\b' </proc/cpuinfo | head -n 1)
flags=" ${flags#*:} "
has_flags () {
for flag; do
case "$flags" in
*" $flag "*) :;;
*)
if [ -n "$verbose" ]; then
echo >&2 "Missing $flag for the next level"
fi
return 1;;
esac
done
}
determine_level () {
level=0
has_flags lm cmov cx8 fpu fxsr mmx syscall sse2 || return 0
level=1
has_flags cx16 lahf_lm popcnt sse4_1 sse4_2 ssse3 || return 0
level=2
has_flags avx avx2 bmi1 bmi2 f16c fma abm movbe xsave || return 0
level=3
has_flags avx512f avx512bw avx512cd avx512dq avx512vl || return 0
level=4
}
determine_level
echo "$level"
(Подтверждение :Я повторно использовал список флагов из ответа Стивена Китта , который, в свою очередь, основывается на ответе gioele .)
Скопировано из:https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/2/diffs
Вы можете увидеть, какая архитектура поддерживается вашим процессором, запустив:
$ /lib/ld-linux-x86-64.so.2 --help
Subdirectories of glibc-hwcaps directories, in priority order:
x86-64-v4
x86-64-v3 (supported, searched)
x86-64-v2 (supported, searched)