0

Цикличное выполнение скрипта с интервалом

Иногда нужно выполнять скрипт/команду циклично с интервалом, в этом поможет команда watch.

Например, для вывода данных о температуре с интервалом в две секунды (по-умолчанию):

Для изменения интервала:

Для отслеживания изменений в выводе:

Пример вывода:

0

Отладка консольного приложения php на примере yiic

Когда встает вопрос отладки кода скрипта php запущенного в режиме командной строки многие впадают в ступор.

Разберем на небольшом примере отладку консольной команды фреймворка yii (CConsoleCommand).

Для того, чтобы xdebug на сервере смог подключиться к клиенту для обмена отладочной информацией текущей сессии, нужно установить или передать индивидуальные параметры xdebug в php запущенный в режиме CLI SAPI.

К примеру, для отладки консольной команды yii, можно создать простой скрипт, который при запуске установит параметры xdebug модуля в систему и запустит yiic:

Разберем более детально,
Read more

0

[GIT] Найти и восстановить удаленный файл в git

  1. Найти последний коммит, который связан с указанным файлом
  2. Переключить версию файла на состояние предыдущего коммита

Пример

stackoverflow

1

Скрипт конфигурации виртуальных хостов

Для веб-сервера Apache есть прекрасный модуль mod_macro, позволяющий использовать макросы для конфигурирования виртуальных хостов (VHost).

Этот модуль и статья на Хабре подтолкнули написать небольшой скрипт для автоматизации создания нового виртуального хоста.

Запустив скрипт можно легко добавить новый виртуальный хост, избавив себя от рутинной работы:

Скрипт добавит информацию о новом виртуальном хосте на основании шаблона, занесет hostname в файл hosts, а также перезагрузит конфигурацию веб-сервера.

Далее подробности установки модуля, создания шаблона и сам shell-скрипт.

Read more

0

Отладка сервера за NAT-ом

Если прямого доступа со стороны веб-сервера к вашему компьютеру нет, то описанная ранее схема работать не будет. Но если у вас есть доступ по SSH к веб-серверу, то поможет SSH туннель с вашей машины на сервер, в котором нужно прокинуть порт отладки к вам.

Настройка Xdebug

Перенастроем Xdebug, чтобы он смотрел на свой локальный хост (путь к файлу с настройками для Xdebug у  вас может отличаться, также можно добавить параметры xdebug в php.ini, но это не тру):

Не забываем перезагрузить веб-сервер, чтобы была прочитана новая конфигурация.

SSH Туннель (putty)

Разберем прокладку туннеля, на примере настройки SSH-клиента Putty:
Read more

0

Xdebug:Could not connect to client. :-(

Рассмотрим пример запуска отладки на удаленном веб-сервере, с конфигурацией, к примеру:

и при этом в логе Xdebug возникает ошибка «Сould not connect to client :(.»

Если файла лога нет или он пустой — нужно проверить установлен ли Xdebug и инициирован ли вашими параметрами (в phpinfo будет присутствовать раздел Xdebug с параметрами , которые вы указали в конфигурации).

Причин сообщения «Сould not connect to client :(.» может быть несколько:

1. Веб-сервер не может подключиться по порту отладки в IDE

2. Правила локальной политики безопасности сервера

Решение проблем:

Read more

1

Запуск исполняемых файлов без прав sudo (суперпользователя)

Иногда стоит задача запускать некоторые процессы в *nix среде под правами root (суперпользователя) не имея таких прав.

Это может пригодиться, например в хостинге для перезагрузки сервисов (httpd, mysqld, memcached, etc.) или, как в нашем случае — запуск автотестов (phphunit) под пользователем apache не имея прав sudo для установки пользователя под которым запускать программу.

Предыстория:

Когда у нас появились подрядчики, которые помогали нам разрабатывать услугу — мы выделили им виртуальные хосты и пользователей, которые, по понятным причинам не имели прав суперпользователя. Также наш регламент предписывает тестировать сборку автотестами, которые запускались с командной строки. Некоторые автотесты производили тестирование модуля генерации документов, которые складывались в несколько папок. Вот тут и пришла проблема, которую мы не ждали: при использовании модуля пользователем — файлы и папки создавались с владельцем apache с правами 755, тогда как при запуске автотестов — с владельцем текущего авторизованного пользователя системы, т.к. он запускает phpunit из командной строки, после чего, пользователь уже не может записать файл в папку, созданную автотестом.

Конечно, запустить что-либо в unix под другим пользователем не проблема и легко решается через явное указание пользователя под которым нужно запустить приложение:

но для выполнение такой команды нужны права суперпользователя, которых нет у пользователей подрядчика.

Таким образом, после курения гугла и мануалов пришли к единственному рабочему решению для нас: написать бинарник, который используя s-бит, может быть запущен под правами root, пользователем, у которого таких прав нет.

Собственно, нижепредставленный код, устанавливает, на время выполнения, пользователя root (setuid(0)) и собирая аргументы для запуска, выполняет запуск автотестов под пользователем apache.

Его можно модифицировать под свои нужды:

Read more