sysmerge IT

5 дек. 2016 г.

Использование оперативной памяти в linux

Для сбора статистика использования оперативной памяти процессами в linux я пользуюсь удобной командой

 # ps -eo size,pid,user,command | awk '{ hr=$1/1024 ; printf("%13.6f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | sort  

Что же делает данная команда?
  • Вывод команды ps форматируем . Выводим память, pid, юзера и непосредственно команду
  • awk заводит переменную hr, в которую пересчитывает значение используемой памяти в Мегабайтах hr=$1/1024. После чего печатает значение hr с 6 цифрами после запятой.
  • { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" } - вывод 4го элемента в строке (это команда) и если в строке есть еще символы, то выводим их до самого конца строки.
  •  Сортируем по возрастанию
Таким вот нехитрым способом можно получить список приложений и потребляемый им объем оперативной памяти.
10 окт. 2016 г.

[ERROR] can't open file *.frm (errno 24)

mysql сервер начал периодически сыпать ошибки вида:
 161010 16:54:12 [ERROR] /usr/libexec/mysqld: Can't open file: './air/wp_options.frm' (errno: 24)  
 161010 16:54:12 [ERROR] /usr/libexec/mysqld: Can't open file: './air/wp_options.frm' (errno: 24)  
 161010 16:54:33 [ERROR] /usr/libexec/mysqld: Can't open file: './654/qwf03_usergroups.frm' (errno: 24)  
 161010 16:54:33 [ERROR] /usr/libexec/mysqld: Can't open file: './654/qwf03_usergroups.frm' (errno: 24)  
 161010 16:55:13 [ERROR] /usr/libexec/mysqld: Can't open file: './654/qwf03_usergroups.frm' (errno: 24)  
 161010 16:55:13 [ERROR] /usr/libexec/mysqld: Can't open file: './654/qwf03_usergroups.frm' (errno: 24)  

Проблема связана с лимитом на одновременно открытые файлы процессом. В данном случае mysql. Посмотреть лимит можно этой командой в консоли mysql сервера:
 SHOW VARIABLES LIKE 'open%'  

Нас интересует open_files_limit, который теперь необходимо поднять. В my.cnf в секции [mysqld] :
 [mysqld]  
 open_files_limit = 100000  

и делаем рестарт Mysql сервера.
23 сент. 2016 г.

socks5 ssh proxy через firefox

Появилась задача  - в браузере проксировать все запросы страниц через удаленный ssh сервер. По сути удаленный сервер "править" возможности нет, поднимать там прокси тоже никто не даст.
Решение довольно простое - Firefox позволяет настроить разные виды прокси, в том числе socks5. У команды 'ssh' есть замечательный ключ -D, позволяющий биндить локальный порт для прослушивания, таким образом, направляя туда запросы, мы отправим их по ssh туннелю.
Создаем ssh сессию
 # ssh -D 9977 -C user@1.1.1.1  

-D 9977  - локально будет слушаться порт 9977
-С - сжатие

Теперь в настройках прокси в браузере Настройки - дополнительно - сеть - настроить (socks) в качестве хоста прописываем 'localhost', порт 9977. Сохраняем, проверяем.
13 сент. 2016 г.

centos 6 обновления curl до 7.39 - 7.50

Изначально на машинке с Centos 6.8 стоял curl 7.19.7, довольно староват и при работе с ssl есть определенные проблемы.
 # curl -V  
 curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2  

Для обновления подключаем репу city-fan.
 # rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-1-13.rhel6.noarch.rpm  

Обновляемся/устанавливаем libcurl
 # yum install libcurl  

Проверяем
 # curl -V  
 curl 7.50.2 (x86_64-redhat-linux-gnu) libcurl/7.50.2 OpenSSL/1.0.1e zlib/1.2.3 c-ares/1.11.0 libidn/1.18 libssh2/1.7.0 nghttp2/1.6.0  


1 сент. 2016 г.

phpmyadmin ssl редирект на 80й порт

Порой на различных сборках сталкиваюсь с проблемой, когда настроенный на работу по https phpmyadmin при логине редиректит на ip:80. Исправить это довольно легко, для этого нам понадобится определить рабочий конфиг phpmyadmin. Он может быть в папке /usr/share/phpmyadmin/ вместе с файлами МПА или в /etc/phpmyadmin/, зависит от настроек.
Вписываем в конфиг следующие строчки
 $cfg['PmaAbsoluteUri'] = 'https://'.$_SERVER["HTTP_HOST"].'/phpmyadmin/';  
 $cfg['PmaAbsoluteUri_DisableWarning'] = TRUE;  


30 авг. 2016 г.

nginx кеширование статики только для части location'a с помощью вложенных location

Довольно банальная задача - добавить определенные правила для location в nginx. К примеру банальный код
 location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|ttf|otf|webp|woff|txt|csv|rtf|doc|docx)$ {  
       root      /var/www/site.ru/;  
       access_log   /var/log/httpd/sites/site.ru.log combined;  
       access_log   /var/log/httpd/sites/site.ru..bytes bytes;  
       try_files       $uri @fallback;  
     }  

