«Консольные команды Linux» и «Протокол Beanstalk»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Vix
Нет описания правки
 
imported>Supportadmin
 
Строка 1: Строка 1:
== Консольные команды. Часть 1, Администрирование в консоли. ==
Это перевод официального протокола [https://raw.githubusercontent.com/kr/beanstalkd/master/doc/protocol.txt Beanstalk] [[Beanstalk_Protocol|Резервная копия]]


*'''login''' запрос от пользователя имени и пароля (запрос от системы к пользователю) для входа в систему( по умолчанию, при наборе пароля, он не отображается).
переводчик Андрей Климов.
*'''logout''' выход из текущего сеанса оболочки.
*'''startx''' команда для запуска графического интерфейса X Window (не путайте с системой Windows.Не бойтесь. Это не она:)).
*'''shutdown''' останавливает систему и предотвращает повреждение файловой системы при этом, но,используется только при работе в консольном режиме.При работе в режиме X Window, не используйте.
*'''halt''' быстрое и корректное выключение системы.
*'''poweroff''' корректное выключение системы.
*'''reboot''' корректное выключение с последущей загрузкой.Перезагрузка.
*'''vmstat''' выдаёт сведения о процессах, памяти и загруженности центрального процессора.
*'''su''' вход в сеанс администратора, но прийдётся ввести пароль.Для выхода из этого сеанса наберите exit и нажмите ENTER.
*'''apropos''' поиск строки в заголовках и названиях документации ( дополнительно вводится слово для поиска). Выдаёт список всего найденного.
*'''cal''' форматированный календарь на текущий месяц ( добавить y и будет календарь на весь текущий год).
*'''date''' отображает текущие дату и время, по системным часам ядра.
*'''oclock''' простые часы, которые висят на рабочем столе (много дополнительных параметров).
*'''finger''' отображение информации о пользователе, имя которого указано в команде.
*'''hostname''' команда отображает идентификатор данного узла сети ( его имя). root может изменить имя узла на новое.
*'''hwclock''' встроенные часы Вашего компьютера.Для изменения даты и времени и синхронизации с системными часами, необходимы привелегии root.
*'''pwd''' отображает полный путь к текущему каталогу.
*'''tzselect''' запуск утилиты, которая позволяет выбрать часовой пояс.
*'''uname''' выводит информацию об используемой операционной системе (при вводе дополнительных параметров команды , выдаёт довольно много информации).
*'''uptime''' показывает текущее время, продолжительность сеанса , количество пользователей и загруженность процессора.
*'''users''' отображает краткий список пользователей работающих в системе в данный момент.
*'''w''' подробная информация о всех пользователях, работающих в данный момент и также простой, вход в систему и др.Если нужен один пользователь, то указать имя в параметре.
*'''whatis''' поиск по базе данных страниц руководства и отображение краткого описания.
*'''who''' список пользователей работающих в системе в данный момент.
*'''whereiz''' находит файлы, страницы справочного руководства для указанной команды.
*'''which''' показывает полный путь к исполняемому файлу команды.
*'''whoami''' показывает текущий идентификатор пользователя, работающего в данном терминале.
*'''write''' отправляет сообщение другому пользователю, находящемуся в системе, путём копирования строк с терминала отправителя на терминал получателя.
*'''wall''' отправляет сообщение на терминал каждого пользователя находящегося в системе в данный момент.
*'''history''' показывает пронумерованный список команд, которые Вы выполняли в этом и предыдущем сеансе. Если в списке историии их довольно много, то увидите последние.
*'''jobs''' выводит список всех выполняемых и приостановленных задач.
*'''kill''' завершить процесс (необходимо указать какой).
*'''killall''' позволят управлять процессами используя их имена или имена файлов, а не идентификаторы как в kill. Завершаются все указанные процессы.
*'''kernelversion''' показывает основную и дополнительную версии ядра.
*'''nice''' позволяет отобразить или настроить приоритет задачи.
*'''ps''' выводит список всех работающих процессов.
*'''pstree''' показывает иерархию процессов системы, что хорошо показывает их взаимозависимость.
*'''renice''' задаёт приоритет для указанной задачи.
*'''script''' позволяет записывать весь вывод с терминала в файл.Что бы остановить запись нажмите Ctrl+d.Если имя файла не указано то записывается в typescript.
*'''times''' показывает полное время выполнения процессов для всей системы и данного пользователя.
*'''top''' запускает программу , которая позволяет управлять процессами.И ещё много дополнительной, полезной информации.
*'''cd''' смена текущего каталога.По умолчанию переходит в домашний каталог текущего пользователя (если без параметров).
*'''dir''' отображает файлы в текущем каталоге в алфавитном порядке и с учётом регистра.
*'''file''' показывает тип содержимого указанного файла(текст, выполняемый, данные).
*'''find''' поиск файлов в текущем каталоге.Если указать путь, можно искать везде.
*'''free''' отображает информацию об оперативной памяти, подкачки, кэше,свободная памать, общая и т.д.
*'''ls''' показывает все файлы в текущем каталоге в алфавитном порядке.Аналогична dir.
*'''last''' показывает список пользователей, которые заходили в систему с момента создания файла /var/log/wtmp.
*'''lastlog''' проверяет историю входа в систему зарегистрированных пользователей.Форматирует и выводит на печать файл /var/log/lastlog.
*'''logger''' посылает запрос демону syslogd с просьбой поместить сообщение в системный журнал.
*'''lpr''' отправляет документ на печать демону печати.
*'''chmod''' изменяет режим доступа к файлу.Символьный или числовой формат.
*'''chown''' смена владельца указанного файла.Требуется доступ root.
*'''chage''' применяется для изменения срока действия учетной записи.Для администрирования.
*'''chfn''' изменяет сведения о пользователе в файле /etc/passwd из которого берёт информацию команда finger .
*'''chgrp''' команда для администратора,для изменения группы владельцев файла.
*'''clear''' очищает экран терминала (если это возможно).
*'''crontab''' обеспечивает возможность выполнения определённых задач по расписанию. Чаще используется администратором, хотя свои задачи могут быть и у пользователей.
*'''csplit''' разбивает файл на несколько частей.Надо задать метод разбивки (строки и т.д.).
*'''cp''' копирует один файл в другой, или несколько файлов в каталог.
*'''dd''' копирование файла с одновременным выполнением различных, дополнительных преобразований.
*'''dc''' калькулятор.
*'''debugfs''' применяется для восстановления файловой системы (ext2,ext3) если недостаточно команды fsck.
*'''df''' показывает количество используемого и свободного дискового пространства для всех подключенных разделов файловой системы.
*'''du''' показывает количество блоков диска, занятых каждым из файлов каталога.
*'''mc''' запускает программу Midnight Commander диспетчер файлов в текстовой консоли. Напоминает MSDOS менеджеры и довольно проста и удобна в использовании.Очень много нужных и удобных функций.
*'''mkdir''' создание указанного каталога.
*'''man''' справочное руководство.
*'''mcat''' копирует необработанные данные на дискету.
*'''mcopy''' использует отформатированную дискету MSDOS для копирования файлов в Линукс и из Линукс без предварительного подключения дискеты к файловой системе.
*'''mdel''' удаляет файл на отформатированной дискете MSDOS.
*'''mdir''' отображает содержимое каталога на дискете MSDOS.
*'''mdu''' показывает дисковое пространство занятое каталогом MSDOS.
*'''mesg''' контролирует доступ к Вашему терминалу, что бы коллеги не могли засыпать Вас сообщениями с помощью команды write
*'''mformat''' создаёт на дискете файловую систему MSDOS.
*'''mkbootdisk''' применяется в некоторых дистрибутивах, для создания загрузочной дискеты, содержащей всё необходимое для аварийной загрузки.
*'''mktemp''' создаёт уникальное имя файла для временной работы.
*'''mlabel''' создаёт метку тома на MSDOS на отформатированной дискете.
*'''mmd''' создаёт подкаталог MSDOS на отформатированной дискете.
*'''mmount''' подключает к файловой системе отформатированное устройство MSDOS.
*'''mmove''' перемещает или переименовывает файл на дискете MSDOS.
*'''more''' средство постраничного просмотра текстового файла.
*'''mv''' переименовывает или перемещает файлы или каталоги.
*'''rm''' удаление указанного файла.Можно и много удалить.
*'''rmdir''' удаление указанного пустого каталога.
*'''safedelete''' удалиние указанного файла в каталог safedelete,где он хранится некоторое время перед необратимым удалением.
*'''stat''' отображение всей доступной информации об указанном файле.
*'''touch''' изменяет время последнего доступа или изменения файла на текущее время.
*'''undelete''' восстанавливает файлы удалённые командой safedelete.
*'''wc''' показывает число строк, слов и символов в файле.
*'''bunzip2''' распаковывает указанный файл на 30%быстрей чем gzip.
*'''bzip2''' сжимает указанный файл по ускоренному алгоритму.
*'''bzip2recover''' делает попытку восстановить данные из повреждённого файла сжатого bzip2.
*'''compress''' сжимает указанный файл по другому алгоритму.
*'''uncompress'''Полужирное начертание распаковывает файл сжатый предыдущей командой.
*'''cpio''' позволяет создавать архивы и извлекать из архивов файлы.Позволяет копировать файлы. Необходимо указывать соответствующие параметры.
*'''gpg''' позволяет зашифровать и расшифровать файл.Метод шифрования открытым ключом. Позволяет создавать электронные подписи.Если этой программы нет у Вас, скачайте http://www.gnupg.org
*'''gzip''' сжимает указанный файл.
*'''gunzip''' распаковывает указанный файл (расширения .Z,.gz,.tgz,.zip ).
*'''gzexe''' позволяет сжать исполняемый файл с указанным именем так, что бы он автоматически распаковывался и выполнялся, когда пользователь даёт команду на выполнение сжатого файла.
*'''gpasswd''' устанавливает пароль группы.
*'''mcrypt''' Шифрует указанный файл.Создаётся новый файл в рабочем каталоге с расширением .enc. Вам будет предложено ввести пароль.Не забудьте его.
*'''mdecrypt''' расшифровывает это же файл.Если этих утилит нет, скачайте http://mcrypt/hellug.grl
*'''tar''' помещает два и более файлов в новый или существующий архив или извлекает их из архива.При задании каталога, заархивирует все файлы в каталоге и подкаталоге.
*'''talk''' позволяет вести интерактивный диалог с пользователем сети ИНТЕРНЕТ.
*'''tee''' отсылет выходные данные на два устройства вывода.Можно одновременно вывести на экран и в файл.
*'''toe''' выдаёт сведения о существующих терминалах, которые могут быть использованы для дальнейшей работы.
*'''touch''' изменяет время создания файла на текущее.Если файл не существует, то создаёт новый, пустой файл.
*'''unarj''' распаковывает или выводит список содержимого указанного архива в формате .ARJ(формат сжатия MS DOS).
*'''unzip''' распаковывает и извлекает файлы из архивов , созданных утилитами ZIP ( Linux,MS DOS,Microsoft Windows ).
*'''zip''' архивирует и сжимает файлы.
*'''zipinfo''' отображает информацию о содержимом архива.Если указать имя, то выдаст информацию о конкретном файле.
*'''zipnote''' позволяет вывести и отредактировать комментарии к файлам из архива ZIP.
*'''zipsplit''' позволяет разделить архив zip на достаточно маленькие части, для записи их на сменные носители, и записывает файлы на указанное устройство(дискеты).
*'''zforce''' добавляет расширение .gz ко всем файлам в рабочем каталоге, или к указанному файлу, которые были сжаты, но не имеют расширения.Т.е. предотвращает повторное сжатие.
*'''uuencode''' кодирует двоичный файл для передачи по ASC11сетям.
*'''uudecode''' декодирует выше названный файл.
*'''autorun''' автоматически распознаёт все доступные приводы CDROM в системе, монтирует их при вставке диска и может запускать отдельные приложения (например проигрыватель).Для использования, необходимо добавить параметры в файл привода.
*'''badblocks''' проверить указанное устройство на наличие повреждённых секторов (указать устройство).
*'''eject''' извлекает носитель из указанного устройства.Если устройство смонтировано то команда производит размонтирование перед извлечением носителя.
*'''e2fsck''' проверяет и при необходимости восстанавливает повреждённый том файловой системы (ext2,ext3).
*'''echo''' выводит строку текста на стандартное устройство вывода.
*'''fdformat''' форматирование гибкого диска.Дополнительно вводится имя устройства и необходимый вид форматирования.
*'''fg''' переводит процесс выполняемый в фоновом режиме в приоритетный режим.
*'''fgconsole''' показывает количество активных виртуальных консолей.
*'''fsck''' проверяет и восстанавливает файловую систему.
*'''mount''' монтирование файловой системы.
*'''umount''' отмонтирование файловой системы (в обоих командах необходимо указать, что именно).
*'''rdev''' при вызове без параметров выводит информацию о текущей файловой системе.
*'''rcp''' применяется для копирования файлов с одного компьютера на другой.
*'''rdate''' получает значение даты и времени от другого узла сети.Используется для синхронизации системного времени узлов.
*'''rename''' переименовывает файлы.Очень удобно, когда много файлов.
*'''resize''' изменяет размер окна виртуального терминала в графическом окружении.
*'''restore''' восстанавливает файлы заархивированные с помощью команды dump.
*'''runlevel''' отображает текущий и предыдущий уровни выполнения.
*'''shred''' выполняет безопасное удаление файла предварительно перезаписав его содержимое на другой диск.
*'''sleep''' приостанавливает начало выполнения процесса на заданное количество секунд.
*'''usleep''' приостанавливает на микросекунды.
*'''sync''' очищает буферы файловой системы.
*'''cmp''' производит быстрое сравнение двух указанных файлов.Если они идентичны, то никакие сообщения не выводятся.
*'''column''' форматирует входной текст из указанного файла в список из пяти колонок.
*'''diff''' сравнивает два указанных текстовых файла.Каждое отличие выводится в контексте. Позволяет сравнивать каталоги.
*'''diff3''' сравнивает три указанных файла и выводит результаты.
*'''enscript''' преобразует указанный текстовый файл в формат Post Script.Вывод может быть направлен на печать или записан в файл.
*'''fmt''' данная утилита производит форматирование каждой строки в указанном файле таким образом, что все строки имеют одинаковую ширину.
*'''head''' утилита выводит первые десять строк файла.Можно и несколько файлов.
*'''ispell''' запуск интерактивной утилиты для проверки орфографии в указанном файле.
*'''id''' отображает действующие значения идентификаторов пользователя и группы для текущего пользователя.
*'''ifconfig''' отображает состояние текущей конфигурации сети или настраивает сетевой интерфейс.
*'''less''' отображает содержимое указанного файла на экране и позволяет удобно просмотреть.
*'''nl''' команда нумерует строки в указанном файле.
*'''paste''' обьединяет соответствующие строки файлов в колонки.При желании можно обьединить несколько файлов.
*'''pdf2ps''' преобразует файл формата PDF в Post Script.Результат записывает на диск.
*'''pdftotext''' преобразует файл из формата PDF в текст и записывает результат на диск.
*'''pr''' подготавливает текст к печати, осуществляя форматирование с разбиением на страницы.Можно подготовить несколько файлов.
*'''sort''' команда позволяет отсортировать строки файла в алфавитном порядке.
*'''split''' разбивает файл на части.
*'''zcat;zmore''' выводит содержимое файла сжатого gzip на экран без распаковки.
*'''zcmp''' сравнивает сжатые gzip два файла без распаковки.
*'''zdiff''' сравнивает сжатые gzip два файла без распаковки.
*'''zegrep;zfgrep;zgrep''' осуществляют поиск указанной строки, выражения в файле сжатом gzip, без распаковки.
*'''aumix''' запускает в интерактивном режиме утилиту, которая управляет различными настройками звуковой карты.
*'''cdda2wav''' утилита предназначена для записи звуковых дорожек с аудиокомпакт диска в файлы формата WAV.Если имя файла не указано, то запись идёт в файл audio.wav в текущем каталоге.
*'''cdlabelgen''' команда предназначена для подготовки обложек к коробкам компакт дисков. Результат в файле формата Post Script.Требуется наличие интерпретатора языка Perl не ниже 5.003 версии.
*'''cdp''' запуск проигрывателя аудиокомпакт дисков в текстовом режиме.
*'''cdparanoia''' считывает звуковые дорожки с аудиокомпактов и записывает в файлы WAV,AIFF,RAW.
*'''combine''' обьединяет два и более графических файла в один.Огромное количество спецэффектов.Является частью пакета Image Magick и можно взять http://www.imagemagick.org
*'''convert''' преобразует указанный входной графический файл, в выходной.Распознаёт множество форматов. Скачать так же как и предидущую.
*'''identify''' определяет формат и характеристики графического файла и проверяет целостность и наличие ошибок.
*'''mogrify''' преобразует графический файл и перезаписывает исходный.
*'''montage''' преобразование нескольких файлов в обьединённое изображение.Скачать http://www.imagemagick.org
*'''mpg123''' воспроизводит на основном устройстве воспроизведения аудио файл в формате MP3. Вписывается имя файла или его адрес в Интернет.Чтобы остановить воспроизведение Ctrl+c.Что бы остановить и выйти из программы Ctrl+c нажать дважды.
*'''play''' воспроизводит звуковой файл с указанным именем.Автоматически распознаёт тип файла. Позволяет добавлять различные звуковые эффекты к воспроизводимым файлам.
*'''playmidi''' воспроизводит зуковые файлы в формате MIDI.
*'''rec''' записывает входной сигнал с микрофона или других входов в звуковой файл. Тип файла следует указать с помощью параметра (type).Есть возможность добавить звуковые эффекты.
*'''sox''' преобразует сэмплы из формата входного сигнала, на выходной с добавлением эффектов.
*'''emacs''' запуск текстового редактора Emacs.
*'''joe''' простой в использовании редактор работающий в текстовом режиме.
*'''pico''' простой и удобный в использовании текстовый редактор.Удобен для редактирования конфигурационных и простых файлов.
*'''vi''' запуск классического текстового редактора VI для UNIX систем.
*'''dmesg''' выводит на экран сообщения ядра, включая отображаемые при запуске и потом. Что бы удобней читать, вводите dmesg|less.
*'''groupadd''' создание группы пользователей с указанным именем.
*'''groupdel''' удаляет группу с указанным именем.
*'''groupmod''' изменяет параметры группы с указанным именем.
*'''mkpasswd''' создаёт высококачественный пароль, состоящий по умолчанию из девяти символов и содержащий по крайней мере буквы в разном регистре и цифры.
*'''passwd''' позволяет пользователю с указанным именем изменять пароль своей учётной записи. root может изменить пароль любого пользователя.
*'''pwgen''' создаёт высококачественный пароль,который хорошо запоминается.Длинна пароля указывается числом. Если этой утилиты нет, скачать  http://metalab.unc.edu/pub/Linux/system/security
*'''quota''' показывает текущую статистику использования диска и текущие ограничения для пользователя или группы с указанным именем.
*'''quotacheck''' исследует файловую систему на предмет использования дискового пространства.
*'''quotaon''' включает и отключает ограничения на использование дискового пространства.
*'''rpm''' запускает менеджер пакетов, утилиту,позволяющую устанавливать , проверять и обновлять пакеты с расширением rpm.
*'''rpmfind''' поиск нужного пакета в базе пакетов RPM через ИНТЕРНЕТ.Последняя версия утилиты http://www.rpm.org
*'''tmpwatch''' удаление всех файлов в указанном каталоге, если к ним не осуществлялся доступ в течении последних n часов.Очищает временные каталоги.
*'''useradd''' создание нового пользователя с указанным именем.
*'''userdel''' удаляет пользователя с указанным именем.
*'''usermod''' изменяет параметры пользователя с указанным именем.
*'''fetchmail''' утилита получения почты.Роботает в фоновом режиме.Скачивает почту с указанного сервера. Если её нет, скачать можно http://www.freshmeat.net
*'''ftp''' устанавливает соединение с указанным узлом и позволяет скачивать или закачивать файлы.
*'''lynx''' запуск консольного WEBброузера.
*'''mail''' утилита редактирования и просмотра электронной почты.Отправка и получение писем.
*'''netstat''' вывод информации о сетевой подсистеме.Очень много настроек и параметров.
*'''ping''' отправка на указанный адрес пакетов для проверки возможности соединения с этим узлом.
*'''telnet''' открывает окно терминала на удалённом узле и запускает интерактивный сеанс.
*'''wvdia'''l программа подключается к ИНТЕРНЕТ по протоколу PPP с использованием параметров, хранящихся в файле /etc/wvdial.conf
*'''wvdialconf''' осуществляет поиск модема, определяет порт, к которому он подключен, его строку инициализации и максимальную скорость передачи данных.Эта информация автоматически записывается в файл (смотри выше).Требуется доступ root.
*'''ar''' средство архивирования, предназначено для создания и распаковки архива.
*'''arch''' отображает данные об архитектуре центрального процессора.
*'''at''' ставит задания в очередь для последующего выполнения в указанное время.
*'''atq''' показывает список заданий которые поставлены в очередь на выполнение.


