Я работаю над скриптом bash, который проверяет +1000 доменов, если они истекли. Я использую цикл for для итерации по всем пользователям в /var/cpanel/users/*
. Он отлично работает как 10 первых пользователей (циклы), затем он просто зависает.Почему мой скрипт bash висит?
Странно, что я могу остановить скрипт с Ctrl+Z
, а затем снова запустить сценарий с fg
, и он продолжает работать нормально примерно для пользователей +10, но потом снова зависает.
Это мой scirpt:
# File that will have the result.
file="domain-result.txt"
printf "USER\t\tDOMAIN\t\t\tREPORT\n" > "$file"
printf "\n" >> "$file"
# For loop to iterate over all users in cpanel.
for z in /var/cpanel/users/*;
do
# Only files can be used.
if [[ -f "$z" ]]
then
# Get the domain name.
awk -F'=' '/DNS=/ {print $2}' "$z" | while read row;
do
# If there's no domain name than skip to next account.
if [[ -z "$row" ]]; then continue; fi
printf "Checking domain: %s...done\n" "$row"
# Execute whois command on the domain.
whois=$(/usr/bin/whois $row | grep 'not found')
# Get the username.
user=$(echo "$z" | awk -F'/' '{print $5}')
if [[ -n "$whois" ]]
then
printf "%s\t\t%s\t\t%s - EXPIRED\n" "$user" "$row" "$whois" >> "$file"
break
else
continue
fi
done
else
continue
fi
done
printf "\n"
printf "Total: $(sed '1,2d' "$file" | wc -l) expired domains.\n"
Это пример того, как файлы в /var/cpanel/users/*
выглядеть следующим образом:
DNS=stackoverflow.com
Вы должны добавить '#!/Bin/bash -x' и попытаться получить дополнительную информацию о том, где он точно застрял. –
@BarisDemiray Я сделал 'set -x', но нет ничего полезного. Все выглядит просто отлично. – krt
Я не удивлюсь, если вас позорят для злоупотребления WHOIS. –