Это зависит от того, как вы управляете своими службами.
Ваша текущая run
программа по сути будет сводиться к
#!/bin/nosh chdir / setuidgid mongodb mongod
Это на самом деле очень базовая run
программа MongoDB, которая поставляется в комплекте обычных сервисов my nosh suite, которая не использует shell в качестве интерпретатора сценариев. Интерпретируемые shell'ом run
скрипты для управляемых daemontools сервисов, такие как используемый contegix или Yoshiaki Kawazu, могут выглядеть сложнее, но все они в конечном итоге содержат exec setuidgid mongodb mongod
команду где-то, даже если она скрыта за расширениями переменных оболочки.
С менеджерами служб семейства daemontools, run
программы, подобные этим, по сути, являются простыми последовательностями команд, загружаемых по цепочке. Программа numactl
- это тоже команда цепной загрузки, которая изменяет настройки собственного процесса, а затем передает цепь программе, названной в ее командной строке. Она хорошо сочетается с такими инструментами daemontools, как setuidgid
.
Так что вы просто добавляете numactl
в цепочку, которая будет
#!/bin/nosh chdir / numactl --interleave=all -- setuidgid mongodb mongodв сценарии nosh или
exec \ numactl --interleave=all -- \ setuidgid mongodb \ mongodв сценарии shell. (В сценарии оболочки можно сделать так, чтобы сценарий пытался автоматически определить наличие
numactl
. Просто возьмите механизм из upstart folk, ниже).
Затем просто перезапустите службу с помощью (только для nosh)
system-control condrestart mongod.serviceили
svc -t /service/mongodbесли вы используете старую традиционную директорию daemontools
/service
.
В вашем файле mongod.service
unit будет раздел, в котором
[Service] User=mongodb ExecStart=/usr/local/bin/mongod $OPTIONS run
Это то, что вы найдете в модуле systemd service, поставляемом с mongodb, который немного, но не намного сложнее.
Итак, вы просто делаете, как вы предложили, и изменяете параметр ExecStart
:
ExecStart=/usr/bin/numactl --interleave=all -- /usr/local/bin/mongod $OPTIONS run
Либо помещаете это в заменяющий /etc/systemd/service/mongod. service
, чтобы полностью перекрыть поставляемый пакетом файл, либо сохраните поставляемый пакетом файл и используйте перекрытие только для этой настройки в /etc/systemd/service/mongod.service.d/numactl.conf
.
Затем просто перезагрузите блок службы из файла(ов) с помощью
systemctl daemon-reloadи перезапустите службу с помощью
systemctl condrestart mongod.service
Ответы на https://askubuntu.com/questions/293468/ на AskUbuntu приближаются к двухлетней давности. Тем временем, возможность numactl
была помещена в поставляемый пакетом файл задания upstart.
Так что ваша система, предположим, что она обновлена, уже должна это делать, и вам даже не понадобится
initctl restart mongodb