Допустим нам пригодилось включить кеширование исключительно для jpeg, png и gif картинок. Сроком 1 день. Самым простым и "красивым" решением будет подобная конструкция
 location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|ttf|otf|webp|woff|txt|csv|rtf|doc|docx)$ {  
       root      /var/www/site.ru/;  
       access_log   /var/log/httpd/sites/site.ru.log combined;  
       access_log   /var/log/httpd/sites/site.ru..bytes bytes;  
       try_files       $uri @fallback;  
       location ~* ^.+\.(jpg|jpeg|gif|png|)$ {  
             expires     1d;  
        }  
     }  

Это избавляет от необходимости писать дублирующие локейшены первого уровня и делает инструкции более читаемыми.
13 авг. 2016 г.

OpenBSD изменить яркость дисплея - xbacklight

Произошла неприятность - на ноутбуке трагически погибла кнопочка Home. И все бы ничего, но в комбинации с Fn она позволяла снизить яркость дисплея, а я почти всегда опускал яркость в половину.
Сменить яркость из консоли можно с помощью команды
 # xbacklight -set 50  

Значения выставляются в процентах.

Кстати, ничто не мешает при этом переназначить выполнение данной команды на рабочие клавиши. Я пользуюсь дисплейным менеджером i3, потому, воспользовавшись юзергайдом, мы можем легко сваять в конфиг что-то вроде

 bindsym $mod+Shift+Up exec --no-startup-id xbacklight -set 50  

что позволит установить установить яркость в 50% по клику на mod+shift+вверх. Mod - зависит настроек, может быть ctrl, или так называемая Window кнопка, или Alt.
6 июл. 2016 г.

Реклама хостинга на Youtube

При просмотре очередного видео от Влада Савельева, так называемый "обжор", с удивлением обнаружил, что он рекламирует хостинг. Вот этот - provisov.net. Кто такой Влад и чем он занимается я расписывать не буду и нет особого желания, но чтобы вы поняли, о чем речь, представьте себе, что бомж из соседнего двора рекламирует Ролекс.

Ну то есть каааак можно заказывать рекламу своих услуг у человека, который  своим "творчеством" лишь дискредитирует себя, каждый раз пробивая новое дно? Или на рынке услуг хостинга все настолько плохо, что мелкие игроки не боятся замараться?

Для желающих видео

И ладно бы видео было о чем-то тематическом(все же Влад упоминал, что занимается СЕО), но ведь нет. Это очередной обжор на какой-то говеный гамбургер, который он ест и прихрюкивает.

Странно...
29 июн. 2016 г.

Centos: быстро поднимаем VNC сервер tigerVNC с xfce4

