[macOS] Ограничение скорости Интернета

Есть несколько способов, чтобы ограничить скорость сетевого трафика в Mac OS (бывает полезно для тестирования ПО в условиях медленного Интернета). Наиболее интересным вариантом является графическая утилита Network Link Conditioner от самой Apple, которая имеет ряд уже встроенных профилей различных скоростей сетевого соединения (3G, DSL, Edge и пр.)

Скачать данную утилиту можно непосредственно на сайте разработчика в разделе «Downloads» (https://developer.apple.com/downloads/), которая входит в состав пакета «Hardware IO Tools for Xcode». После установки утилита будет доступна через оснастку  «System Preferences».

Network Link Conditioner

[Debian] Включение цвета вывода для ls в консоли

Чтобы задействовать цветное выделение данных, выводимых командой ls, достаточно раскомментировать в файле .bashrc (если работаете из под root’а, то находится в директории /root) следующие строки:

export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'

Чтобы изменения вступили в силу, нужно выполнить:

. ~/.bashrc

Результат:

ls_color

Просмотр подключенных модулей у Apache и nginx

Порой нужно узнать, какие модули подключены для Apache или nginx. К примеру, буквально пару дней назад необходимо было выяснить, подключен ли модуль mod_deflate у Apache.

Выполняем:

apache2ctl -M

Читаем:

Loaded Modules:
core_module (static)
...
deflate_module (shared)
...
Syntax OK

Для nginx также есть команда, которая показывает подробную информацию о сборке:

nginx -V

Читаем:

nginx version: nginx/x.x.0
built by gcc 4.4.5 (Debian x.x.x-x)
TLS SNI support enabled
configure arguments:
...
--with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-cc-opt='-g -O2 -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt=-Wl,--as-needed --with-ipv6

[Linux] Удаленный запуск графических приложений

Недавно нужно было на удаленной машине, работающей на Debian, запустить графическое приложение. На самом же Debian отсутствует X-сервер и графической оболочки, соответственно, ОС не имеет. К тому же, доступ к серверу есть только по SSH.

Теперь немного теории:

В X Window System предусмотрена сетевая прозрачность: графические приложения могут выполняться на другой машине в сети, а их интерфейс при этом будет передаваться по сети и отображаться на локальной машине пользователя (в случае, если это разрешено в настройках). Таким образом оконная система может находиться на другом компьютере, а графическое приложение связываться с ней через сеть. Так можно запустить приложение на удаленном компьютере, заставив его рисоваться на том компьютере, за которым сейчас работаете.

Наиболее простым решением является использованием Xming, который представляет собой локальный X-сервер.

Я использовал следующую инструкцию для настройки Xming — ссылка. Однако при попытке запустить графическое приложение я получал следующее сообщение:

Xming.exe: client 4 rejected from IP …

Решение этой проблемы описано здесь.

pkgutil — утилита для управления пакетами (.pkg) в Mac OS X

В Mac OS X есть утилита под названием pkgutil, предназначенная для манипуляции с установщиками пакетов.

Чтобы вывести список всех установленных пакетов, достаточно выполнить команду

pkgutil --packages

Чтобы найти нужный пакет, можно воспользовать grep’ом:

pkgutil --packages|grep ...

Чтобы отобразить список всех файлов, принадлежащих конкретному пакету, нужно использовать параметр —files. В примере ниже выводится список файлов для пакета ru.mail.macagent:

pkgutil --files ru.mail.macagent

Mail.Ru Agent.app
Mail.Ru Agent.app/Contents
Mail.Ru Agent.app/Contents/Frameworks
Mail.Ru Agent.app/Contents/Frameworks/Growl.framework
Mail.Ru Agent.app/Contents/Frameworks/Growl.framework/Growl
...

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

pkgutil --forget package-name

Обновление кэша пакетов в ISPManager

Обновил вручную интерпретатор PHP до версии 5.4, а вместе с ним и MySQL до 5.5. Однако в панели  ISPManager все равно значились старые версии установленных пакетов.

Чтобы исправить ситуацию, нужно обновить кэш пакетов. Для этого достаточно выполнить следующую команду:

/usr/local/ispmgr/sbin/pkgctl cache

Как узнать версию Debian?

Для того, чтобы узнать текущую версию Debian, достаточно выполнить следующую команду:

cat /etc/debian_version

Для вывода более подробной информацией можно воспользоваться следующим вариантом:

sb_release -a

[Apache] Invalid command ‘SSLEngine’

При опытке перезапустить Apache, выводится ошибка:

# /etc/init.d/apache2 restart

[warn] module rpaf_module is already loaded, skipping
Syntax error on line 303 of /etc/apache2/apache2.conf:
Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
failed!

Тем не менее модуль присутствует:

# php -m

[PHP Modules]
...
openssl
...

Проблема в том, что модуль неактивирован. Для этого нужно выполнить следующую команду:

# a2enmod ssl

После чего перезапустить Apache.

[Apache] Error retrieving pid file /var/run/apache2.pid

Пробуя зайти на свой сайт, получил 504-ошибку (Gateway Timeout). Полез в консоль, пробую перезапустить Apache, получаю:

Restarting web server: apache2Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
[Sat Feb 15 18:04:48 2014] [warn] module rpaf_module is already loaded, skipping
(20014)Internal error: Error retrieving pid file /var/run/apache2.pid
Remove it before continuing if it is corrupted.
Action 'stop' failed.
The Apache error log may have more information.
[Sat Feb 15 18:04:48 2014] [warn] module rpaf_module is already loaded, skipping
(20014)Internal error: Error retrieving pid file /var/run/apache2.pid
Remove it before continuing if it is corrupted.
Action 'start' failed.
The Apache error log may have more information.
failed!

Проблема оказалась в том, что логи сожрали все дисковое пространство, оставив жалкие 5 МБ. Удалил логи, пробую опять перезапустить Apache — запустился, но сайт вновь не работает. Перезапускаю сервер — уф, заработало…

Решение проблемы: nginx: [emerg] listen() to 0.0.0.0:80 failed (98: Address already in use)

Сегодня при попытке обновить конфигурацию nginx, вылетела ошибка:

# /etc/init.d/nginx reload

...
nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
nginx: configuration file /etc/nginx/nginx.conf test failed

Ну а когда сделал так:

# /etc/init.d/nginx restart

то с той же ошибкой nginx уже не запустился.

Из описания ошибки следует, что 80-ый порт занят, поэтому nginx не может запуститься:

# netstat -nap | grep 80

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4658/apache2
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 488/nginx

Исправляем ситуацию, убив подвисший процесс на 80-ом порту:

# fuser -k 80/tcp

Запускаем nginx:

# /etc/init.d/nginx start

Starting nginx: nginx.

Все.