Centos 7, rpmconf, vimdiff

vimdiff используется, например, для слияния двух конфигурационных файлов. По сути vimdiff это обёртка над vim -d.

Установка vim и vimdiff в Centos 7

yum install vim-enhanced
yum provides '*/vimdiff' 

Пример слияния двух конфигурационных файлов

После обновления ОС yum update, появляются свежие конфигурационные файлы с постфиксом .rpmnew, необходимо провести слияние старого файла и нового. Для обнаружения таких файлов используется программа rpmconf.

Порядок действий:

  • rpmconf -a —frontend=vimdiff — запуск программы поиска и редактирования новых конфигурационных файлов.
  • D — показать различия файлов (выйти q).
  • M — запустить редактор для слияния файлов, на экране появится vimdiff с двумя панелями.
  • :syntax off — выключить подсветку синтаксиса, так как бывает что пропадают символы и видны только под курсором.
  • Слева показан старый, рабочий конфигурационный файл, в который необходимо добавить изменения из нового конфигурационного файла, расположеного в правой панели. Имена файлов подписаны внизу.
  • Переключение между панелями осуществляется нажатием сочетания клавиш Ctrl+w и left или right для перехода на левую или правую панель.
  • Перемещение между изменениями: вперёд ]c , назад [c .
  • Чтобы принести изменения из другой панели (не находящейся сейчас в фокусе) do, из текущей в другую dp
  • Если изменения были внесены по ошибке можно сделать отмену u и выполнить :diffupdate для повторного поиска изменений.
  • После окончания слияния в левой панель необходимо переключиться в правую Ctrl+w right и закрыть файл :q . На экране останется только необходимый файл.
  • Если нужно внести дополнительные изменения нажать i и после внесения изменений нажать Esc .
  • Записать изменения и выйти :x .

Качественный RS-232 контроллер

Очень сильно «наелся» RS-232 контроллерами от Orient и Espada, некоторые не смог завести под Linux, у некоторых брака больше чем рабочих экземпляров.

Начал искать варианты на Aliexpress и нашёл вот это чудо: «UTEK UT-752 2-ports PCI to RS232 Multi-Serial Port Card». Он работает под ОС Linux, драйвера для него находятся в актуальном состоянии, COM порты являются настоящими, а не виртуальными в случае контроллеров Orient. Кроме того у платы есть ещё преимущества, они указаны на сайте производителя. Ссылка на продавца — UTEK UT-752 2-ports PCI to RS232 Multi-Serial Port Card

Описание на сайте производителя: http://www.ethernet-serialconverter.com/sale-458862-pci-serial-card-2-ports-pci-to-rs232-multi-serial-port-card.html

Драйвер: https://www.solvline.com/eng/download_center/download_new.php?dno=1&fno=1&c2=7

Документация: https://www.solvline.com/eng/download_center/download_new.php?dno=2&fno=1&c2=7

Драйвер необходимо скомпилировать, для это в системе должен быть установлен gcc, make, kernel sources, kernel headers:
apt-get install linux-source
apt-get install linux-headers-amd64
apt-get install build-essential

Версия 21 драйвера прекрасно заработала на Debian Jessie:
lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie

uname -a
Linux scannerserver 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux

После установки необходимо добавить строчку «golden_tulip» в «/etc/modules», так как инсталлятор использует корявую автозагрузку модуля.

Chrony — ненужные NTP сервера в списке

Понадобилось на сервере изменить список NTP серверов для Chrony, для чего, соответственно, был изменён файл /etc/chrony.conf и указаны новые директивы server. Но после перезапуска демона chronyd в списке (sources) я увидел старый ненужный сервер, что немного ввело в ступор, так как в /etc/chrony.conf он не числился. Удаление через chronyc и команду delete помогало только до перезапуска демона chronyd.

Оказалось что при запуске демона chronyd используется скрипт /usr/libexec/chrony-helper

# This script configures running chronyd to use NTP servers obtained from
# DHCP and _ntp._udp DNS SRV records. Files with servers from DHCP are managed
# externally (e.g. by a dhclient script). Files with servers from DNS SRV
# records are updated here using the dig utility.

Ненужный мне NTP сервер был в файле /var/lib/dhclient/chrony.servers.* сохранившийся от старых настроек сетевого адаптера, когда-то настроенного не на статический адрес, а на DHCP.

Свободное место и ext4

На сервере имеется 2ТБ раздел. В один из дней БД mysql, размещённая на данном разделе, перестала функционировать с сообщением о нехватке места. Открыв mc увидел, что свободно ещё ~100 ГБ, но команда df -h сообщала о полном использовании места. Оказалось что файловая система ext4 по умолчанию резервирует 5% места для внутренних нужд, т.е. ~100ГБ из 2ТБ. Уменьшать процентное соотношение резервируемого пространства файловой системой ext4 можно и нужно на больших разделах, для этого используется команда (уменьшение до 1%):
tune2fs -m 1 /dev/vda1
tune2fs 1.42.5 (29-Jul-2012)
Setting reserved blocks percentage to 1% (5505021 blocks)

Дополнительные ссылки:
https://odzangba.wordpress.com/2010/02/20/how-to-free-reserved-space-on-ext4-partitions/
https://wiki.archlinux.org/index.php/ext4#Reserved_blocks

Ошибка времени исполнения с кодом исключения 0x80041002

При использовании KMS можно получить ошибку «Ошибка времени исполнения с кодом исключения 0x80041002».
Для её исправления необходимо отключить и остановить службы:
«Инструментарий управления Windows»
«Центр обеспечения безопасности»

Для этого лучше пользоваться оснасткой: Администрирование — Сервисы

Перенести в любое другое место содержимое папки %windir%\System32\Wbem\Repository, после чего включить и запустить остановленные службы.
Проверить работоспособность KMS.

Служба «Лицензирование удаленных рабочих столов» завершена из-за внутренней ошибки %%-1073672191.

Возникновение ошибки «Служба «Лицензирование удаленных рабочих столов» завершена из-за внутренней ошибки %%-1073672191.» означает, что у службы «Лицензирование удаленных рабочих столов» (которая запускается от имени «Network Service») нет прав на доступ к директории:

"c:\ProgramData\Microsoft\Crypto\RSA\MachineKeys"

.

Необходимо добавить права на чтение (если не поможет, то и на изменение, создание) для группы «Network Service». Можно проделать это через интерфейс, либо через командную строку:

icacls "c:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /grant "Network Service":(RX) /T

Если не получается задать необходимые права для вложенных файлов даже пользователю с привилегиями администратора, необходимо сменить владельца:

takeown /F "c:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /R /A

Перезапустить сервис «Лицензирование удаленных рабочих столов».

Ссылки по теме:
https://msdn.microsoft.com/en-us/library/bb909654(v=vs.90).aspx
https://support.microsoft.com/en-us/kb/278381

kernel: do_IRQ: X.Y No irq handler for vector (irq -1)

Одно из объяснений данной ошибки:

The Intel 5520 and 5500 chipsets do not properly handle remapping of MSI and MSI-X interrupts. If the interrupt remapping feature is enabled on the system with such a chipset, various problems and service disruption could occur (for example, a NIC could stop receiving frames), and the «kernel: do_IRQ: 7.71 No irq handler for vector (irq -1)» error message appears in the system logs. As a workaround to this problem, it has been recommended to disable the interrupt remapping feature in the BIOS on such systems, and many vendors have updated their BIOS to disable interrupt remapping by default. However, the problem is still being reported by users without proper BIOS level with this feature properly turned off. Therefore, this update modifies the kernel to check if the interrupt remapping feature is enabled on these systems and to provide users with a warning message advising them to turn off the feature and update the BIOS.

TROUBLESHOOTING: Some systems have trouble supporting MSI and/or MSI-X
interrupts. If you believe your system needs to disable this style of
interrupt, the driver can be built and installed with the command:
# make CFLAGS_EXTRA=-DDISABLE_PCI_MSI install

Но в моём случае появление данного сообщения было связано с битой ОЗУ.

Запуск nginx службой в Windows

Запуск nginx службой в Windows будет осуществляться с помощью программы Windows Service Wrapper.
Скачать её можно тут: http://download.java.net/maven/2/com/sun/winsw/winsw/.
Необходимо скачать .exe файл нужной версии (отлично подошла версия 1.7) и переместить в корень директории, где расположен nginx (например D:\Programs\nginx-1.7.2\), переименовав данный файл в ngsrvc.exe. В той же директории необходимо создать xml файл с именем ngsrvc.xml.

Содержимое файла ngsrvc.xml

<service>
<id>Nginx</id>
<name>Nginx</name>
<description>Nginx Web Server</description>
<executable>D:\Programs\nginx-1.7.2\nginx.exe</executable>
<logpath>D:\Programs\nginx-1.7.2\service_logs\</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p D:\Programs\nginx-1.7.2\ -c conf\nginx.conf</startargument>
<stopargument>-p D:\Programs\nginx-1.7.2\ -c conf\nginx.conf -s stop</stopargument>
</service>

Где:

  • D:\Programs\nginx-1.7.2\nginx.exe путь до исполняемого файла nginx
  • D:\Programs\nginx-1.7.2\service_logs\ путь, по которому Windows Service Wrapper будет хранить свои лог файлы (если директории нет, нужно её создать).
  • В <startargument> передаются параметры обязательно необходимые для корректного запуска nginx как сервис, дело в том что nginx при формировании путей использует косую черту (как в Linux — /), соответственно при использовании nginx в Windows необходимо использовать обратную косую черту (обратный слеш — \). Именно по-этому при запуске и остановке сервиса указывается рабочая директория параметром -p и относительный путь к конфигурационному файлу -c.

Без корректного указания параметров -c и -p появлялась ошибка в логах Windows Service Wrapper примерного содержания:

2014/07/04 13:05:39 [emerg] 3236#1168: CreateFile() "D:\Programs\nginx-1.7.2\nginx/conf/nginx.conf" failed (3: Системе не удается найти указанный путь)

Для того, чтобы зарегистрировать сервис, необходимо запустить: ngsrvc.exe install , после чего указанный сервис появится в оснастке Администрирование -> Службы , откуда станет возможно ей управлять.
Не забудте создать папку service_logs, как указано в xml файле.
Дополнительные команды:

  • Запустить — ngsrvc.exe start
  • Остановить — ngsrvc.exe stop
  • Рестартовать — ngsrvc.exe restart
  • Деинсталляция службы — ngsrvc.exe uninstall

Архив с программой и конфигурационным файлом: ngsrvc

«Рабочий» ejabberd не запускается — Error reading Mnesia database spool files

После перезагрузки сервера (ОС Ubuntu Server 12.04 LTS) перестал запускаться до этого уже настроенный и отлично работающий ejabberd.
Читать далее

Появление {{#ifeq: }} в отображении количества страниц категории

После обновления mwdiawiki с 1.19 до 1.21, при отображении страницы типа «Категория», увидел некорректное отображение количества страниц, относящихся к данной категории:

{{#ifeq:22|1|Эта категория содержит только следующую страницу.|Эта категория содержит следующие 22 страницы из 22.}}

Выяснилось, что mediawiki должна использовать расширение ParserFunctions, для обработки требуемых функций. Для того, чтобы включить данное расширение, необходимо удостовериться что оно находится в /extensions/ParserFunctions/, и включить его в LocalSettings.php :
require_once("$IP/extensions/ParserFunctions/ParserFunctions.php");