Установка VNC сервера на базе Centos выполняется очень быстро и прозрачно, в рез-те мы получаем готовое решения для удаленного доступа к десктопу.
В качестве vnc-сервера будем использовать TigerVNC.
Ставим его:
 # yum install tigervnc-server   

Создаем юзера, под которым мы будем подключаться(не под рутом же, ей богу), задаем пароль
 # useradd admin  
 # passwd admin  

Логинимся под созданным юзером
 # su admin   

Выполняем команду vncpasswd
 $ vncpasswd   

Это создаст папку ~/.vnc и файл passwd внутри. Заданный тут пароль будет использоваться для логина по протоколу VNC.

Зададим конфигурацию сервера в  /etc/sysconfig/vncservers
 VNCSERVERS="1:admin"  
 VNCSERVERARGS[1]="-geometry 1024x768"  

Теперь мы можем попробовать запустить vncserver tigervnc
 # service vncserver start  

После этого в директории /home/admin/.vnc/ появится файл xstartup, в котором мы должны будем прописать запуск сессии xfce4. Но перед этим поставим его
 # yum groupinstall xfce  

Теперь в файл /home/admin/.vnc/xstartup приводим к такому виду
 #!/bin/sh  
 exec xfce4-session &  

Рестартим tigervnc, проверяем, что порт слушается
 # netstat -alpn | grep vnc  
 tcp    0   0 0.0.0.0:5901        0.0.0.0:*          LISTEN   6293/Xvnc        
 unix 2   [ ACC ]   STREAM   LISTENING   51969 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 2   [ ACC ]   STREAM   LISTENING   51970 6293/Xvnc      /tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   377282 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52639 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52634 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52290 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52177 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52144 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52108 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52102 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52094 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52068 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   52011 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   51996 6293/Xvnc      @/tmp/.X11-unix/X1  
 unix 3   [ ]     STREAM   CONNECTED   51989 6293/Xvnc      @/tmp/.X11-unix/X1  

Все отлично, можно подключаться! Хост - Ip адрес вашего сервера, порт 5901 (1й дисплей), юзер admin, пароль - заданный вами в vncpasswd. Для подключения можно использовать клиенты Remmina или TightVNC
26 июн. 2016 г.

Установка браузера chromium в Centos 6

Пользователи дистрибутива Centos 6 могут столкнуться с проблемой установки Google Chrome (связано с требованиями по GLIBC). Если на вопрос "зачем на Centos 6 нужен Chrome" ответить сложно, то на вопрос "как же все таки установить Chrome на Centos 6" - легко. Установить можно Chromium, который полноценно заменит Chrome и который мало чем уступает. Для этого нам понадобится  репозиторий Hughesjr. Добавляем его в систему таким образом:
 # cd /etc/yum.repos.d && wget http://people.centos.org/hughesjr/chromium/6/chromium-el6.repo  

После чего выполняем вполне обычную установку ПО:
 # yum install chromium  

Проверяем версию установенного Chromium
 # chromium-browser --version  
 Chromium 31.0.1650.63 Built from source for CentOS release 6.5 (Final)  

Все, можно пользоваться.

VESTA backup: sed: invalid option -- '2' Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file].

На серверах, работающих с панелью VESTA, периодически возникает проблемы с бекапами. Лог /var/log/vesta/backup.log сообщает об успешном окончании бекапа, однако, если заглянуть чуть дальше, то видим такое
 -- SYSTEM --  
 2016-06-14 22:55:03 admin.conf  
 2016-06-14 22:55:03 stats.log  
 2016-06-14 22:55:03 history.log  
 2016-06-14 22:55:03 pam  
 -- WEB --  
 2016-06-14 22:55:03 some.server  
 2016-06-14 22:55:03 test.biz  
 2016-06-14 22:55:14 test.ru  
 sed: invalid option -- '2'  
 Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...  
 /usr/local/vesta/func/domain.sh: line 346: 3  
 37: syntax error in expression (error token is "37")  