== Консольные команды. Часть 5, управляем файлами-пакетами deb в консоли. ==
08-05-2014
==Протокол==


Приведу примеры использования утилит dpkg и apt отвечающих за управления пакетами в системах семейства Debian.
Протокол  beanstalk работает поверх  TCP используя кодировку ASCII. Клиенты могут устанавливать соединение, посылать команды и данные, а так же закрывать соединение. Для каждого соединения, сервер обрабатывает команды последовательно в порядке, в котором они были получены и посылает ответы в том же порядке. Все целые числа в протоколе отформатированы в десятичной форме и (если не указано иное) неотрицательны.


  '''DPKGdpkg -i имя_пакета '''установит или обновит ранее установленный пакет.
Названия в протоколе — строки в кодировке ASCII. Они могут содержать буквы (A-Z и a-z), цифры (0-9), знаки "-", "+", "/", ";", ".", "$", "_" и скобки "(" и ")", но не могут начинаться со знака "-". Названия разделяются символом пробел или символом конец строкиКаждое название должно быть длинной не менее одного символа.
'''dpkg -r имя_пакета''' удалит ранее установленный пакет, но сохранит файл конфигурации.
'''dpkg -l '''отобразит список всех установленных пакетов.
'''dpkg -l | grep tux '''отобразит список всех установленных пакетов с именем "tux".
'''dpkg -s имя_пакета''' имя_пакета отобразит информацию по конкретному пакету.
  '''dpkg -P у '''удалит ранее установленный пакет и удалит файл конфигурации.


