Smartmontools состоит из двух утилит: smartctl — Control and Monitor Utility for SMART Disks. Поддерживает многие ATA-3 и более поздние ATA, IDE, SATA и SCSI-3 диски. Представляет собой консоль для просмотра параметров SMART диска и запуска тестов в ручную. Используется для однократного тестирования жестких дисках. smartd — пытается включить SMART monitoring на ATA устройствах (аналогично […]
Рубрика: Ubuntu
Мониторинг резервного сайта
Можно выполнить ручную проверку с помощью правки hosts, но надо это дело автоматизировать. Как минимум, можно проверять работу сайта через консоль. Например, обращаться к резервному серверу по ip с помощью curl и передавать в заголовке имя нашего домена.
1 |
curl --verbose -k -H "Host: test.ru" https://10.25.25.18 |
Веб сервер выдаст вам главную страницу вашего домена.
bash cкрипт резервного копирования на FTP
Итак, как работает этот скрипт: — архивирует и пакует необходимые папки и файлы в папку $BDIR, — делает дамп ваших баз данных (mysql) и пакует их в папку $BDIR; — все, что напаковал сжимает одним файлом ($BFILE) в $BDIR; — затем, с помощью curlftpfs монтирует ftp папку для бекапов в папку на компьютере и заливает […]
Оптимизация настроек Mysql с помощью Mysqltuner
Mysqltuner — это perl-скрипт, который анализирует статистику работы Mysql и выдает свои рекомендации по оптимизации настроек Mysql сервера. Скачать скрипт можно следующим образом:
1 |
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl |
Если возникает ошибка вида:
1 2 3 |
ERROR: cannot verify raw.githubusercontent.com's certificate, issued by '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA': Unable to locally verify the issuer's authority. To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate'. |
Запускаем с ключом —no-check-certificate:
1 |
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate |
Также, можно произвести установку: Debian/Ubuntu:
1 |
apt-get -y install mysqltuner |
CentOS:
1 |
yum -y install mysqltuner |
Чтобы данные анализа и статистика были более корректными, сервер Mysql должен проработать некоторое […]
Удаление файлов на FTP старше X дней
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#!/usr/bin/php <? $host = "ftp.host.ru"; $dir = "backup/blabla"; $user = "ftp_user346"; $passwd = "p0sw0rd"; $interval = 3600*24*8; # 8 days $passive = true; # my FTP server only works in PASV mode $DEBUG = 1; // Парсим параметры вызова скрипта //var_dump($argv); $my_path = trim($argv[1]); $my_days = intval($argv[2]); $my_confirm = @$argv[3]; if(strlen($my_path)==0) die("[CLEANUP_BACKUP][ERROR] Path can not be empty!\n"); elseif(!$my_days) die("[CLEANUP_BACKUP][ERROR] Days count error\n"); $interval = $my_days * 3600 * 24; print "=========================================================\n"; print date("c")."\n"; print "Parsing parametres.......................................\n"; print "Host: {$host}\n"; print "Login: {$user}\n"; print "Path: {$my_path}\n"; print "Max days old: $my_days ($interval seconds)\n"; print "=========================================================\n"; $ftp = ftp_connect($host) or die("[CLEANUP_BACKUP][ERROR] Couldn't connect to $host"); if (@ftp_login($ftp, $user , $passwd)) { echo "Connected as $user\n"; } else { echo "[CLEANUP_BACKUP][ERROR] Couldn't connect as $user\n"; } ftp_pasv($ftp, $passive); echo ftp_pwd($ftp); // try to change the directory to somedir if (ftp_chdir($ftp, $my_path)) { echo "Current directory is now: " . ftp_pwd($ftp) . "\n"; } else { echo "[CLEANUP_BACKUP][ERROR] Couldn't change directory\n"; } // Парсим список файлов и ищем старые файлы $files = ftp_nlist($ftp, "."); var_dump($file); if(sizeof($files)==0)die("[CLEANUP_BACKUP][ERROR] Backup files list is empty!\n"); echo "[CLEANUP_BACKUP][INFO] Total files: ".sizeof($files)."\n"; $arDeleteFiles=array(); //Массив списка файлов на удаление foreach($files as $file){ $mdtm = ftp_mdtm($ftp, $file); if ($mdtm != -1) { //Проверяем, что время просрочилось $diff_time = time() - $mdtm; $percent = round($diff_time/$interval,5)*100; echo "[LOOP] $diff_time/$interval \t ({$percent}%) $file : "; if($diff_time > $interval){ echo "File is too old... delete plz...\n"; if($my_confirm){ //Добавляем файл в очередь на удаление $arDeleteFiles[]=$file; } }else{ echo "Good\n"; } } else { echo "[CLEANUP_BACKUP][ERROR] {$file} cant look up mod time\n"; } } //Удаляем файл и проверяем, что удаляется не более 30% файлов if(sizeof($arDeleteFiles)>0 ){ if((sizeof($arDeleteFiles)/sizeof($files)) > 0.3 )die("[CLEANUP_BACKUP][ERROR] attemp to delete more then 30% of files!"); foreach($arDeleteFiles as $DelFile){ if(ftp_delete($ftp, $file))echo "{$DelFile} - deleted\n"; else echo "{$DelFile} - error - can not delete file\n"; } } ftp_close($ftp); |
Ubuntu 18.04 включить rc.local.
Не помню с какой версии, но заметил сейчас, на новейшей Ubuntu 18.04, нет файла rc.local, через который можно прописывать в автозапуск например скрипты. Если вы привыкли использовать rc.local для запуска скриптов при старте системы, можно сделать следующее: Создаем и делаем исполняемым файл rc.local
1 2 |
touch /etc/rc.local chmod +x /etc/rc.local |
Добавляем содержание в файл.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0 |
Включаем
1 |
systemctl enable rc-local |
Настройка Swap в CentOS/Ubuntu
Изменим поведение CentOS/Ubuntu в отношении использования ОЗУ и подкачки (раздел swap). Есть такой параметр vm.swappiness, который по умолчанию имеет значение 60, и контролирует процент свободной памяти, при которой начнется активный сброс страниц в раздел swap. Иными словами, при 100-60=40% занятой памяти, CentOS/Ubuntu уже начнет использовать раздел swap. При большом количестве ОЗУ в компьютере, лучше изменить […]
Анализ SIP трафика в Asterisk с помощью sngrep
Практически с любым сервером asterisk время от времени случаются проблемы — то голос пропадает, то звонки не проходят, то качество звука становится невыносимым. Решение каждой такой задачи — отдельное нетривиальное исследование, в котором нет универсальных советов. Значительно упрощает подобное расследование консольная утилита sngrep, которая а реальном времени позволяет анализировать и sip трафик, либо записывать дампы. […]
Apache Bench тестируем работу веб-сервера
Утилита Apache Bench (ab) предназначена для тестирования работы web-сервера и эмуляции нагрузки им сервера. Установка Ubuntu/Debian:
1 |
apt-get install apache2-utils |
CentOS:
1 |
yum install httpd-tools |
Пример запроса:
1 |
ab -c 10 -n 30000 "https://vk.com/" |
Синтаксис запроса:
1 |
ab [options] [http[s]://]hostname[:port]/path |
Наиболее полезные Ключи: -n requests Количество запросов, которое надо выполнить; -c concurrency Кол-во одновременных запросов; -t timelimit Максимальное время ожидания ответа; -b windowsize Размер буфера TCP send/receive, в байтах; -p […]
Найти папку/файл Ubuntu
1) Как найти папку по имени?
1 |
find / -type d -name 'workers' |
/ — искать по всей системе, то есть начинать с точки монтирования «/»
1 |
-type d - искать только папки |
-name ‘workers’ — в данном случае точное совпадение с workers 2) Как найти файл по части имени?
1 |
find / -type f -name '*_workers.rb' |
/ — искать по всей системе, то есть начинать с точки монтирования «/» -type f — […]