Не спешите что-то удалять или переустанавливать, просто выполните следующее
 # v-rebuild-web-domains admin  
 # v-rebuild-user admin  

После чего запускаем бекап.
Эти команды перегенерируют файлы конфигурации, в одном из которых, скорее всего, в ходе работы появилась синтаксическая ошибка, роняющая бекапы.
24 июн. 2016 г.

Comodo решил прибрать к рукам бренд Let's encypt

Есть такой замечательный проект  Let's encypt, который предоставляет любому желающему очень просто и быстро установить абсолютно бесплатный сертификат SSL. Да, он выдается на 3 месяца(какое удачное совпадение для Комодо, об этом ниже), но его можно абсолютно бесплатно продлить, по сути повесив скрипт автообновления на крон раз в 2 месяц(ну чтобы с запасом).
Сутью притензии Comodo является то, что Let's Encrypt, якобы, украл у них бизнесс-идею с бесплатными сертификатами на 3 месяца, а потому они решили отправить сразу несколько заявок на регистрацию торговой марки "Let's Encrypt"( а так же "Let’s Encrypt with Comodo" и "Comodo Let’s Encrypt"). Заявки, к слову, пока не удовлетворены и лидеры проекта летсэнкрипта намекнули комоду, что так делать нехорошо и вместо вливаний средств в судебную тяжбу потратить их на развитие собственного ПО.
Но Комодо уверен, что 3 бесплатных месяца сертификата - украдено у них. Правда, они немного упускают из виду тот факт, что сам Комодо после 3х месяцев сертификаты уже выдает исключительно на платной основе, а  Let’s Encrypt перешагнул планку в 5 миллионов выданных бесплатно сертификатов(около 4х миллионов из который в активном состоянии).

Статья об этом на оф. сайте https://letsencrypt.org/2016/06/23/defending-our-brand.html
22 июн. 2016 г.

vestacp массовое добавление алиасов домену

Недавно появилась задача для добавления 4000 алиасов для 1 домена в панели VESTA. Крутить лимиты в панели и тд - не наш способ, проще написать небольшой скрипт, который мы сможем мониторить в реальном времени.
Для начала создаем текстовый файл aliases , содержащий список алиасов (у меня они были в формате *.domain1.ru, *.domain2.ru и тд. После чего создаем скрипт add-aliases.sh  со следующим содержимым:
 #!/bin/bash  
 IP=1.1.1.1  
 USER=admin  
 DOMAIN=example.ru  
 for i in `cat alias` ; do  
   v-add-web-domain-alias $USER $DOMAIN $i  
   v-add-dns-on-web-alias $USER $i $IP  
 echo "$i added"  
 done  

Все довольно просто
  • IP - ip адрес, на котором висит домен, на который мы добавляем алиасы
  • USER - юзер, которому принадлежит домен, на который мы добавляем алиасы
  • DOMAIN - непосредственно домен, которому добавляются псевдонимы
  • v-add-web-domain-alias и v-add-dns-on-web-alias - встроенные функции панели VESTA для добавление алиаса к домен и создание ДНС-домена для алиаса соответственно.
В рез-те выполнения получаем желанный результат. 
21 июн. 2016 г.

General error: 11 database disk image is malformed

Исправить битый файл бд sqlite довольно легко. Открываем консоль sqlite и выполняем там
 sqlite> .mode insert  
 sqlite> .output dump_all.sql  
 sqlite> .dump  

То есть создается дамп текущей базы в файл dump_all.sql. После чего дамп можно импортировать. Выходим из консоль sqlite(командой .exit), выполняем
 # sqlite3 fixed.data  

Это создаст новый файл бд sqlite fixed.data и сразу откроет консоль, в которой мы делает следующее
 sqlite> .read dump_all.sql  

После импорта мы получим исправленный и рабочий файл sqlite бд.