MongoDB를 실행하려면 이와 같은 작업을 수행해야 합니다.
$numactl --interleave=all /usr/bin/mongod --config /etc/mongod.conf &
위의 옵션으로 mongo 데몬을 실행하려면 무엇을 변경해야 합니까?
답변1
서비스를 어떻게 관리하느냐에 따라 다릅니다.
daemontools 서비스 관리자 제품군을 사용하면 됩니다.
현재 run
프로그램은 본질적으로 다음과 같이 요약됩니다.
#!/빈/노쉬 chdir/ setuidgid 몽고디비 몽골드
run
이것은 실제로 일반 서비스 팩에 포함된 매우 기본적인 MongoDB 프로그램입니다.나의 스낵 스위트, 이는 쉘을 스크립트 해석기로 사용하지 않습니다. run
daemontools가 관리하는 서비스에 대한 쉘 해석 스크립트.contegix에서 사용하는 것또는카와즈 요시아키 중 한 명더 복잡해 보일 수도 있지만 결국에는 exec setuidgid mongodb mongod
명령이 있습니다.어딘가에, 쉘 변수 확장 뒤에 숨겨져 있더라도 마찬가지입니다.
daemontools 서비스 관리자 제품군의 경우 run
이러한 프로그램은 본질적으로 간단한 체인 로딩 명령 시퀀스입니다. 이 numactl
프로그램은 자체 프로세스의 설정을 수정한 다음 명령줄에 지정된 프로그램에 연결하는 체인 로딩 명령이기도 합니다. 다음과 같은 daemontools 도구에 이상적입니다.setuidgid
.
따라서 거기에 체인을 추가하면 numactl
됩니다.
#!/빈/노쉬 chdir/ numactl --interleave=all-- setuidgid 몽고디비 몽골드nosh 스크립트에서 또는
구현하다\ numactl --interleave=all--\ setuidgid mongodb \ 몽골드쉘 스크립트에서. (쉘 스크립트에서는 스크립트가 존재 여부를 자동으로 감지하도록 할 수 있습니다
numactl
. 아래의 신생 사람들로부터 메커니즘을 훔치기만 하면 됩니다.)
그런 다음 서비스를 다시 시작하세요(nosh에만 해당).
시스템 제어 condrestart mongod.service또는
svc -t /service/mongodb이전 일반 daemontools 디렉토리를 사용하는 경우
/service
.
systemd를 사용하면 그게 전부입니다.
유닛 파일 에는 mongod.service
섹션이 있습니다
[제공하다] 사용자=몽고디비 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 다시 시작