TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
NetworkAdmin.ru

24 Aug, 11:55

Telegram'da ochish Ulashish Shikoyat qilish

❤️ systemctl edit: как правильно переопределять юниты без правки vendor-файлов

В systemd часто нужно чуть-чуть изменить стандартный unit, который приехал из пакета. Например:

• добавить автоматический рестарт;
• изменить переменные окружения;
• переопределить ExecStart;
• добавить лимиты;
• поменять рабочий каталог;
• настроить зависимости.

Плохая идея - править vendor-unit напрямую где-нибудь в:


/lib/systemd/system/

или:


/usr/lib/systemd/system/

После обновления пакета такие изменения могут потеряться или конфликтовать с новой версией юнита.Правильнее использовать override. Покажу на примере nginx.service.

1️⃣ Сначала смотрим полный unit:


systemctl cat nginx.service

Это очень удобная команда. Она показывает не только содержимое unit-файла, но и путь, откуда он загружен. Если для сервиса уже есть override-файлы, они тоже будут показаны в этом же выводе.

2️⃣ Теперь добавим автоперезапуск nginx при падении:


systemctl edit nginx.service

3️⃣ Откроется редактор. Добавляем:


[Service]
Restart=always
RestartSec=5s

4️⃣ Сохраняем и выходим. systemd сам создаст drop-in файл примерно здесь:


/etc/systemd/system/nginx.service.d/override.conf

5️⃣ Проверяем результат:


systemctl cat nginx.service

Теперь в выводе будет видно и исходный unit, и наш override.

6️⃣ После изменения обычно стоит выполнить:


systemctl daemon-reload
systemctl restart nginx.service

И проверить:


systemctl status nginx.service

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


[Service]
Restart=always
RestartSec=5s

Но если нужно переопределить параметры, которые могут иметь несколько значений, их часто нужно сначала очистить.

▪️ Классический пример - ExecStart. Если в основном unit было:


ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'

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


[Service]
ExecStart=
ExecStart=/usr/sbin/nginx -g 'daemon off; master_process off;'

Первая строка очищает старое значение. Вторая задает новое. Если просто добавить новый ExecStart, systemd может выдать ошибку или оставить некорректную конфигурацию. То же часто касается параметров семейства:


ExecStart=
ExecStartPre=
ExecStartPost=
ExecReload=
ExecStop=

▪️ Аналогичная логика может понадобиться и для некоторых списочных настроек. Если override "почему-то не работает", полезно проверить итоговую конфигурацию:


systemctl cat nginx.service

И затем:


systemd-analyze verify /etc/systemd/system/nginx.service.d/override.conf

Еще полезная команда:


systemctl revert nginx.service

Она удалит локальные override и вернет unit к vendor-состоянию.

#linux #systemd

🧑‍💻 NetworkAdmin

337 0 23 6
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot