Якщо ви були адміністратором протягом будь-якого періоду часу, ви, безумовно, виявляли ситуації, коли сервер зростає у використанні центрального процесора або використанні пам'яті та / або рівнях навантаження. Запуск «зверху» теж не завжди дасть вам відповідь. То як же знайти ті підлі процеси, які пережовують ваші системні ресурси, щоб їх можна було вбити?
Наступний сценарій може допомогти. Він був написаний для веб-сервера, тому є деякі його частини, які спеціально шукають процеси httpd та деякі частини, що стосуються MySQL. Залежно від розгортання вашого сервера, просто коментуйте / видаляйте ці розділи та додайте інші. Це слід використовувати для відправної точки.
Передумовами для цієї версії сценарію є деяка безкоштовна програма, випущена під загальною публічною ліцензією GNU під назвою mytop (доступна на
http://jeremy.zawodny.com/mysql/mytop/
), який є чудовим інструментом для перевірки ефективності MySQL. Він старіє, але все ще чудово працює для наших цілей тут.
Крім того, я використовую mutt як поштову скриньку - можливо, ви захочете змінити сценарій, щоб просто використовувати вбудовану в Linux програму `mail`. Я запускаю його через cron щогодини; регулюйте, як вважаєте за потрібне. О - і цей скрипт повинен працювати як root, оскільки він читає з деяких захищених областей сервера.
Тож давайте почнемо, чи не так?
Спочатку встановіть свої змінні сценарію:
#! / Bin / Bash
#
# Скрипт для перевірки середнього рівня завантаження системи, який потрібно спробувати визначити
# які процеси сприймають його надто високо ...
#
# 07 липня 2010 tjones
#
# встановити середовище
dt = `дата +% d% b% Y-% X`
# Очевидно, змініть наступні каталоги на те, де насправді зберігаються ваші файли журналів
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog = "/ var / log / messages"
mysql Log = "/ var / log / mysqld.log"
# перша поштова зупинка - це стандартна електронна пошта для звітів. Другий - для мобільних телефонів (із звітом про скорочення)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
machine = `ім'я хосту`
# Наступні три призначені для використання на mytop - використовуйте користувача db, який має гідні права
dbusr = "ім'я користувача"
dbpw = "пароль"
db = "Ваше ім'ябази даних"
# Нижче наведено рівень навантаження для перевірки - 10 справді високий, тому, можливо, ви захочете його знизити.
levelToCheck = 10
Далі перевірте рівень завантаження, щоб перевірити, чи слід продовжувати роботу сценарію:
# Встановити змінні з системи:
loadLevel = `cat / proc / loadavg | awk '{print $1}' '
loadLevel = $ (printf "% 0.f" $ loadLevel)# якщо рівень навантаження більше, ніж ви хочете, запустіть процес сценарію. В іншому випадку вийдіть з 0
якщо [ $loadLevel -gt $levelToCheck ]; тоді
echo ""> $ tmpfile
echo "****************************************" >> $ tmpfile
echo "Date: $ dt" >> $ tmpfile
echo "Перевірити завантаження та процеси системи" >> $ tmpfile
echo "****************************************" >> $ tmpfile