Напишіть скрипт, який працючи у фоні кожні 10 секунд підраховує кількість файлів та каталогів
у поточному каталозі. Якщо ця кількість перевищить значення, вказане як параметр запуску скрипта,
скрипт має завершити роботу, вивівши цю кількість.
#!/bin/sh
# Перевіряємо, чи передано параметр
if [ $# -ne 1 ]; then
echo "Використання: $0 <максимальна_кількість_файлів_та_каталогів>"
exit 1
fi
max_count=$1
while true; do
# Підраховуємо кількість файлів та каталогів (включаючи приховані, виключаючи . та ..)
count=$(ls -A | wc -l)
# Перевіряємо, чи перевищено максимальну кількість
if [ "$count" -gt "$max_count" ]; then
echo "$count"
exit 0
fi
# Чекаємо 10 секунд
sleep 10
done
Напишіть скрипт, який виводить список користувачів, що мають файли в /tmp,
відсортований за кількістю файлів. Якщо вказаний користувач має більше 10 файлів,
скрипт має надіслати попередження користувачеві за допомогою команди mail(1).
Напишіть скрипт, який виводить список користувачів, що мають файли в /tmp,
відсортований за кількістю файлів. Якщо вказаний користувач має більше 10 файлів,
скрипт має надіслати попередження користувачеві за допомогою команди mail(1).
#!/bin/sh
# Альтернатива через ls (менш рекомендовано, але працює)
ls -l /tmp | grep '^-' | awk '{print $3}' | \
sort | \
uniq -c | \
sort -nr | \
while read count user; do
if [ "$count" -gt 10 ]; then
echo "$user: $count файлів"
if mail -v 2>/dev/null <<EOF; then
Subject: Попередження: забагато файлів у /tmp
From: root
To: $user
Вітаю, $user!
Ви маєте $count файлів у /tmp. Будь ласка, звільніть місце, видаливши непотрібні файли.
--
Системний адміністратор
EOF
echo " Попередження надіслано $user"
else
echo " Не вдалося надіслати листа $user"
fi
fi
done