'''APTapt-get install имя_пакета '''установит пакет.
Протокол содержит два вида данных: текстовые строки и неструктурированные куски данных. Текстовые строки используются для клиентских команд и ответов сервера. Части данных используются для передачи «тела» задачи и статистики. Каждое «тело» задачи является неразделенной последовательностью байтов. Сервер никогда не проверяет или изменяет «тело» задачи и всегда отправляет его обратно в его первоначальном виде. Это зависит только от клиентов, чтобы договориться о содержательной интерпретации «тел» задач.
'''apt-get update '''получить список пакетов доступных для обновления.
'''apt-get upgrade '''обновит все установленные пакеты.
'''apt-get remove имя_пакета '''удалит пакет.
'''apt-get check '''поможет узнать о конфликтующих пакетов, а также поломанных зависимостях пакетов .
'''apt-get -f install''' исправит выявлены нарушенные зависимости.


'''Вам могут быть полезны следующие опции:
Клиент может использовать команду «quit» или просто закрыть TCP соединение когда он больше не будет использовать сервер. Тем не менее, beanstalkd очень хорошо работает с большим количеством открытых соединений, поэтому обычно лучше для клиента, чтобы тот сохранил своё соединение открытым и использовал его как можно дольше. Это позволяет избежать расходов, связанных на установление новых сессий TCP.
  '''apt-get -h''' справка
'''apt-get -d''' только загрузить - не устанавливать и не распаковывать архивы
'''apt-get -s''' ничего не делать, имитировать выполнение
'''apt-get -y '''предполагается ответ Yes на все вопросы, сами вопросы не выводить
'''apt-get -f''' продолжать, даже если проверка целостности не удачна
'''apt-get -u''' плюс ко всему показывать список обновленных пакетов


Скачанные из сети файлы помещаются в каталог '''/var/cache/apt/archives''' их всегда можно найти и удалить используя команду
Если клиент нарушает протокол (например, отправив не очень хорошо сформированный запрос или несуществующую команду) или в сервере произошла ошибка, сервер ответит одним из следующих сообщений об ошибке:
'''apt-get clean'''


== Изучаем CronTab. ==
*'''OUT_OF_MEMORY\r\n''' - Сервер не может выделить память для задачи. Клиенту нужно попробовать еще раз позже.
'''CronTab''' – это утилита позволяющая в определенный день и час '''автоматически запускать''' различные программы или скрипты. Согласитесь, очень удобно.
*'''INTERNAL_ERROR\r\n''' - Эта ошибка сигнализирует о критической ошибке сервера. Такого не должно случиться никогда. Если такое произойдет, пожалуйста сообщите по адресу http://groups.google.com/group/beanstalk-talk.
*'''BAD_FORMAT\r\n''' - Клиент послал неверно сформированную команду. Это может случится в случаях, если команда не заканчивается символом \r\n, если в позиции где ожидаются целое число, а  находится иное, если неправильное количество аргументов или если командная строка неправильно формируется любым другим способом.
*'''UNKNOWN_COMMAND\r\n''' - Клиент послал неизвестную для сервера команду


Структура файла с заданиями для '''CronTab.'''
Эти ошибки не будут описаны в каждой команде индивидуально,  но они неявно включены в описание всех команд. Клиенты должны быть готовы получать в ответ ошибку после любой команды.


* <nowiki>* * * * command</nowiki>
В крайнем случае, если в сервере случилась критическая ошибка, которая приводит к прекращению обслуживания текущего клиента, сервер закроет соединение.
* - - - - -
(Прим переводчика. Далее по тексту клиенты, которые создают (генерируют) задачу будут называться генераторами задач, клиенты которые исполняют задачу, исполнителями задач).
* | | | | |
* | | | | +----- День недели (0 - 6) (Sunday=0)
* | | | +------- Месяц года (1 — 12)
* | | +--------- День месяца (1 — 31)
* | +----------- Час дня запуска (0 — 23)
* +------------- Минута часа для запуска (0 - 59)


command запускаемая программа или скрипт.
==Жизненный цикл задачи==


Значок * задаёт параметр (день, год, месяц, час).
Задачи в beanstalk создаются клиентами командой «'''put'''». На протяжении своей «жизни», задача может находится в одном из четырех состояний: «'''ready'''», «'''reserved'''», «'''delayed'''», или «'''buried'''». После создания командой «'''put'''», задача обычно переходит в состояние '''ready'''. Она ожидает в очереди '''ready''' до тех пор, пока не подключиться исполнитель и не даст команду «'''reserve'''» (прим переводчика: исполнитель может быть уже подключенным и просто дать команду «'''reserve'''» — зарезервировать за собой следующую в очереди задачу, находящуюся в состояние ready, как выполняемую. Можно перефразировать - зарезервировать следующую задачу в очереди '''ready'''. Состояние и очередь в данном случае одно и тоже). Если есть такая задача следующая в очереди, то она будет зарезервирована за исполнителем. Исполнитель выполняет задачу, после чего исполнитель посылает команду «'''delete'''», для её удаления.


'''Пример'''


'''01 * * * * command''' запуск программы или скрипта каждый час в одну минуту.
На схеме типовой жизненный цикл задачи:


'''<nowiki>* 6 * * * command</nowiki>''' запуск программы или скрипта каждый день в 6 часов утра.
    put            reserve              delete
  -----> [READY] ---------> [RESERVED] --------> *poof*


Значения могут быть числом, трех-буквенным названием, а так же диапазоном например запись «1-5» в поле day будет означать «с понедельника по пятницу». Значения могут отделяться запятыми: «1,15,31» в поле day будет запускать указанную команду 1-го, 15-го и 31-го числа каждого месяца.
На этой схеме приведены все возможные варианты:


Все пять полей времени допускают использование символа звездочка – «*», который обозначает «использовать любое допустимое значение» для этого поля.
    put with delay              release with delay
  ----------------> [DELAYED] <------------.
                        |                  |
                        | (time passes)    |
                        |                  |
    put                  v    reserve      |      delete
  -----------------> [READY] ---------> [RESERVED] --------> *poof*
                        ^  ^                |  |
                        |  \  release      |  |
                        |    `-------------'  |
                        |                      |
                        | kick                |
                        |                      |
                        |      bury          |
                    [BURIED] <---------------'
                        |
                        |  delete
                        `--------> *poof*


'''Для создания задания используйте ниже приведённые команды:'''


'''crontab -e''' Изменит Ваш crontab файл или создаст новый.
Система имеет один или более каналов. Каждый канал состоит из очередей '''ready''' и '''delay'''. Каждое задание проводит всю свою «жизнь» в одном канале. Клиенты могут подписаться на канал, отправив команду «'''watch'''»; они могут отписаться от канала, отправив команду «'''ignore'''». Этот набор каналов, на которых осуществлена подписка, является как говорят, «'''watch list'''» клиента. Когда клиент посылает команду «'''reserve'''», задача может поступить из любого канала в «'''watch list'''».
'''crontab -l''' Отобразит содержимое существующего crontab файла.
'''crontab -r''' Удалит Ваш crontab файл.
'''crontab -v''' Отобразит когда в последний раз Вы изменяли свой crontab файла.


'''Сложно работать с консольным редактором?'''Правьте файлы привычным текстовым редактором... Например используйте Gedit.


'''Файлы с заданиями можно найти тут:'''/usr/lib/cronОсновной каталог команд, связанных со временем./usr/spool/cron/crontabsКаталог файлов регулярных действий./usr/lib/cron/logУчетная информация./usr/lib/cron/cron.allowСписок пользователей, которым разрешено выполнять команду crontab./usr/lib/cron/cron.denyСписок пользователей, которым запрещено выполнять команду crontab.
Когда клиент подключается, его «'''watch list'''» он изначально подписан только на канал «'''default'''». Если он посылает команду «'''reserve'''» без предварительного использования команды «'''use'''», то все его задачи будут находится только в канале «'''default'''».


'''hwclock''' - посмотреть время в БИОС (BIOS)
 
'''/etc/adjtime''' - показывает отклонение часов и какое время они показывают, локальное или UTC
Каналы создаются по запросу, всякий раз когда на них ссылаются. Если канал пуст (это означает, что он не содержит задач со статусом «'''ready'''», «'''delayed'''» или «'''buried'''») и нет подписанных клиентов, канал будет удален.
  '''/etc/timezone файл''' - используется для установки переменной окружения
 
'''etc/sysconfig/clock''' -  
==Команды генераторов задач==
'''sudo dpkg-reconfigure tzdata''' - установка часового пояса
===put===
'''date 110114312011.00''' - 11-месяц-01-день14-час31-минуты-2011-год.00-секунды  - системное время
Команда «'''put'''» предназначена для любого клиента, который желает добавить задачу в очередь. Она включает в себя строку команды с последующей строкой «тела» задачи:
'''sudo hwclock -w''' - записать системное время в БИОС
 
'''put <pri> <delay> <ttr> <bytes>\r\n'''
 
'''<dаta>\r\n'''
 
Добавляет задачу в используемый клиентом в настоящее время канал (см. ниже команду «'''use'''»).
 
*'''<pri>''' приоритет - целое число < 2**32. Задачи с меньшим значением приоритета будут выполнены раньше задач с большим значение приоритета. Самая важная задача будет иметь приоритет 0; самая неважная задача будет иметь приоритет 4,294,967,295.
*'''<delay>''' отсрочка — целое число секунд ожидания до постановки задачи в очередь «ready». Все это время задача будет иметь статус «'''delayed'''».
*'''<ttr>''' время выполнения — целое число секунд, которые отводятся исполнителю на выполнение этой задачи. Это время отсчитывается с момента начала выполнения команды «'''reserve'''» для этой задачи. Если исполнитель не даст команду «delete», «release» или «bury» для этой задачи через <ttr> секунд, будет превышено время выполнения и сервер выполнит команду «'''release'''» для этой задачи. Минимальное значение 1. Если клиент устанавливает значение <ttr> равным 0, сервер без предупреждения увеличит его до 1.
*'''<bytes>''' размер тела задачи — целое число указывающее размер тела задачи, не включая граничные символы "\r\n". Это значение должно быть меньше чем max-job-size (по умолчанию: 2**16).
*'''<dаta> '''тело задачи — последовательность байтов длиной '''<bytes> '''указанной в строке команды.
 
После отправки строки команды и тела задачи, клиент должен ожидать один из возможных ответов:
*'''INSERTED <id>\r\n''' - указывает на успешное добавление задачи.
**<id> - целое число, идентификатор новой задачи
*'''BURIED <id>\r\n''' - указывает на то, что серверу не хватило памяти при попытке разобрать структуру данных очереди приоритетов.
**<id> - целое число, идентификатор новой задачи
*'''EXPECTED_CRLF\r\n''' - тело задачи должно оканчиваться парой символов CR-LF, а именно, "\r\n". Эти два байта не учитываются в при расчете длины тела задачи в строке команды put.
*'''JOB_TOO_BIG\r\n''' - клиент передает тело задачи больше чем max-job-size байт
*'''DRAINING\r\n''' - означает, что сервер находится в режиме "drain mode" и больше не принимает новые задачи. Клиент должен попробовать подключиться к другому серверу или повторить подключение позже.
 
===use===
 
Команда «'''use'''» предназначена только для генераторов команд. Последующие команды «'''put'''» добавят задачу в канал, предусмотренный настоящей командой. Если не был дана команда «'''use'''», задачи будут добавлены в канал под названием «'''default'''».
 
'''use <tube>\r\n'''
 
*'''<tube>''' - название канала, длиной не более 200 байт. Указывает какой канал станет текущим для использования. Если такого канала нет, то он будет создан.
 
Возможен только один вариант ответа:
*'''USING <tube>\r\n '''- указывает имя используемого канала
**<tube> - Имя канала, который стал текущим
 
==Команды исполнителей задач==
 
Клиент, который хочет получить задачу из очереди должен использовать команды «'''reserve'''», «'''delete'''», «'''release'''» и «'''bury'''» (прим переводчика: если точнее, то это набор команд исполнителя для работы с очередью в канале).
 
===reserve, reserve-with-timeout===
 
Первая команда исполнителя «'''reserve'''», выглядит так:
 
'''reserve\r\n'''
 
Альтернативно можно указать тайм-аут следующим образом:
 
'''reserve-with-timeout <seconds>\r\n'''
 
Команды вернут вновь зарезервированную задачу. Если не будет доступных для резервирования задач, beanstalkd будет ожидать возможности послать ответ, до тех пор пока это не станет возможным. После того, как задача будет зарезервирована за для клиента, у клиента есть строго ограниченное время (TTR) для выполнения задачи. При наступлении тайм-аута задачи, сервер будет поставить работу обратно в очередь готовности. И TTR и фактическое время выполнения можно найти в статистике по команде '''stats-job'''.
 
Если более одной задачи имеют статус ready, beanstalkd выберет одну из них с наименьшим значением приоритета. В рамках одного приоритета, будет выбрана та задача, которая была получена первой.
 
Тайм-аут со значением 0 заставит сервер немедленно возвращать либо ответ или '''TIMED_OUT '''. Положительное значение тайм-аута будет задавать время, в течении которого запросы «'''reserve'''» будет блокированы пока задача снова не станет доступной.
 
Всё время TTR зарезервированной задачи, вплоть до последней секунды сервер будет находится в безопасном режиме, при котором исполнитель гарантированно не может получить другую задачу. Если исполнитель дает команду «'''reserve'''» во время безопасного режима или безопасный режим наступает пока исполнитель ожидает ответ на команду «'''reserve'''», сервер может ответить следующим образом:
 
*'''DEADLINE_SOON\r\n''' - дает исполнителю шанс дать команду «'''delete'''» или «'''release'''» для зарезервированной задачи, до того как сервер автоматически даст команду «'''release'''» для зарезервированной задачи.
*'''TIMED_OUT\r\n''' - если был указан неотрицательный тайм-аут и тайм-аут превышен до момента, когда задача стала доступна, или если соединение клиента является полузакрытыми, сервер ответит TIMED_OUT
 
В противном случае, единственным ответом на эту команду является успешное резервирование задачи в виде текстовой строки, затем тела задачи:
 
*'''RESERVED <id><bytes>\r\n''' - успешное резервирование задачи
**'''<id>''' - имя канала, который стал текущим
**'''<bytes>''' - целое число указывающее размер тела задачи, не включая граничные символы "\r\n".
*'''<dаta>\r\n''' - тело успешно зарезервированной задачи — последовательность байтов длиной <bytes> указанной в строке команды. Это точная копия байтов, которые были изначально отправлены на сервер командой «'''put'''» в этой задаче.
 
===delete===
 
Команда «'''delete'''» удаляет задачу с сервера целиком. Эта команда, как правило, используется клиентом, когда задача успешно выполнена. Исполнитель может удалять задания, которые он зарезервировал, а так же задачи со статусом «'''ready'''», «'''delayed'''» или «'''buried'''». Команда «'''delete'''» выглядит следующим образом:
 
'''delete <id>\r\n'''
 
*'''<id>''' - идентификатор задачи, которую следует удалить.
 
Исполнитель должен ожидать один из возможных вариантов ответа:
 
*'''DELETED\r\n - '''сигнализирует об успешности операции
*'''NOT_FOUND\r\n''' - если задача не существует, или была зарезервирована не этим исполнителем, была переведена в статус '''ready''' или '''buried''' (прим переводчика: неоднозначный, возможно неправильный перевод). Эта ситуация возможна в случае, когда тайм-аут для задачи наступил раньше, чем клиент дал команду «'''delete'''»
 
===release===
 
Команда «'''release'''» помещает зарезервированную задачу назад в очередь ready (и помечает её статус как «'''ready'''») для запуска любым исполнителем. Обычно это используется, когда выполнить задачу не удается из-за возникшей ошибки.
 
Формат команды:
 
'''release <id> <pri> <delay>\r\n'''
 
* '''<id>''' идентификатор задачи, которую следует «реализовать».
* '''<pri>''' новый приоритет для задачи.
* '''<delay>''' целое число секунд ожилания, до того как задача переместится в очередь ready. В течение этой задержки задача будет иметь статус «'''delayed'''».
 
Исполнитель должен ожидать один из возможных вариантов ответа:
 
*'''RELEASED\r\n''' - сигнализирует об успешности операции
*'''BURIED\r\n''' - указывает на то, что серверу не хватило памяти при попытке разобрать структуру данных очереди приоритетов.
*'''NOT_FOUND\r\n''' - если задача не существует или была зарезервирована не этим исполнителем
 
===bury===
 
Команда «'''bury'''» переводит задачу в статус «'''buried'''». Такие задачи помещаются в FIFO подобный список и не обрабатываются сервером до тех пор, пока исполнитель не даст команду «'''kick»'''.
 
Формат команды:
 
'''bury <id> <pri>\r\n'''
 
* '''<id>''' идентификатор задачи, которую следует «заморозить» (прим переводчика: в оригинальном тексте про команду release).
* '''<pri>''' новый приоритет, назначенный задаче.
 
Возможны два варианта ответа:
 
*'''BURIED\r\n''' - сигнализирует об успешности операции
*'''NOT_FOUND\r\n''' - если задача не существует или была зарезервирована не этим исполнителем
 
===touch===
 
Команда "'''touch'''" позволяет исполнителю запросить больше времени на выполнение задачи. Это полезно для задач, которые потенциально выполняются долго, но вы продолжаете использовать преимущества TTR при выполнении затянувшейся задачи не зависшим исполнителем. Исполнитель может ппереодически говорить серверу что он по-прежнему жив и выполняет задачу (например исполнитель может так делать при поступлении команды DEADLINE_SOON). Команда откладывает автоматическое выполнение команды «'''release'''» зарезервированной задачи на TTR секунд с момента поступления команды.
 
Формат команды:
 
'''touch <id>\r\n'''
 
* '''<id>''' идентификатор задачи, зарезервированной в текущем соединении.
 
Возможны два варианта ответа:
 
*'''TOUCHED\r\n''' - сигнализирует об успешности операции
*'''NOT_FOUND\r\n''' - если задача не существует или была зарезервирована не этим исполнителем
 
===watch===
 
Команда «'''watch'''» добавляет именованный канал в '''watch list''' текущего соединения. Команда «'''reserve'''» принимает задачи из любого канала в watch list. Для каждого нового соединения создаётся новый '''watch list''', содержащий только один канал, называемый «'''default'''».
 
Формат команды:
 
'''watch <tube>\r\n'''
 
* '''<tube>''' название канала, длиной не более 200 байт. Указывает какой канал будет добавлен в watch list. Если такого канала нет, то он будет создан.
 
Возможный ответ:
 
'''WATCHING <count>\r\n'''
 
* '''<count>''' целое число каналов в текущем watch list.
 
==Другие команды==
 
===Группа команд peek===
 
Группа команд «'''peek'''» позволяют клиенту инспектировать задачи в системе. Всего 4 варианта. Все команды, кроме первой, работают только для текущего именованного канала.
 
* '''peek <id>\r\n''' — возвращает задачу по <id>.
* '''peek-ready\r\n''' — возвращает следующую задачу со статусом '''ready'''.
* '''peek-delayed\r\n''' — возвращает следующую задачу со статусом '''delayed''' с наименьшим временем задержки.
* '''peek-buried\r\n''' - возвращает следующую в списке задачу со статусом '''buried'''.
 
Возможны два варианта ответа:
* '''NOT_FOUND\r\n''' — если запрашиваемая задача не создана или нет задачи с запрашиваемым статусом.
* '''FOUND <id> <bytes>\r\n<data>\r\n''' - случае успеха, строка ответа сопровождается строкой данных
** '''<id>''' идентификатор задачи.
** '''<bytes>''' целое число указывающее размер тела задачи, не включая граничные символы "\r\n".
** '''<data>''' тело задачи — последовательность байтов длиной '''<bytes> '''указанной в строке ответа.
 
===kick===
 
Команда «'''kick'''» применима только для текущего именованного канала. Она переносит задачи в очередь '''ready'''. Если есть хоть одна задача со статусом «'''buried'''», команда применится только к этим задачам. В противном случае, будут перемещены только задачи со статусом «'''delayed'''».
 
Формат команды:
 
'''kick <bound>\r\n'''
* '''<bound>''' целое число — количество задач для перемещения. Сервер переместит не более чем <bound> задач.
 
Возможный ответ:
 
'''KICKED <count>\r\n'''
* '''<count>''' целое число, указывающее число действительно перенесенных задач.
 
===kick-job===
 
Команда «'''kick-job'''» вариант команды '''kick''' с указанием конкретной задачи по её идентификатору. Если указываемая по id задача создана и имеет статус buried или delayed, она будет перемещена в очередь ready того же канала, в котором она находилась.
 
Формат команды:
 
'''kick-job <id>\r\n'''
* '''<id>''' идентификатор задачи для перемещения.
 
Возможен один из вариантов ответа:
 
* '''KICKED\r\n — '''если команда выполнена успешно.
* '''NOT_FOUND\r\n''' — если задачи не существует или у неё не подходящий статус. Это может быть так же внутренней ошибкой.
 
===stats-job===
 
Команда '''stats-job '''предоставляет статистику об указанной задаче, если указанная задача существует.
 
Формат команды:
 
'''stats-job <id>\r\n'''
* '''<id> '''идентификатор задачи
 
Возможен один из вариантов ответа:
* '''NOT_FOUND\r\n''' - если задачи не существует.
* '''OK <bytes>\r\n<data>\r\n'''"
** '''<bytes> '''размер последующей секции данных в байтах.
** '''<data>''' последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл со статистикой, представленной в виде словаря (прим переводчика: строки в виде <ключ>:<значение>).
 
Статистика содержит следующие параметры:
* '''id''' - идентификатор задачи;
* '''tube''' - название канала, в котором находится задача;
* '''state''' - статус: «'''ready'''», «'''delayed'''», «'''reserved'''» или «'''buried'''»
* '''pri''' - значение приоритета установленного командой «'''put'''», «'''release'''» или «'''bury'''».
* '''age''' - время в секундах с момента создания задачи командой «'''put'''».
* '''time-left''' - количество секунд до момента когда сервер переместит эту задачу в очередь '''ready'''. Это число имеет смысл только если задача имеет статус '''reserved''' или '''delayed'''. Если задача зарезервирована и время истекло раньше изменения статуса, то считается что у задачи тайм-аут.
* '''file''' - количество более ранних файлов binlog, содержащих эту задачу. Если при запуске сервера не была указана опция -b, число будет 0.
* '''reserves''' - количество раз, которое эта задача получала статус '''reserved'''.
* '''timeouts''' - количество раз, которое эта задача получала тайм-аут, находясь в резерве.
* '''releases ''' - количество раз, которое эта задача получала статус '''released''' от исполнителя, находясь в резерве.
* '''buries '''- количество раз, которое эта задача получала статус '''buried'''.
* '''kicks '''- количество раз, которое эта задача получала команду '''kick'''.
 
===stats-tube===
 
Команда '''stats-tube''' предоставляет статистику об указанном канале, если такой существует.
 
Формат команды:
 
'''stats-tube <tube>\r\n'''
* '''<tube>''' - название канала, длиной не более 200 байт. Статистика будет предоставлена для этого канала.
 
Возможен один из вариантов ответа:
* '''NOT_FOUND\r\n''' — если канала не существует.
* '''OK <bytes>\r\n<data>\r\n'''
** '''<bytes> ''' - размер последующей секции данных в байтах.
** '''<data>''' - последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл со статистикой, представленной в виде словаря (прим переводчика: строки в виде <ключ>:<значение>).
 
Статистика содержит следующие параметры:
* '''name''' - имя канала.
* '''current-jobs-urgent''' - количество задач со статусом '''ready''' и приоритетом < 1024 в этом канале.
* '''current-jobs-ready '''- количество задач в очереди '''ready''' в этом канале.
* '''current-jobs-reserved''' - количество зарезервированных исполнителями задач в канале.
* '''current-jobs-delayed''' - количество задач со статусом '''delayed''' в этом канале.
* '''current-jobs-buried''' - количество задач со статусом '''buried''' в этом канале.
* '''total-jobs''' - общее количество задач созданных в этом канале текущим процессом beanstalkd.
* '''current-using''' - количество открытых соединений использующих этот канал в настоящий момент.
* '''current-waiting''' - количество открытых соединений, которые дали команду '''reserve''', наблюдая за каналом, но ещё не получили ответ.
* '''current-watching''' - количество открытых соединений, которые наблюдают за каналом.
* '''pause''' - количество секунд, которое канал был приостановлен.
* '''cmd-delete''' - общее количество раз, которое была выполнена команда '''delete''' в этом канале.
* '''cmd-pause-tube''' - общее количество раз, которое бал приостановлен канал командой '''pause-tube'''.
* '''pause-time-left''' - количество секунд до запуска канала (прим переводчика: не понял смысла этой фразы «is the number of seconds until the tube is un-paused.»).
 
===stats===
 
Команда '''stats''' предоставляет статистику о системе в целом.
 
'''stats\r\n'''
 
Ответ сервера:
 
'''OK <bytes>\r\n<data>\r\n'''
* '''<bytes>''' размер последующей секции данных в байтах.
* '''<data>''' последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл со статистикой, представленной в виде словаря (прим переводчика: строки в виде <ключ>:<значение>).
 
Параметры, описываемые как "общее количество", сбрасываются при запуске процесса beanstalkd. При указании опции -b, они не сохраняются на диске.
 
* '''current-jobs-urgent''' - количество задач в очереди (состоянии) '''ready''' с приоритетом менее 1024.
* '''current-jobs-ready''' - количество задач в очереди (состоянии) '''ready'''.
* '''current-jobs-reserved - '''количество задач зарезервированных всеми исполнителями.
* '''current-jobs-delayed '''- количество задач со сотатусом «'''delayed'''».
* '''current-jobs-buried '''- количество задач со сотатусом «'''buried'''».
* '''cmd-put''' - общее количество команд «'''put'''».
* '''cmd-peek''' - общее количество команд «'''peek'''».
* '''cmd-peek-ready''' - общее количество команд «'''peek-ready'''».
* '''cmd-peek-delayed''' - общее количество команд «'''peek-delayed'''».
* '''cmd-peek-buried''' - общее количество команд «'''peek-buried»'''.
* '''cmd-reserve''' - общее количество команд «'''reserve'''».
* '''cmd-use''' - общее количество команд «'''use'''».
* '''cmd-watch''' - общее количество команд «'''watch'''».
* '''cmd-ignore''' - общее количество команд «'''ignore'''».
* '''cmd-delete''' - общее количество команд «'''delete'''».
* '''cmd-release''' - общее количество команд «'''release'''».
* '''cmd-bury''' - общее количество команд «'''bury'''».
* '''cmd-kick''' - общее количество команд «'''kick'''».
* '''cmd-stats''' - общее количество команд «'''stats'''».
* '''cmd-stats-job''' - общее количество команд «'''stats-job»'''.
* '''cmd-stats-tube''' - общее количество команд «'''stats-tube»'''.
* '''cmd-list-tubes''' - общее количество команд «'''list-tubes'''».
* '''cmd-list-tube-used''' - общее количество команд «'''list-tube-used'''».
* '''cmd-list-tubes-watched''' - общее количество команд «'''list-tubes-watched'''».
* '''cmd-pause-tube''' - общее количество команд «'''pause-tube»'''.
* '''job-timeouts''' - общее количество раз, которое задача была в тайм-ауте.(прим переводчика: не точное описание, речь должна идти обо всех задачах, а не об одной)
* '''total-jobs''' - общее количество созданных задач.
* '''max-job-size''' - максимальное число байт в задаче.
* '''current-tubes''' - число существующих в настоящий момент каналов.
* '''current-connections''' - число открытых в настоящее время соединений.
* '''current-producers''' - число открытых соединений, через которое была дана по меньшей мере одна команда «'''put'''».
* '''current-workers''' - число открытых соединений, через которое была дана по меньшей мере одна команда «'''reserve'''».
* '''current-waiting''' - число открытых соединений, через которое была дана команда «reserve», но еще не получен ответ.
* '''total-connections''' - общее количество соединений (прим переводчика: не понятно, о каких соединениях идет речь, об открытых в настоящий момент или с учетом уже закрытых соединений)
* '''pid''' - pid процесса сервера.
* '''version''' - версия сервера.
* '''rusage-utime''' - общее время user CPU процесса в секундах и микросекундах.
* '''rusage-stime'''- общее время system CPU процесса в секундах и микросекундах.
* '''uptime''' - количество секунд с момента запуска процесса.
* '''binlog-oldest-index''' - индекс старейшего файла binlog, необходимого для хранения текущих задач.
* '''binlog-current-index''' -индекс текущего файла binlog, в который производится запись. Если binlog не активен, значение бедт равно 0.
* '''binlog-max-size''' - максимальный размер файла binlog в байтах, после которого будет создан новый.
* '''binlog-records-written''' - общее количество записей сделанных в binlog.
* '''binlog-records-migrated''' - общее количество записей, записанных как части архиров (прим переводчика: не понял смысл).
* '''id''' - случайный текстовый идентификатор для конкретного процесса сервера, генерируется при старте beanstalkd.
* '''hostname''' - hostname машины, выдаваемый командой uname.
 
===list-tubes===
 
Команда '''list-tubes''' возвращает список всех существующих каналов.
 
Формат команды:
 
'''list-tubes\r\n'''
 
Ответ сервера:
'''OK <bytes>\r\n<data>\r\n'''
* '''<bytes> - '''размер последующей секции данных в байтах.
* '''<data>''' - последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл содержащий названия всех каналов в виде списка строк.
 
===list-tube-used===
Команда '''list-tube-used''' возвращает канал, используемый клиентом в настоящее время.
 
Формат команды:
 
'''list-tube-used\r\n'''
 
Ответ сервера:
 
'''USING <tube>\r\n'''
*'''<tube>''' название используемого конала.
 
===list-tubes-watched===
Команда '''list-tubes-watched'''возвращает список каналов на которые подписан исполнитель в настоящий момент.
 
Формат команды:
 
'''list-tubes-watched\r\n'''
 
Ответ сервера:
 
'''OK <bytes>\r\n<data>\r\n'''
*'''<bytes> - '''размер последующей секции данных в байтах.
*'''<data>''' - последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл содержащий названия всех каналов на которые есть подписка в виде списка строк.
 
===quit===
Команда '''quit''' просто закрывает соединение.
 
Формат команды:
 
'''quit\r\n'''
 
===pause-tube===
 
Команда '''pause-tube''' позволяет приостановить резервирование новых задач на определенное время.
 
Формат команды:
 
'''pause-tube <tube-name> <delay>\r\n'''
* '''<tube>''' - название приостанавливаемого канала
* '''<delay>''' - целое число секунд до момента восстановления возможности резервирования задач из очереди.
 
Возможны два варианта ответа:
 
* '''PAUSED\r\n''' - сигнализирует об успешном выполнении.
* '''NOT_FOUND\r\n''' - если такого канала не существует.
 
===ignore===
 
Команда «'''ignore'''» только для исполнителей. Она удаляет именованый канал из watch list для текущего соединения.
 
Формат команды:
 
'''ignore <tube>\r\n'''
 
Возможен один из вариантов ответа:
 
* '''WATCHING <count>\r\n''' сигнализирует об успешности операции
** '''<count>''' целое число каналов в текущем watch list.
* '''NOT_IGNORED\r\n'''" если клиент пытается игнорировать единственный канал в его watch list.

Текущая версия от 15:48, 8 мая 2014

Это перевод официального протокола Beanstalk Резервная копия

переводчик Андрей Климов.

08-05-2014

Протокол

Протокол beanstalk работает поверх TCP используя кодировку ASCII. Клиенты могут устанавливать соединение, посылать команды и данные, а так же закрывать соединение. Для каждого соединения, сервер обрабатывает команды последовательно в порядке, в котором они были получены и посылает ответы в том же порядке. Все целые числа в протоколе отформатированы в десятичной форме и (если не указано иное) неотрицательны.

Названия в протоколе — строки в кодировке ASCII. Они могут содержать буквы (A-Z и a-z), цифры (0-9), знаки "-", "+", "/", ";", ".", "$", "_" и скобки "(" и ")", но не могут начинаться со знака "-". Названия разделяются символом пробел или символом конец строки. Каждое название должно быть длинной не менее одного символа.

Протокол содержит два вида данных: текстовые строки и неструктурированные куски данных. Текстовые строки используются для клиентских команд и ответов сервера. Части данных используются для передачи «тела» задачи и статистики. Каждое «тело» задачи является неразделенной последовательностью байтов. Сервер никогда не проверяет или изменяет «тело» задачи и всегда отправляет его обратно в его первоначальном виде. Это зависит только от клиентов, чтобы договориться о содержательной интерпретации «тел» задач.

Клиент может использовать команду «quit» или просто закрыть TCP соединение когда он больше не будет использовать сервер. Тем не менее, beanstalkd очень хорошо работает с большим количеством открытых соединений, поэтому обычно лучше для клиента, чтобы тот сохранил своё соединение открытым и использовал его как можно дольше. Это позволяет избежать расходов, связанных на установление новых сессий TCP.

Если клиент нарушает протокол (например, отправив не очень хорошо сформированный запрос или несуществующую команду) или в сервере произошла ошибка, сервер ответит одним из следующих сообщений об ошибке:

  • OUT_OF_MEMORY\r\n - Сервер не может выделить память для задачи. Клиенту нужно попробовать еще раз позже.
  • INTERNAL_ERROR\r\n - Эта ошибка сигнализирует о критической ошибке сервера. Такого не должно случиться никогда. Если такое произойдет, пожалуйста сообщите по адресу http://groups.google.com/group/beanstalk-talk.
  • BAD_FORMAT\r\n - Клиент послал неверно сформированную команду. Это может случится в случаях, если команда не заканчивается символом \r\n, если в позиции где ожидаются целое число, а находится иное, если неправильное количество аргументов или если командная строка неправильно формируется любым другим способом.
  • UNKNOWN_COMMAND\r\n - Клиент послал неизвестную для сервера команду

Эти ошибки не будут описаны в каждой команде индивидуально, но они неявно включены в описание всех команд. Клиенты должны быть готовы получать в ответ ошибку после любой команды.

В крайнем случае, если в сервере случилась критическая ошибка, которая приводит к прекращению обслуживания текущего клиента, сервер закроет соединение. (Прим переводчика. Далее по тексту клиенты, которые создают (генерируют) задачу будут называться генераторами задач, клиенты которые исполняют задачу, исполнителями задач).

Жизненный цикл задачи

Задачи в beanstalk создаются клиентами командой «put». На протяжении своей «жизни», задача может находится в одном из четырех состояний: «ready», «reserved», «delayed», или «buried». После создания командой «put», задача обычно переходит в состояние ready. Она ожидает в очереди ready до тех пор, пока не подключиться исполнитель и не даст команду «reserve» (прим переводчика: исполнитель может быть уже подключенным и просто дать команду «reserve» — зарезервировать за собой следующую в очереди задачу, находящуюся в состояние ready, как выполняемую. Можно перефразировать - зарезервировать следующую задачу в очереди ready. Состояние и очередь в данном случае одно и тоже). Если есть такая задача следующая в очереди, то она будет зарезервирована за исполнителем. Исполнитель выполняет задачу, после чего исполнитель посылает команду «delete», для её удаления.


На схеме типовой жизненный цикл задачи:

   put            reserve               delete
  -----> [READY] ---------> [RESERVED] --------> *poof*

На этой схеме приведены все возможные варианты:

   put with delay               release with delay
  ----------------> [DELAYED] <------------.
                        |                   |
                        | (time passes)     |
                        |                   |
   put                  v     reserve       |       delete
  -----------------> [READY] ---------> [RESERVED] --------> *poof*
                       ^  ^                |  |
                       |   \  release      |  |
                       |    `-------------'   |
                       |                      |
                       | kick                 |
                       |                      |
                       |       bury           |
                    [BURIED] <---------------'
                       |
                       |  delete
                        `--------> *poof*


Система имеет один или более каналов. Каждый канал состоит из очередей ready и delay. Каждое задание проводит всю свою «жизнь» в одном канале. Клиенты могут подписаться на канал, отправив команду «watch»; они могут отписаться от канала, отправив команду «ignore». Этот набор каналов, на которых осуществлена подписка, является как говорят, «watch list» клиента. Когда клиент посылает команду «reserve», задача может поступить из любого канала в «watch list».


Когда клиент подключается, его «watch list» он изначально подписан только на канал «default». Если он посылает команду «reserve» без предварительного использования команды «use», то все его задачи будут находится только в канале «default».


Каналы создаются по запросу, всякий раз когда на них ссылаются. Если канал пуст (это означает, что он не содержит задач со статусом «ready», «delayed» или «buried») и нет подписанных клиентов, канал будет удален.

Команды генераторов задач

put

Команда «put» предназначена для любого клиента, который желает добавить задачу в очередь. Она включает в себя строку команды с последующей строкой «тела» задачи:

put <pri> <delay> <ttr> <bytes>\r\n

<dаta>\r\n

Добавляет задачу в используемый клиентом в настоящее время канал (см. ниже команду «use»).

  • <pri> приоритет - целое число < 2**32. Задачи с меньшим значением приоритета будут выполнены раньше задач с большим значение приоритета. Самая важная задача будет иметь приоритет 0; самая неважная задача будет иметь приоритет 4,294,967,295.
  • <delay> отсрочка — целое число секунд ожидания до постановки задачи в очередь «ready». Все это время задача будет иметь статус «delayed».
  • <ttr> время выполнения — целое число секунд, которые отводятся исполнителю на выполнение этой задачи. Это время отсчитывается с момента начала выполнения команды «reserve» для этой задачи. Если исполнитель не даст команду «delete», «release» или «bury» для этой задачи через <ttr> секунд, будет превышено время выполнения и сервер выполнит команду «release» для этой задачи. Минимальное значение 1. Если клиент устанавливает значение <ttr> равным 0, сервер без предупреждения увеличит его до 1.
  • <bytes> размер тела задачи — целое число указывающее размер тела задачи, не включая граничные символы "\r\n". Это значение должно быть меньше чем max-job-size (по умолчанию: 2**16).
  • <dаta> тело задачи — последовательность байтов длиной <bytes> указанной в строке команды.

После отправки строки команды и тела задачи, клиент должен ожидать один из возможных ответов:

  • INSERTED <id>\r\n - указывает на успешное добавление задачи.
    • <id> - целое число, идентификатор новой задачи
  • BURIED <id>\r\n - указывает на то, что серверу не хватило памяти при попытке разобрать структуру данных очереди приоритетов.
    • <id> - целое число, идентификатор новой задачи
  • EXPECTED_CRLF\r\n - тело задачи должно оканчиваться парой символов CR-LF, а именно, "\r\n". Эти два байта не учитываются в при расчете длины тела задачи в строке команды put.
  • JOB_TOO_BIG\r\n - клиент передает тело задачи больше чем max-job-size байт
  • DRAINING\r\n - означает, что сервер находится в режиме "drain mode" и больше не принимает новые задачи. Клиент должен попробовать подключиться к другому серверу или повторить подключение позже.

use

Команда «use» предназначена только для генераторов команд. Последующие команды «put» добавят задачу в канал, предусмотренный настоящей командой. Если не был дана команда «use», задачи будут добавлены в канал под названием «default».

use <tube>\r\n

  • <tube> - название канала, длиной не более 200 байт. Указывает какой канал станет текущим для использования. Если такого канала нет, то он будет создан.

Возможен только один вариант ответа:

  • USING <tube>\r\n - указывает имя используемого канала
    • <tube> - Имя канала, который стал текущим

Команды исполнителей задач

Клиент, который хочет получить задачу из очереди должен использовать команды «reserve», «delete», «release» и «bury» (прим переводчика: если точнее, то это набор команд исполнителя для работы с очередью в канале).

reserve, reserve-with-timeout

Первая команда исполнителя «reserve», выглядит так:

reserve\r\n

Альтернативно можно указать тайм-аут следующим образом:

reserve-with-timeout <seconds>\r\n

Команды вернут вновь зарезервированную задачу. Если не будет доступных для резервирования задач, beanstalkd будет ожидать возможности послать ответ, до тех пор пока это не станет возможным. После того, как задача будет зарезервирована за для клиента, у клиента есть строго ограниченное время (TTR) для выполнения задачи. При наступлении тайм-аута задачи, сервер будет поставить работу обратно в очередь готовности. И TTR и фактическое время выполнения можно найти в статистике по команде stats-job.

Если более одной задачи имеют статус ready, beanstalkd выберет одну из них с наименьшим значением приоритета. В рамках одного приоритета, будет выбрана та задача, которая была получена первой.

Тайм-аут со значением 0 заставит сервер немедленно возвращать либо ответ или TIMED_OUT . Положительное значение тайм-аута будет задавать время, в течении которого запросы «reserve» будет блокированы пока задача снова не станет доступной.

Всё время TTR зарезервированной задачи, вплоть до последней секунды сервер будет находится в безопасном режиме, при котором исполнитель гарантированно не может получить другую задачу. Если исполнитель дает команду «reserve» во время безопасного режима или безопасный режим наступает пока исполнитель ожидает ответ на команду «reserve», сервер может ответить следующим образом:

  • DEADLINE_SOON\r\n - дает исполнителю шанс дать команду «delete» или «release» для зарезервированной задачи, до того как сервер автоматически даст команду «release» для зарезервированной задачи.
  • TIMED_OUT\r\n - если был указан неотрицательный тайм-аут и тайм-аут превышен до момента, когда задача стала доступна, или если соединение клиента является полузакрытыми, сервер ответит TIMED_OUT

В противном случае, единственным ответом на эту команду является успешное резервирование задачи в виде текстовой строки, затем тела задачи:

  • RESERVED <id><bytes>\r\n - успешное резервирование задачи
    • <id> - имя канала, который стал текущим
    • <bytes> - целое число указывающее размер тела задачи, не включая граничные символы "\r\n".
  • <dаta>\r\n - тело успешно зарезервированной задачи — последовательность байтов длиной <bytes> указанной в строке команды. Это точная копия байтов, которые были изначально отправлены на сервер командой «put» в этой задаче.

delete

Команда «delete» удаляет задачу с сервера целиком. Эта команда, как правило, используется клиентом, когда задача успешно выполнена. Исполнитель может удалять задания, которые он зарезервировал, а так же задачи со статусом «ready», «delayed» или «buried». Команда «delete» выглядит следующим образом:

delete <id>\r\n

  • <id> - идентификатор задачи, которую следует удалить.

Исполнитель должен ожидать один из возможных вариантов ответа:

  • DELETED\r\n - сигнализирует об успешности операции
  • NOT_FOUND\r\n - если задача не существует, или была зарезервирована не этим исполнителем, была переведена в статус ready или buried (прим переводчика: неоднозначный, возможно неправильный перевод). Эта ситуация возможна в случае, когда тайм-аут для задачи наступил раньше, чем клиент дал команду «delete»

release

Команда «release» помещает зарезервированную задачу назад в очередь ready (и помечает её статус как «ready») для запуска любым исполнителем. Обычно это используется, когда выполнить задачу не удается из-за возникшей ошибки.

Формат команды:

release <id> <pri> <delay>\r\n

  • <id> идентификатор задачи, которую следует «реализовать».
  • <pri> новый приоритет для задачи.
  • <delay> целое число секунд ожилания, до того как задача переместится в очередь ready. В течение этой задержки задача будет иметь статус «delayed».

Исполнитель должен ожидать один из возможных вариантов ответа:

  • RELEASED\r\n - сигнализирует об успешности операции
  • BURIED\r\n - указывает на то, что серверу не хватило памяти при попытке разобрать структуру данных очереди приоритетов.
  • NOT_FOUND\r\n - если задача не существует или была зарезервирована не этим исполнителем

bury

Команда «bury» переводит задачу в статус «buried». Такие задачи помещаются в FIFO подобный список и не обрабатываются сервером до тех пор, пока исполнитель не даст команду «kick».

Формат команды:

bury <id> <pri>\r\n

  • <id> идентификатор задачи, которую следует «заморозить» (прим переводчика: в оригинальном тексте про команду release).
  • <pri> новый приоритет, назначенный задаче.

Возможны два варианта ответа:

  • BURIED\r\n - сигнализирует об успешности операции
  • NOT_FOUND\r\n - если задача не существует или была зарезервирована не этим исполнителем

touch

Команда "touch" позволяет исполнителю запросить больше времени на выполнение задачи. Это полезно для задач, которые потенциально выполняются долго, но вы продолжаете использовать преимущества TTR при выполнении затянувшейся задачи не зависшим исполнителем. Исполнитель может ппереодически говорить серверу что он по-прежнему жив и выполняет задачу (например исполнитель может так делать при поступлении команды DEADLINE_SOON). Команда откладывает автоматическое выполнение команды «release» зарезервированной задачи на TTR секунд с момента поступления команды.

Формат команды:

touch <id>\r\n

  • <id> идентификатор задачи, зарезервированной в текущем соединении.

Возможны два варианта ответа:

  • TOUCHED\r\n - сигнализирует об успешности операции
  • NOT_FOUND\r\n - если задача не существует или была зарезервирована не этим исполнителем

watch

Команда «watch» добавляет именованный канал в watch list текущего соединения. Команда «reserve» принимает задачи из любого канала в watch list. Для каждого нового соединения создаётся новый watch list, содержащий только один канал, называемый «default».

Формат команды:

watch <tube>\r\n

  • <tube> название канала, длиной не более 200 байт. Указывает какой канал будет добавлен в watch list. Если такого канала нет, то он будет создан.

Возможный ответ:

WATCHING <count>\r\n

  • <count> целое число каналов в текущем watch list.

Другие команды

Группа команд peek

Группа команд «peek» позволяют клиенту инспектировать задачи в системе. Всего 4 варианта. Все команды, кроме первой, работают только для текущего именованного канала.

  • peek <id>\r\n — возвращает задачу по <id>.
  • peek-ready\r\n — возвращает следующую задачу со статусом ready.
  • peek-delayed\r\n — возвращает следующую задачу со статусом delayed с наименьшим временем задержки.
  • peek-buried\r\n - возвращает следующую в списке задачу со статусом buried.

Возможны два варианта ответа:

  • NOT_FOUND\r\n — если запрашиваемая задача не создана или нет задачи с запрашиваемым статусом.
  • FOUND <id> <bytes>\r\n\r\n - случае успеха, строка ответа сопровождается строкой данных
    • <id> идентификатор задачи.
    • <bytes> целое число указывающее размер тела задачи, не включая граничные символы "\r\n".
    • тело задачи — последовательность байтов длиной <bytes> указанной в строке ответа.

kick

Команда «kick» применима только для текущего именованного канала. Она переносит задачи в очередь ready. Если есть хоть одна задача со статусом «buried», команда применится только к этим задачам. В противном случае, будут перемещены только задачи со статусом «delayed».

Формат команды:

kick <bound>\r\n

  • <bound> целое число — количество задач для перемещения. Сервер переместит не более чем <bound> задач.

Возможный ответ:

KICKED <count>\r\n

  • <count> целое число, указывающее число действительно перенесенных задач.

kick-job

Команда «kick-job» вариант команды kick с указанием конкретной задачи по её идентификатору. Если указываемая по id задача создана и имеет статус buried или delayed, она будет перемещена в очередь ready того же канала, в котором она находилась.

Формат команды:

kick-job <id>\r\n

  • <id> идентификатор задачи для перемещения.

Возможен один из вариантов ответа:

  • KICKED\r\n — если команда выполнена успешно.
  • NOT_FOUND\r\n — если задачи не существует или у неё не подходящий статус. Это может быть так же внутренней ошибкой.

stats-job

Команда stats-job предоставляет статистику об указанной задаче, если указанная задача существует.

Формат команды:

stats-job <id>\r\n

  • <id> идентификатор задачи

Возможен один из вариантов ответа:

  • NOT_FOUND\r\n - если задачи не существует.
  • OK <bytes>\r\n\r\n"
    • <bytes> размер последующей секции данных в байтах.
    • последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл со статистикой, представленной в виде словаря (прим переводчика: строки в виде <ключ>:<значение>).

Статистика содержит следующие параметры:

  • id - идентификатор задачи;
  • tube - название канала, в котором находится задача;
  • state - статус: «ready», «delayed», «reserved» или «buried»
  • pri - значение приоритета установленного командой «put», «release» или «bury».
  • age - время в секундах с момента создания задачи командой «put».
  • time-left - количество секунд до момента когда сервер переместит эту задачу в очередь ready. Это число имеет смысл только если задача имеет статус reserved или delayed. Если задача зарезервирована и время истекло раньше изменения статуса, то считается что у задачи тайм-аут.
  • file - количество более ранних файлов binlog, содержащих эту задачу. Если при запуске сервера не была указана опция -b, число будет 0.
  • reserves - количество раз, которое эта задача получала статус reserved.
  • timeouts - количество раз, которое эта задача получала тайм-аут, находясь в резерве.
  • releases - количество раз, которое эта задача получала статус released от исполнителя, находясь в резерве.
  • buries - количество раз, которое эта задача получала статус buried.
  • kicks - количество раз, которое эта задача получала команду kick.

stats-tube

Команда stats-tube предоставляет статистику об указанном канале, если такой существует.

Формат команды:

stats-tube <tube>\r\n

  • <tube> - название канала, длиной не более 200 байт. Статистика будет предоставлена для этого канала.

Возможен один из вариантов ответа:

  • NOT_FOUND\r\n — если канала не существует.
  • OK <bytes>\r\n\r\n
    • <bytes> - размер последующей секции данных в байтах.
    • - последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл со статистикой, представленной в виде словаря (прим переводчика: строки в виде <ключ>:<значение>).

Статистика содержит следующие параметры:

  • name - имя канала.
  • current-jobs-urgent - количество задач со статусом ready и приоритетом < 1024 в этом канале.
  • current-jobs-ready - количество задач в очереди ready в этом канале.
  • current-jobs-reserved - количество зарезервированных исполнителями задач в канале.
  • current-jobs-delayed - количество задач со статусом delayed в этом канале.
  • current-jobs-buried - количество задач со статусом buried в этом канале.
  • total-jobs - общее количество задач созданных в этом канале текущим процессом beanstalkd.
  • current-using - количество открытых соединений использующих этот канал в настоящий момент.
  • current-waiting - количество открытых соединений, которые дали команду reserve, наблюдая за каналом, но ещё не получили ответ.
  • current-watching - количество открытых соединений, которые наблюдают за каналом.
  • pause - количество секунд, которое канал был приостановлен.
  • cmd-delete - общее количество раз, которое была выполнена команда delete в этом канале.
  • cmd-pause-tube - общее количество раз, которое бал приостановлен канал командой pause-tube.
  • pause-time-left - количество секунд до запуска канала (прим переводчика: не понял смысла этой фразы «is the number of seconds until the tube is un-paused.»).

stats

Команда stats предоставляет статистику о системе в целом.

stats\r\n

Ответ сервера:

OK <bytes>\r\n\r\n

  • <bytes> размер последующей секции данных в байтах.
  • последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл со статистикой, представленной в виде словаря (прим переводчика: строки в виде <ключ>:<значение>).

Параметры, описываемые как "общее количество", сбрасываются при запуске процесса beanstalkd. При указании опции -b, они не сохраняются на диске.

  • current-jobs-urgent - количество задач в очереди (состоянии) ready с приоритетом менее 1024.
  • current-jobs-ready - количество задач в очереди (состоянии) ready.
  • current-jobs-reserved - количество задач зарезервированных всеми исполнителями.
  • current-jobs-delayed - количество задач со сотатусом «delayed».
  • current-jobs-buried - количество задач со сотатусом «buried».
  • cmd-put - общее количество команд «put».
  • cmd-peek - общее количество команд «peek».
  • cmd-peek-ready - общее количество команд «peek-ready».
  • cmd-peek-delayed - общее количество команд «peek-delayed».
  • cmd-peek-buried - общее количество команд «peek-buried».
  • cmd-reserve - общее количество команд «reserve».
  • cmd-use - общее количество команд «use».
  • cmd-watch - общее количество команд «watch».
  • cmd-ignore - общее количество команд «ignore».
  • cmd-delete - общее количество команд «delete».
  • cmd-release - общее количество команд «release».
  • cmd-bury - общее количество команд «bury».
  • cmd-kick - общее количество команд «kick».
  • cmd-stats - общее количество команд «stats».
  • cmd-stats-job - общее количество команд «stats-job».
  • cmd-stats-tube - общее количество команд «stats-tube».
  • cmd-list-tubes - общее количество команд «list-tubes».
  • cmd-list-tube-used - общее количество команд «list-tube-used».
  • cmd-list-tubes-watched - общее количество команд «list-tubes-watched».
  • cmd-pause-tube - общее количество команд «pause-tube».
  • job-timeouts - общее количество раз, которое задача была в тайм-ауте.(прим переводчика: не точное описание, речь должна идти обо всех задачах, а не об одной)
  • total-jobs - общее количество созданных задач.
  • max-job-size - максимальное число байт в задаче.
  • current-tubes - число существующих в настоящий момент каналов.
  • current-connections - число открытых в настоящее время соединений.
  • current-producers - число открытых соединений, через которое была дана по меньшей мере одна команда «put».
  • current-workers - число открытых соединений, через которое была дана по меньшей мере одна команда «reserve».
  • current-waiting - число открытых соединений, через которое была дана команда «reserve», но еще не получен ответ.
  • total-connections - общее количество соединений (прим переводчика: не понятно, о каких соединениях идет речь, об открытых в настоящий момент или с учетом уже закрытых соединений)
  • pid - pid процесса сервера.
  • version - версия сервера.
  • rusage-utime - общее время user CPU процесса в секундах и микросекундах.
  • rusage-stime- общее время system CPU процесса в секундах и микросекундах.
  • uptime - количество секунд с момента запуска процесса.
  • binlog-oldest-index - индекс старейшего файла binlog, необходимого для хранения текущих задач.
  • binlog-current-index -индекс текущего файла binlog, в который производится запись. Если binlog не активен, значение бедт равно 0.
  • binlog-max-size - максимальный размер файла binlog в байтах, после которого будет создан новый.
  • binlog-records-written - общее количество записей сделанных в binlog.
  • binlog-records-migrated - общее количество записей, записанных как части архиров (прим переводчика: не понял смысл).
  • id - случайный текстовый идентификатор для конкретного процесса сервера, генерируется при старте beanstalkd.
  • hostname - hostname машины, выдаваемый командой uname.

list-tubes

Команда list-tubes возвращает список всех существующих каналов.

Формат команды:

list-tubes\r\n

Ответ сервера: OK <bytes>\r\n\r\n

  • <bytes> - размер последующей секции данных в байтах.
  • - последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл содержащий названия всех каналов в виде списка строк.

list-tube-used

Команда list-tube-used возвращает канал, используемый клиентом в настоящее время.

Формат команды:

list-tube-used\r\n

Ответ сервера:

USING <tube>\r\n

  • <tube> название используемого конала.

list-tubes-watched

Команда list-tubes-watchedвозвращает список каналов на которые подписан исполнитель в настоящий момент.

Формат команды:

list-tubes-watched\r\n

Ответ сервера:

OK <bytes>\r\n\r\n

  • <bytes> - размер последующей секции данных в байтах.
  • - последовательность байт длиной <bytes> указанной в предыдущей строке. Это YAML файл содержащий названия всех каналов на которые есть подписка в виде списка строк.

quit

Команда quit просто закрывает соединение.

Формат команды:

quit\r\n

pause-tube

Команда pause-tube позволяет приостановить резервирование новых задач на определенное время.

Формат команды:

pause-tube <tube-name> <delay>\r\n

  • <tube> - название приостанавливаемого канала
  • <delay> - целое число секунд до момента восстановления возможности резервирования задач из очереди.

Возможны два варианта ответа:

  • PAUSED\r\n - сигнализирует об успешном выполнении.
  • NOT_FOUND\r\n - если такого канала не существует.

ignore

Команда «ignore» только для исполнителей. Она удаляет именованый канал из watch list для текущего соединения.

Формат команды:

ignore <tube>\r\n

Возможен один из вариантов ответа:

  • WATCHING <count>\r\n сигнализирует об успешности операции
    • <count> целое число каналов в текущем watch list.
  • NOT_IGNORED\r\n" если клиент пытается игнорировать единственный канал в его watch list.