我需要做这样的事情来运行 MongoDB
$numactl --interleave=all /usr/bin/mongod --config /etc/mongod.conf &
我应该更改什么才能使用上述选项运行 mongo 守护进程?
答案1
这取决于您如何管理您的服务。
使用 daemontools 系列服务管理器,仅此而已。
您当前的run
程序本质上将归结为
#!/bin/nosh chdir / setuidgid mongodb 蒙戈德
这实际上是非常基本的 MongoDBrun
程序,包含在常规服务包中我的小吃套房,它不使用 shell 作为脚本解释器。run
用于 daemontools 管理的服务的shell 解释脚本,例如contegix 使用的那个或者河津义明的一个可能看起来更复杂,但最终都有一个exec setuidgid mongodb mongod
命令某处,即使它隐藏在 shell 变量扩展后面。
对于 daemontools 系列服务管理器,run
此类程序本质上是简单的链加载命令序列。该numactl
程序也是一个链式加载命令,它修改其自身进程的设置,然后链接到其命令行上指定的程序。它非常适合 daemontools 工具,例如setuidgid
。
所以你只需添加numactl
到那里的链中,这将是
#!/bin/nosh chdir / numactl --interleave=全部 -- setuidgid mongodb 蒙戈德在 nosh 脚本中或
执行\ numactl --interleave=全部 -- \ setuidgid mongodb \ 蒙戈德在 shell 脚本中。(在 shell 脚本中,您可以让脚本尝试自动检测 的存在
numactl
。只需从下面的 upstart folk 那里窃取该机制即可。)
然后只需重新启动服务(仅限 nosh)
系统控制 condrestart mongod.service或与
svc -t /服务/mongodb如果您使用的是旧的常规 daemontools
/service
目录。
使用 systemd,仅此而已。
在你的mongod.service
单元文件中会有一个部分
[服务] 用户=mongodb ExecStart=/usr/local/bin/mongod $OPTIONS 运行
这就是你会发现的mongodb 附带的 systemd 服务单元,稍微复杂一些,但也复杂不了多少。
因此,您只需按照您的建议进行操作并修改ExecStart
设置即可:
ExecStart=/usr/bin/numactl --interleave=all -- /usr/local/bin/mongod $OPTIONS 运行
要么将其放入替换/etc/systemd/service/mongod.service
单元文件中以完全覆盖包提供的单元文件,要么保留包提供的单元文件并仅对(例如)中的设置使用覆盖/etc/systemd/service/mongod.service.d/numactl.conf
。
然后只需从文件中重新加载服务单元即可
systemctl 守护进程重新加载并重新启动服务
systemctl condrestart mongod.service
有了暴发户,就什么都没有了。
答案位于https://askubuntu.com/questions/293468/AskUbuntu 上的内容现在已经快 2 岁了。同时,numactl
能力已被放置进入包提供的 upstart 作业文件。
因此,假设您的系统是最新的,应该已经在执行此操作,您甚至不需要
initctl 重启 mongodb