Это команда cr_restart, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
cr_restart - перезапускает процесс, группу процессов или сеанс из файла контрольной точки.
СИНТАКСИС
cr_restart [кредита] [файл контрольной_точки]
ОПИСАНИЕ
cr_restart перезапускает процесс (или набор процессов) из файла контрольной точки, созданного с помощью
cr_checkpoint(1).
У перезапущенного процесса есть все атрибуты, которые у них были во время контрольной точки, включая
идентификатор процесса. Если какие-либо необходимые ресурсы не могут быть получены для процессов в контрольной точке
file (например, используется pid), cr_restart завершится ошибкой. Если группа процессов или сеанс
перезапущен, все родительские / дочерние отношения, каналы и т. д. между процессами в
чекпоинт будет правильно восстановлен.
Если же линия индикатора STDIN/стандартный вывод/STDERR любого перезапущенного процесса был направлен на терминал в
время контрольной точки, он перенаправляется на управляющий терминал программы cr_restart.
Текущий рабочий каталог перезапущенного процесса такой же, как когда он был
с контрольной точкой, независимо от того, где находится файл контекста или где cr_restart
вызван.
Процесс cr_restart становится родительским для «старшего» процесса в любом перезапущенном задании.
Это означает, что Getppid(2) может возвращать другое значение старшему процессу после
рестарт. Когда старший перезапущенный процесс завершается (или умирает от сигнала), cr_restart будет
выйти с тем же кодом ошибки (или убить себя тем же сигналом), поэтому в значительной степени
невидимый (необходимо оставить cr_restart между вашей оболочкой и перезапуском
процессы, однако, поскольку большинство оболочек Unix довольно запутываются, если наблюдают за своими дочерними
изменение идентификаторов процессов).
Сигналы
По умолчанию перезапущенные процессы запускаются после завершения перезапуска. В качестве альтернативы,
вы можете указать, что они должны быть остановлены (через --останавливаться) или прекращено / прервано / убито (через
--срок, - отменитьили --убийство). Это делается путем отправки соответствующего сигнала каждому
процесс, который является частью перезапуска. Если процессы были остановлены в момент, когда
был запрошен контрольно-пропускной пункт, затем --продолжение может использоваться для отправки SIGCONT всем процессам после
перезапуск завершен.
Ошибка обращение
По умолчанию cr_restart будет заблокирован до завершения перезапущенного процесса и выйдет
с тем же значением выхода, что и перезапущенный процесс (даже если перезапущенный процесс умер с
фатальный сигнал). Это может сделать почти невозможным определить, есть ли ненулевой выход из
cr_restart возникает из-за сбоя перезапуска или является кодом выхода правильно перезапущенного
процесс. Простой подход поиска «Не удалось перезапустить:» ненадежен.
Следовательно --запускать на-* семейство флагов доступно для предоставления альтернативы (или
дополнительная) обработка ошибок. Когда любой из --запускать на-* флаги переданы, хук
установлен для данной категории сбоя (или успеха), как определено ниже. Когда ошибка
(или успех) обнаружен и соответствующий хук установлен, хук запускается через
система(3) функция. Если код выхода хука ненулевой, cr_restart возвращает
это значение, подавляя любое сообщение об ошибке, которое в противном случае было бы сгенерировано. Если нет крючка
установлен, ловушка представляет собой пустую строку, или, если ловушка возвращает нулевой код выхода,
затем печатается пояснительное сообщение об ошибке и код выхода, связанный со значением errno
в момент отказа возвращается.
--run-on-success = 'cmd'
Запускает данную команду, как только известно, что перезапущенные процессы
Бег. Если возвращаемое значение cmd не равно нулю, это также приводит к cr_restart
завершение без ожидания завершения перезапущенного процесса (ов).
--run-on-fail-args = 'cmd'
Выполняет заданную команду, если аргументы недопустимы. Это включает случай в
который данный файл контекста отсутствует или нечитаем.
--run-on-fail-temp = 'cmd'
Выполняет данную команду, если обнаружен «временный» сбой. Это включает
в случае использования необходимого pid.
--run-on-fail-perm = 'cmd'
Выполняет данную команду, если обнаружен «постоянный» сбой. Это чаще всего
из-за поврежденного файла контекста.
--run-on-fail-env = 'cmd'
Выполняет данную команду, если обнаружен сбой "окружающей среды". Это включает
когда файлы, необходимые для перезапуска, отсутствуют или недоступны.
--run-on-failure = 'cmd'
Это устанавливает данную команду для всех --run-on-fail- * крючки.
Файл переселение
По умолчанию файлы и каталоги сохраняются `по ссылке ', сохраняя их полный путь в
файл контекста. Сюда входят файлы, связанные с процессом через открытый(2) и / или
ММАП(2) и каталоги, связанные через опендир(3) или как текущий рабочий каталог.
использование - переместить oldpath = новый путь позволяет переназначать такие пути на новые места в
время перезапуска.
При разборе - переместить аргумент последовательности `\ = 'и` \\' интерпретируются как `= '
и `\ ', соответственно, чтобы разрешить пути, содержащие символ` ='. `\ '
символ не является особенным ни в каком другом контексте. (Обратите внимание, что командные оболочки также имеют
особая обработка `\ ', поэтому вам могут потребоваться кавычки или дополнительные символы` \' для
передайте аргумент, который вы намереваетесь.)
Когда ассоциации файлов или каталогов восстанавливаются, старый путь сравнивается с сохраненным
полный путь к каждому файлу или каталогу. Если он соответствует ведущим компонентам пути,
совпадающая часть заменяется значением новый путь, Обратите внимание, что старый путь должен соответствовать весь
компоненты пути, и только ведущий компоненты. Поэтому старый путь of / tmp / foo будет соответствовать
/ tmp / foo or / tmp / foo / 1, но будет соответствовать / tmp / fooz (не соответствует полному компоненту
ерунда) или / var / tmp / foo (не соответствует ведущему компоненту / вар.)
Важно знать, что сохраненные полные пути в файле контекста являются каноническими.
пути. Следовательно старый путь предоставленный вами путь также должен быть каноническим, хотя
новый путь не должно быть. Например, если / Tmp является символической ссылкой на / Вар / TMPтогда, если
ваше приложение открывает файл / tmp / work / 1234 путь, хранящийся в файле контекста, будет
/ var / tmp / work / 1234. Таким образом,
- переместить / tmp / работа=/ tmp / play
бы работать по желанию, но одно из следующих действий:
- переместить / var / tmp / работа=/ tmp / play
- переместить / var / tmp / работа=/ var / tmp / play
Если же линия индикатора - переместить параметр передается несколько раз, все применяются к восстановленному файлу или
ассоциации каталогов, но к любому заданному пути применяется только первое совпадение. В настоящее время
поддерживается максимум 16 перемещений.
PID и Связанный идентификаторы
По умолчанию процессы перезапускаются с тем же идентификатором pid и thread (возвращаемым
Getpid(2), и Gettid(2) соответственно). Это значение по умолчанию гарантирует, что процессы и потоки
которые сигнализируют друг другу, а процессы, ожидающие потомков, продолжат функционировать.
правильно. Однако это предотвращает перезапуск одновременных экземпляров одного и того же контекста.
.
По умолчанию группа процессов и сеанс (как возвращено получитьpgrp(2), и Getid(2)) являются
установлен на те из программы cr_restart. Это гарантирует, что управление заданиями через
лидер сеанса (обычно оболочка входа в систему) будет продолжать работать правильно. Тем не мение,
это мешает любому управлению заданиями или сигнализации группы процессов, которая может иметь место
среди перезапущенных процессов.
Существуют параметры для индивидуального контроля того, являются ли pid, группа процессов и сеанс.
восстановлены до сохраненных значений или принимают новые значения (группа процессов и сеанс
унаследованный от cr_restart и свежий pid, полученный от вилка(2)). Нет отдельного
для идентификаторов потоков, так как они всегда должны следовать той же политике, что и pid. В
Ниже описывается каждый вариант, а также излагаются некоторые риски, связанные с
нестандартные:
--restore-pid
(по умолчанию) Это приводит к восстановлению идентификаторов pid и thread до их сохраненных значений.
--no-restore-pid
Это заставляет идентификаторы pid и thread принимать новые значения. Любой многопоточный процесс
имеет возможность использовать такие функции, как убить(2) который не будет вести себя как
желательно, если идентификаторы потоков не восстанавливаются. Точно так же любой многопроцессорный
приложение может использовать убивать(2) или ожидание(2) среди прочего, которые требуют
восстановил пиды для корректной работы. Также стоит отметить, что многие версии
glibc кэширует результат getpid (), что может привести к вызовам после восстановления
возвращает исходное значение, даже если pid был изменен перезапуском.
--restore-pgid
Это приводит к восстановлению идентификаторов групп процессов до их сохраненных значений. Это
требуется для правильной работы любого многопроцессорного приложения, которое может выполнять
signal или wait для групп процессов (например, путем передачи отрицательного значения pid в
убивать(2) или ожидание(2), среди прочего), или который использует группы процессов для задания POSIX.
контрольные операции. Это НЕ поведение по умолчанию, потому что восстановление процесса
идентификаторы групп предотвратят управление заданиями со стороны запрашивающей оболочки (или другого управляющего
обработать).
--no-restore-pgid
(по умолчанию) Это заставляет перезапущенные процессы присоединяться к группе процессов
cr_restart процесс.
--restore-сид
Это приводит к восстановлению идентификаторов сеансов до их сохраненных значений. Это
требуется, например, для систем, которые выполняют пакетный учет на основе
идентификатор сеанса.
--нет-восстановления-сид
(по умолчанию) Это заставляет перезапущенные процессы присоединяться к сеансу cr_restart
процесса.
Обратите внимание, что использование --restore-pgid or --restore-сид выдаст ошибку в случае, если
в системе используются необходимые идентификаторы. Это включает возможность того, что
они конфликтуют с группой процессов или сеансом cr_restart.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
Общие опции:
- ?, --Помогите
распечатайте это справочное сообщение.
-v, --версия
информация о версии для печати.
-q, --тихий
подавлять сообщения об ошибках / предупреждениях в stderr.
Возможности для источник расположение of контрольно-пропускной пункт:
-d, --дир DIR
контрольная точка читается из каталога DIR, с одним файлом context.ID для каждого процесса
(не реализовано).
-f, --файл ФАЙЛОВ
чекпоинт читается из ФАЙЛА.
-F, --fd FD
контрольная точка читается из дескриптора открытого файла.
Опции в этой группе исключают друг друга. Если из этого не дается никаких вариантов
группа по умолчанию принимает последний аргумент как ФАЙЛ.
Возможности для сигнал послать в процесс (ы) после рестарт:
--запустить сигнал не отправлен: продолжить выполнение (по умолчанию).
-S, --сигнал NUM
сигнал NUM отправлен всем процессам / потокам.
--останавливаться SIGSTOP отправлен всем процессам.
--срок SIGTERM отправлен всем процессам.
- отменить
SIGABRT отправлен всем процессам.
--убийство SIGKILL отправлен всем процессам.
--продолжение SIGCONT отправлен всем процессам.
Опции в этой группе исключают друг друга. Если дано более одного, то только
последний будет удостоен чести.
Возможности для контрольно-пропускные пункты of перезапущен процесс (ы):
--omit-возможно
используйте эвристику, чтобы исключить cr_restart из контрольных точек (по умолчанию)
--omit-всегда
всегда опускать cr_restart из контрольных точек
--omit-никогда
никогда не пропускайте cr_restart из контрольных точек
Возможности для заместитель ошибка умение обращаться:
--run-on-success ='cmd'
запустить данную команду в случае успеха
--run-on-fail-args ='cmd'
запустить данную команду недопустимые аргументы
--run-on-fail-temp ='cmd'
запустить данную команду при «временном» сбое
--run-on-fail-env ='cmd'
запустить данную команду при сбое 'окружающей среды'
--run-on-fail-perm ='cmd'
запустить данную команду при «постоянном» отказе
--run-on-failure ='cmd'
запускать данную команду при любом сбое
Возможности для переезд:
- переместить OLDPATH = NEWPATH
сопоставить пути к файлам и каталогам с новыми местоположениями путем замены префикса.
Параметры восстановления идентификаторов pid, группы процессов и сеанса
--restore-pid
восстановить pid до сохраненных значений (по умолчанию).
--no-restore-pid
перезапустите с новыми pid.
--restore-pgid
восстановить pgid до сохраненных значений.
--no-restore-pgid
перезапустите с новыми pgid (по умолчанию).
--restore-сид
восстановить sid до сохраненных значений.
--нет-восстановления-сид
перезапустите с новыми идентификаторами (по умолчанию).
Параметры в каждой паре восстановления / отказа являются взаимоисключающими. Если оба даны
тогда только последнее будет почтено.
Возможности для ядро журнал Сообщения (дефолт is --kmsg-ошибка):
--kmsg-нет
не сообщать о сообщениях ядра.
--kmsg-ошибка
при неудачном перезапуске сообщать на stderr о любых сообщениях ядра, связанных с
запрос на перезапуск.
--kmsg-предупреждение
сообщать на stderr о любых сообщениях ядра, связанных с запросом перезапуска,
независимо от успеха или неудачи. Сообщения, генерируемые при отсутствии сбоя,
считается предупреждением.
Опции в этой группе исключают друг друга. Если дано более одного, то только
последний будет удостоен чести. Обратите внимание, что --тихий подавляет весь вывод stderr,
включая эти сообщения.
АВТОРЫ
Джейсон Дуэлл, Пол Харгроув и Эрик Роман, Национальная лаборатория Лоуренса Беркли.
СОСТАВЛЕНИЕ ОТЧЕТОВ ОШИБКИ
Отчеты об ошибках могут быть размещены в Интернете по адресу http://mantis.lbl.gov/bugzilla.
Используйте cr_restart онлайн с помощью сервисов onworks.net