728x90
서비스를 중지/기동 많이할 것 같다면 애초에 systemctl 등록하는것이 두고두고 편의를 제공한다.
사전 확인 사항
- Systemctl 등록을 위해서 Startup할 수 있는 Command Line 혹은 Script가 필요하다. Shutdown은 프로세스를 킬하는 방법도 있으므로 Shutdown Command Line 혹은 Script는 없어도 무관하다.
- Gitlab이나 JEUS 같은 Main Process가 다수의 Process(자식 프로세스 아님)를 생성 후 종료되는 방식은 Systemctl 로 완벽한 관리가 잘안되더라..(이건 내능력 부족일수도 있음)
- User를 설정하고 실행하더라고 해당 User의 환경변수를 불러오지는 못한다. 이때 Unit 스크립트에 Environment 로 환경변수를 정의하거나 Environment File 을 호출하는 파라미터를 추가하는것이 좋다. 또는 Startup 스크립트를 작성하고 스크립트에서 export로 변수를 처음부터 정의하도록 하는 것도 좋은 방법이다.
유형 1. 서비스 Startup을 Script로 실행하는 경우
1) Jenkins를 systemctl에 등록하기 위해 service 파일을 만듭니다.
# vi /usr/lib/systemd/system/jenkins.service
2) jenkins.service에 Unit 스크립트를 작성합니다.
-----------------------------------------------
[Unit]
Description=Systemd Jenkins-Server Daemon
[Service]
User=cicd
Group=cicd
Type=forking
ExecStart=/bin/bash /home/cicd/startup.sh
ExecStop=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
-----------------------------------------------
3) 심볼릭 링크를 생성합니다.
#ln -s /usr/lib/systemd/system/jenkins.service /etc/systemd/system/multi-user.target.wants/jenkins.service
4. systemctl reload 및 테스트
#systemctl daemon-reload
#systemctl enable jenkins
#systemctl start jenkins
#systemctl status jenkins
유형 2. 서비스 Startup을 Command Line으로 실행하는 경우
1. mongodb을 systemctl에 등록하기 위해 service 파일을 만듭니다.
#vi /usr/lib/systemd/system/mongodb.service
2. mongodb.service에 Unit 스크립트를 작성합니다.
--------------
[Unit]
Description=Systemd MongoDB-Server Daemon
After=network.target
[Service]
User=mongodb
Group=dba
Type=forking
ExecStart=/home/mongodb/bin/mongod --config /home/mongodb/config/mongod.conf
ExecStop=/bin/kill -HUP $MAINPID
# Other directives omitted
# (file size)
LimitFSIZE=infinity
# (cpu time)
LimitCPU=infinity
# (virtual memory size)
LimitAS=infinity
# (locked-in-memory size)
LimitMEMLOCK=infinity
# (open files)
LimitNOFILE=64000
# (processes/threads)
LimitNPROC=64000
[Install]
WantedBy=multi-user.target
--------------
3. 심볼릭 링크를 생성합니다.
#ln -s /usr/lib/systemd/system/mongodb.service /etc/systemd/system/multi-user.target.wants/mongodb.service
4. systemctl reload 및 테스트
#systemctl daemon-reload
#systemctl start mongodb
#systemctl status mongodb
#systemctl enable mongodb
'IaaS > 기타' 카테고리의 다른 글
Linux Python 버전 조정하기 (0) | 2022.12.14 |
---|---|
Linux 서버간 비밀번호 없이 ssh 허용하기 (0) | 2022.12.12 |
IP 대역 중 사용중인 IP확인하는 스크립트 (0) | 2022.11.04 |
LVM 볼륨 만들기 (2) | 2022.10.05 |
Processor 기반 연산과 Multi-Thread 기반 연산 어떤 장단점이 있을까? (0) | 2022.08.17 |