Перемістити базовий сценарій для початкового запуску на системний


17

Я щойно оновив сервер з Ubuntu 14.10 до 15.04, і пара послуг, які я запускаю за допомогою спеціальних сценаріїв для запуску, більше не працює.

Моє розуміння полягає в тому, що мені потрібно переписати їх як systemdсервіси, але думка про вивчення всієї systemdсистеми за ніч трохи нелегка.

Скрипт на початку просто запускається autosshпри запуску, і у мене є кілька інших подібних сценаріїв, які запускають тривалі процеси.

#/etc/init/autossh.conf

description "Maintain a permanent SSH tunnel to <other_server>"

start on started mountall
stop on shutdown

exec autossh -N other_server

Як я можу переписати це як systemdпослугу?


3
Система Systemd для користувачів Upstart є хорошою відправною точкою.
муру

Відповіді:


13

перше правило для переходу на systemd

На даний момент, у 2015 році, швидше за все, хтось це вже зробив.

systemd існує вже кілька років. І ціла котеджна індустрія людей писала файли одиниць і публікувала їх. GitHub, зокрема, залучає сховища колекцій сервісних одиниць.

Справді, просто пошук у WWW autossh.service(як фраза) виявляється:

блок-шаблон

Це говорило, як я вже вказував у кількох місцях на StackExchange, лише такий процес міграції не є механістичним процесом, а іноді просто робототехнічним переведенням із того, що є, до файлу одиниць, робить щось неправильно або, принаймні, погано. У цьому випадку autosshпозитивно задихається оброблятись із блоком шаблону , що він інстанціюється у фактичні сервісні одиниці, параметризовані цільовим іменем. Отже /etc/systemd/system/autossh@.service, маємо:

[Одиниця]
Опис = послуга AutoSSH для зворотного тунелю від% i 
Після = network.target

[Сервіс]
Користувач = autossh
EnvironmentFile = / etc /% p /% i.conf
ExecStart = / usr / bin / autossh -M 0 -q -N $ SSH_USER @% i $ SSH_OPTIONS

[Встановити]
WantedBy = багатокористувач

Створіть файл, названий за /etc/autossh/other_server.example.confдопомогою, мінімально:

SSH_USER = Джо

Потім застосовуються всі звичайні елементи керування:

  • systemctl enable autossh@other_server.example - Включити автоматичний запуск примірника під час завантаження.
  • systemctl start autossh@other_server.example - Вручну запустити цей екземпляр негайно.
  • systemctl status autossh@other_server.example - Дивіться його статус.

І так, перше правило навіть стосується цього. Шукаючи, можна виявити, що мене побило Грець Фреймайер у OpenSUSE, лише за два тижні.


Дякую - я придумав щось подібне до цього, але мені не було відомо про ідею "одиниць шаблону"
trvrm

@JdeBP У мене теж є аналогічне питання тут . Хотів подивитися, чи можете ви мені допомогти.
користувач1950349
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.