sshfs не отваливается

На работе приходится работать удалённо с несколькими сайтами (и серверами). Удобнее всего оказалось монтировать их через sshfs и работать как с локальными файлами у себя на компьютере. НО! Ели перестать работать с каким-либо сайтом на час-два то соединение с ним отваливается и при попытке совершения каких-либо операций в примонтированной ветке происходит блокировка обращающегося процесса.

Для предотвращения этого был написан скриптик

#!/bin/sh

MOUNTROOT="$HOME/remotemnt"

check_mounts()
{
for domain in `mount | grep $MOUNTROOT/ | cut -f3 -d' ' | sed -e "s#^$MOUNTROOT/##"`
do
    echo -n "$domain... "
    ls $MOUNTROOT/$domain >/dev/null
    echo live!
done
}

while true
do
    clear
    date
    echo
    check_mounts
    echo
    echo "sleep 15 sec..."
    sleep 15
done

Код просто отслеживает все примонтированные поддиректории директории ~/remotemnt и выполняет команду ls в каждой из примонтированных директорий каждые 15 секунд. Плюс выводит «живой список» всех примонтированных сайтов. Я запускаю этот скрипт (mount_watch.sh) каждое утро и горя-проблем с sshfs больше не ведаю.

Добавить комментарий

Разработчикам, использующим Vim

Проблема: при пользовании консольным Vim иногда требуется выйти в командный интерпретатор, выполнить определённые действия, а затем снова вернуться к редактированию файлов. У Vim есть замечательная команда :sh которая и выполняет выход в командный интерпретатор (у меня это bash), а по завершении ввода команд (команда exit в bash-е, или просто нажатие <Ctrl-D>) происходит возврат в Vim. Собственно, с Vim никаких проблем и не возникает. Проблема в том, что поработав в bash-е некоторое время забываешь, что на самом деле на заднем плане висит Vim и ждёт завершения работы bash. Или начинаешь путать на каком окне screen только что редактировал файлы.

Решение: Vim всякий раз запускает НОВЫЙ bash. Надо всего-лишь при запуске bash-а определять что мы запущены Vim-ом и как-то это отображать.

Это делается строками в ~/.bashrc:

export PS1="\[\033[32;1m\]\u@\h:\w\[\033[0m\] "

if ps | egrep '\<vim\>' >/dev/null; then
        export PS1="\[\033[31;1m\][VIM]\[\033[0m\]$PS1"
fi

Первая строчка устанавливает зелёное приглашение ввода команд. У вас оно может быть другое.
В четвёртой строке – если у нас bash запущен из-под vim-а – к приглашению ввода команд впереди прибавляется красная надпись [VIM].

Такая надпись ясно и однозначно напоминает, что текущий экземпляр bash-а запущен vim-ом и при нажатии <Ctrl-D> можно вернуться к редактированию файла.

Использую это решение не первый год, никаких багов не наблюдалось, работает чётко и однозначно.

Tags: ,

Добавить комментарий

Обновление джабер-виджета

Скрипт джабер-виджета обновлён. обновление небольшое, но может кому-то придётся по душе: теперь виджет показывает статусное сообщение пользователя (если таковое имеется).

Статистика показывает, что сейчас, спустя 5 месяцев после написания первой версии, виджетом пользуются что-то около трёх человек. Включая меня :) Немудрено. Перед тем как его использовать надо преодолеть несколько барьеров: во-первых, не испугаться страшного и ужасного яваскрипта :), во-вторых, знать как помещать яваскрипт-код и CSS на html страницу :) Ну а в третьих эту самую страницу ещё надо иметь :)

Ссылка на описание джабер-виджета осталась прежней: http://web-apps.ru/jabber-presence/widgets/

Комментарии (2)

В помощь разработчикам-2

Усовершенстваванный скрипт в помощь разработчикам.
Те или иные действия выполняются в зависимости от расширения модифицированного файла.

В средующем примере при изменении *.php файла как и прежде выполняется проверка синтаксиса и сообщается об ошибках (если они есть), а при изменении *.scss файла выполняется автоматическая его конвертация в css-файл, с сохранением базовой части имени.

#!/bin/sh

syntax_check()
{
    result=$(php -n -l "$1")
    if [ $? -ne 0 ]; then
        notify "PHP syntax Error" "$result"
    fi
}

inotifywait -r -m --format '%w%f' -e modify -e create $@ | \
        while read file; do
            extension=`echo $file | sed -e 's/^.*\.//'`
            case $extension in
                php)
                    syntax_check "$file"
                    ;;
                scss)
                    sass "$file" "`echo $file | sed -e s/\.scss$/.css/`"
                    notify "Преобразовано" "$file"
                    ;;
            esac

        done

Добавить комментарий

Маленькая помощь php-разработчикам

Когда программируешь на PHP для web о синтаксической ошибке в коде зачастую узнаёшь только при запуске скрипта через браузер. И это в лучшем случае. Автоматическая подсветка синтаксиса редакторами помогает, но полностью синтаксических ошибок не предотвращает.

Лучший синтаксический анализатор PHP-кода – это сам php-интерпретатор. Вызов

php -l filename.php

не запускает php-файл filename.php на выполнение, но выполняет синтаксический анализ содержащегося в нём кода. Но запускать каждый раз эту утилиту «руками» при изменении файла – пустая трата сил и времени, к тому же в большинстве случает программисты работают сразу с несколькими файлами.

Как быть? На помощь приходит Linux и inotify – подсистема ядра. Ставим пакеты inotify-tools и libnotify, и пишем маленький скрипт.

#!/bin/sh

syntax_check()
{
          result=$(php -n -l "$1")
          if [ $? -ne 0 ]; then
                 notify-send "PHP syntax Error" "$result"
          fi
}

inotifywait -r -m --format '%w%f' -e modify -e create $@ | \
           egrep --line-buffered '\.php$' | while read file; do
                    syntax_check "$file"
           done

Помещаем его в $PATH или ещё куда-либо. Я назвал скрипт
phpDevelHelper.sh и поместил его в ~/bin/ (не забудьте сделать скрипт исполнимым).

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

~/bin/phpDevelHelper.sh /var/www/project1

И спокойной редактирую файлы в любимом редакторе. Скрипт остлеживает любые изменения файлов в указанной в качестве аргумента директории (включая и файлы, находящиеся в поддиректориях) и если это *.php файл, то автоматически запускает проверку синтаксиса этого файла. Если найдена ошибка — в углу экрана сразу же всплывает элегантное и ненавязчивое сообщение об ошибке.

Проверено: экономия времени на обнаружение ошибки значительна.

Добавить комментарий

Ура!

В статистике выдачи иконок большие изменения: дневное количество запросов упало с примерно 50 тысяч  до 5 тысяч в день. И это радует :) Причина этого проста: сайт R01 ( http://r01.ru/ ) и всего его поддомены до недавнего времени показывал статус своих онлайн-консультантов, теперь же он перешёл на систему webim для консультирования пользователей. Так что сервер может вздохнуть чуточку свободнее :)

Добавить комментарий

Рубеж в 300 пользователей преодолён

На данный момент пользователей сервиса «Джаббер-статус на веб-страницах» аж 301. Несколько дней назад число пользователей уже «переваливало» за 300, но потом откатилось до 298. Как бы то ни было, «прогресс неумолим»! :)

Также выросла и интенсивность запросов иконки статуса: более чем в 1.5 раза по сравнению с предыдущим месяцем.

Ссылка на статистику http://web-apps.ru/perl-fw/analytics/icon_stat/ .

Добавить комментарий