Munir가 언급 한 것은 정확하게 어떻게하는 것입니다. 기본적으로 service
파일 을 만들고 30 번 시작합니다. 이제는 조금 비천한 것처럼 보일지 모르지만 잘못 작동하는 경우 하나를 종료하고 모든 것을 종료하지 않아도되는 등의 이점이 있습니다. 관리를 쉽게하기 위해 할 수있는 일도 있습니다.
먼저 단위 파일입니다. 와 같은 파일을 작성하십시오 /etc/systemd/system/test@.service
. 중요한 것은 @
상징입니다.
내용은 다음과 같습니다.
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
그리고 그것을 시작 systemctl start test@1.service
, systemctl start test@2.service
.
시작되는 프로세스는 다음과 같습니다.
root 17222 19 0 0.0 0.0 Ss 00:05 /bin/sleep 600 1
root 17233 19 0 0.0 0.0 Ss 00:02 /bin/sleep 600 2
이 통지 %I
는 후에 넣어 어떤 치환 된있어 @
당신이 그것을 시작했을 때.
작은 셸 푸로 30 개를 모두 시작할 수 있습니다.
systemctl start test@{1..30}.service
부팅 할 때 일반 서비스처럼 활성화 할 수도 있습니다 systemctl enable test@1.service
.
이제 관리를 쉽게하기 위해 할 수있는 일이 무엇을 의미합니까? 아마도 test@{1..30}.service
모든 것을 관리하는 데 사용하고 싶지 않을 수도 있습니다 . 조금 다루기 힘들다. 대신 서비스에 대한 새 대상을 만들 수 있습니다.
로 작성 /etc/systemd/system/test.target
:
[Install]
WantedBy=multi-user.target
그런 다음 /etc/systemd/system/test@.service
다음과 같이되도록 조정하십시오 .
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
로 시스템을 다시로드 systemctl daemon-reload
하십시오 (단위 파일을 수정하고 이전 버전을 건너 뛰지 않은 경우에만 필요). 이제을 수행하여 관리하려는 모든 서비스를 활성화하십시오 systemctl enable test@{1..30}.service
.
(이전에 서비스를 활성화 한 WantedBy=multi-user.target
경우 먼저 비활성화하여 종속성을 지 웁니다)
이제 systemctl start test.target
및을 수행 할 수 있으며 systemctl stop test.target
30 개의 프로세스를 모두 시작 / 중지합니다.
다시 부팅하면 다른 장치 파일처럼 부팅 할 수 있습니다 systemctl enable test.target
.