Преобразовать SysV init run level S в Systemd *.target (Debian)

Встроенная -команда/утилита/оболочка jobsперечисляет только задания, связанные с текущим сеансом оболочки. Спецификация POSIX определяет это поведение :

.

DESCRIPTION

The jobs utility shall display the status of jobs that were started in the current shell environment; see Shell Execution Environment.

Когда исходный сеанс прерывается и вы -подключаетесь к системе, вы оказываетесь в другом сеансе (или в другой «среде выполнения оболочки», чтобы избежать путаницы ). Внутри этого нового сеанса оболочка не будет отслеживать задания, запущенные в предыдущем сеансе.

Поскольку вы уже использовали команду nohupвместе с оператором &для фонового выполнения команды, вы все равно должны увидеть ее выполнение в системе. Запуск ps -ef | grep rcloneдолжен показать вам запущенный процесс.

Соответствующий контроль качества:Почему команда jobs не работает в сценарии оболочки? , команда «jobs» не может видеть остановленные задания .

1
31.03.2020, 17:46
1 ответ

Sне имеет прямого соответствия в systemd. Программа systemd-sysv-generatorне обрабатывает такие скрипты ван Смуренбурга rc.

В Debian использовалась исправленная версия этой программы, которая заключала в себе rcсценарий, который использовал Sвнутри сервисного модуля без зависимостей по умолчанию, и который требовался -sysinit.target. Это было несовершенно, но тогда вся операция systemd-sysv-generatorнесовершенна, потому что не существует единого -размера, -подходящего -для всех механистических способов перевода шрифтов Ван Смуренбурга rc.

Разработчики Debian systemd отказались от патча еще в июле 2016 года, когда они считали, что все скрипты van Smoorenburg rcв Debian, которые использовали S, были заменены соответствующими служебными модулями. Ваш, кажется, выращен в домашних условиях.

В этом случае лучше вообще забыть про уровень Srun -.Мое обоснованное предположение, основанное не более чем на описании, заключается в том, что на самом деле вам следует делать сервисную единицу, которая является:

DefaultDependencies=no
After=local-fs.target
Before=network-pre.target
Wants=network-pre.target
и это Wanted-Byчто-то подходящее, возможно basic.target.

В зависимости от того, что на самом деле делает ваш сервис, заказ после local-fs.targetвполне может оказаться излишним. Но это то, что только вы можете определить.

Дополнительная литература

0
19.03.2021, 02:31

Теги

Похожие вопросы