По умолчанию файл /etc/hosts в Solaris отсутствует. Но это совсем не означает, что он пуст! В Solaris он располагается по другому пути – /etc/inet/hosts (это можно увидеть, натравив, например, truss на nscd и он сразу покажет, какие файлы запрашивает). И так, правильный выход из ситуации – сделать симлинк /etc/hosts на файл /etc/inet/hosts. Именно так, и не иначе. В противном случае, после апдейта, могут быть конфликты или ссылка затрётся.
Быстрые диалоговые окна
1) Zenity
Zenity — утилита, которая позволяет выводить на экран диалоговые окна GTK+ из командной строки и скриптов командной оболочки. Zenity это переписанная версия программы gdialog, которая в свою очередь является адаптацией программы dialog для среды GNOME.
Официальный сайт https://help.gnome.org/users/zenity/stable/
2) Yet Another Dialog (YAD)
YAD (yet another dialog) is a tool for create graphical dialogs from shell scripts
Официальный сайт https://sourceforge.net/projects/yad-dialog/
Здесь буду писать о разного рода не стандартных ограничениях и как их решать.
1) Ограничение по user-agent’y:
nginx.conf:
http { ... map $http_user_agent $limit_bots { default ''; ~*(yandex|msnbot|yahoo) $binary_remote_addr; } limit_req_zone $limit_bots zone=bots:10m rate=40r/m; ... }
vhost.conf:
Сразу замечу, что официальной документации я не нашёл ни единого упоминания о таком поведении. А оно заключается в следующем: что бы правильно выставить значение sql_mode в my.cnf, нужно поискать, ни где ли в других стандартных конфигах не упоминается ли? В моём случае главный конфиг был в /etc/my.cnf, и базу я стартовал именно с указанием этого конфига. Но! в папке с установленным дистрибутивом mysql был ещё один my.cnf (лежал он в /opt/mysql/mysql/my.cnf, то есть $MYSQL_HOME/my.cnf) в котором и была эта строка, которая перетирала любые правки, внесённые в /etc/my.cnf касательно sql_mode. Возможно это так же влияет и на другие переменные.
После комментирования строки, и выставление нужного значения в /etc/my.cnf (мне нужно было полностью отключить его), всё заработало как надо. Правильно нужно указать так:
sql_mode=
Не знаю, проявляется ли это на новых версиях ZFS, но достаточно интересный хак. И так, ситуация следующая: при замене диска в пуле, в процесс перестройки, выпал заменяемый диск. Тогда пул навсегда замирает в состоянии DEGRADED. Как быть? Вот здесь подсмотрел хак. Приведу цитатой:
echo zfs_no_scrub_io/W0t1 | mdb -kw
После этого надо дать resilver закончиться (он пройдёт достаточно быстро), и «zpool offline» сбойное устройство.
Потом поменять параметр назад:
echo zfs_no_scrub_io/W0t0 | mdb -kw
и «zpool replace» его работающим диском.
Принцип работы хака: в треде, где идёт resilver, мы пропускаем собственно часть, которая пишет данные; resilver заканчивается (естественно, на битый диск мы ничего не пишем, так что ошибок на нём не будет, но и данных тоже).
Для FreeBSD использовать соответственно
# sysctl vfs.zfs.no_scrub_io=1
и после окончанию работ выставить в 0.
Solaris verbose boot process
По умолчанию, Solaris при загрузке очень краток: 3 строки и хватит. Что бы “разговорить” его (по аналогии, как это в Linux/FreeBSD) можно пойти 2-мя путями: править grub или “true Solaris-way“. О втором методе ниже:
# /usr/sbin/svccfg -s system/svc/restarter:default
svc:/system/svc/restarter:default> addpg options application
svc:/system/svc/restarter:default> setprop options/logging = astring: verbose
svc:/system/svc/restarter:default> exit
После этого можно перегружаться и проверять: будет выводится каждая загруженная служба.
FreeBSD
$ sockstat
Solaris
$ netstat -u
Linux
$ lsof -i
Эта опция в pf позволяет дублировать трафик, минуя таблицу маршрутизации. Синтаксис прост:
pass in|out on $ext_if dup-to ($dup_if $dup_addr) ...
где, $ext_if – интерфейс с которого снимать трафик, dup_if – интерфейс, на который пересылать трафик (находится на том же роутере, что и ext_if), dup_addr – IP-адрес хоста, куда будет дублироваться трафик (находится в той же подсети, что и dup_if).
Файловый менеджер SPRUT.io
Компания Beget перевела в разряд свободных проектов файловый менеджер SPRUT.io, изначально разработанного для использования в интерфейсе управления хостингом для управления файлами пользователя и их редактирования. Файловый менеджер построен с использованием клиент-серверной архитектуры и web-технологий, что позволяет использовать его для управления файлами на сервере из любой точки сети. Код открыт под лицензией GPLv3, серверные компоненты написаны на языке Python c использованием фреймворка Tornado. Доступен образ для быстрой установки в Docker.
Данный скрипт удаляет самый старый файл
find /path/to/dir -type f -exec ls -t {} + | awk '{w=NF?$NF:w} END{print w}' | xargs rm --
При использовании в скрипте, нужно экранировать плюс ‘+’