Thank you for reading this post, don't forget to subscribe!
Измените конфигурацию службы systemd с помощью редактируемых файлов drop-in, что будет полезно например для автоматизации при использовании ansible или любой другой утилиты инициализации, управления конфигурацией и развертывания.
Я буду использовать службу redis-server в качестве примера для изменения ограничений службы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ sudo systemctl status redis ● redis-server.service - Advanced key-value store Loaded: loaded (/etc/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-09-17 17:24:12 GMT; 28min ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 4045 (redis-server) Tasks: 4 (limit: 393) Memory: 2.1M CGroup: /system.slice/redis-server.service └─4045 /usr/bin/redis-server 127.0.0.1:6379 Sep 17 17:24:11 buster systemd[1]: Starting Advanced key-value store… Sep 17 17:24:12 buster systemd[1]: Started Advanced key-value store. |
Отобразим сервисные ограничения по умолчанию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
$ sudo systemctl show redis-server | grep ^Limit LimitCPU=infinity LimitCPUSoft=infinity LimitFSIZE=infinity LimitFSIZESoft=infinity LimitDATA=infinity LimitDATASoft=infinity LimitSTACK=infinity LimitSTACKSoft=8388608 <strong>LimitCORE=infinity LimitCORESoft=0</strong> LimitRSS=infinity LimitRSSSoft=infinity <strong>LimitNOFILE=65535 LimitNOFILESoft=65535</strong> LimitAS=infinity LimitASSoft=infinity LimitNPROC=1312 LimitNPROCSoft=1312 LimitMEMLOCK=65536 LimitMEMLOCKSoft=65536 LimitLOCKS=infinity LimitLOCKSSoft=infinity LimitSIGPENDING=1312 LimitSIGPENDINGSoft=1312 LimitMSGQUEUE=819200 LimitMSGQUEUESoft=819200 LimitNICE=0 LimitNICESoft=0 LimitRTPRIO=0 LimitRTPRIOSoft=0 LimitRTTIME=infinity LimitRTTIMESoft=infinity |
Создайте каталог службы с суффиксом .d/ , который будет содержать раскрывающиеся файлы конфигурации с суффиксом .conf, используемым для изменения настроек по умолчанию.
1 |
$ sudo mkdir /etc/systemd/system/redis-server.service.d |
Определим лимит NOFILE.
1 2 3 4 |
$ cat <<EOF | sudo tee /etc/systemd/system/redis-server.service.d/limit_nofile.conf [Service] LimitNOFILE=98304 EOF |
Определим CORE литит
1 2 3 4 |
$ cat <<EOF | sudo tee /etc/systemd/system/redis-server.service.d/limit_core.conf [Service] LimitCORE=0 EOF |
Перезагрузите конфигурацию менеджера systemd.
1 |
$ sudo systemctl daemon-reload |
Покажем обновленные лимиты службы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
$ sudo systemctl show redis-server | grep ^Limit LimitCPU=infinity LimitCPUSoft=infinity LimitFSIZE=infinity LimitFSIZESoft=infinity LimitDATA=infinity LimitDATASoft=infinity LimitSTACK=infinity LimitSTACKSoft=8388608 <strong>LimitCORE=0 LimitCORESoft=0</strong> LimitRSS=infinity LimitRSSSoft=infinity <strong>LimitNOFILE=98304 LimitNOFILESoft=98304</strong> LimitAS=infinity LimitASSoft=infinity LimitNPROC=1312 LimitNPROCSoft=1312 LimitMEMLOCK=65536 LimitMEMLOCKSoft=65536 LimitLOCKS=infinity LimitLOCKSSoft=infinity LimitSIGPENDING=1312 LimitSIGPENDINGSoft=1312 LimitMSGQUEUE=819200 LimitMSGQUEUESoft=819200 LimitNICE=0 LimitNICESoft=0 LimitRTPRIO=0 LimitRTPRIOSoft=0 LimitRTTIME=infinity LimitRTTIMESoft=infinity |
Показать файлы drop-in:
1 2 3 4 5 |
$ systemd-delta --type extended /etc/systemd/system/ [EXTENDED] /usr/lib/systemd/system/redis-server.service → /etc/systemd/system/redis-server.service.d/limit_core.conf [EXTENDED] /usr/lib/systemd/system/redis-server.service → /etc/systemd/system/redis-server.service.d/limit_nofile.conf 2 overridden configuration files found. |
Перезапустите службу, чтобы применить изменения.
1 |
$ sudo systemctl restart redis-server |