amos(amos 그룹의 구성원)로 실행해야 하는 다음 서비스 amos.service를 만들었습니다.
[Unit]
Description=AMOS Service
After=network.target
[Service]
User=amos
Group=amos
Type=simple
WorkingDirectory=/usr/share/amos
ExecStart=/usr/share/amos/amos_service.sh start
ExecStop=/usr/share/amos/amos_service.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
/usr/share/amos
모든 권한이 다음으로 설정되었습니다 .amos:amos
amos_service.sh는 다음과 같습니다.
#!/bin/bash
CUDIR=$(dirname "$0")
cd /usr/share/amos
start() {
exec /usr/share/amos/run_amos.sh >> /var/log/amos.log 2>&1
}
stop() {
exec pkill java
}
case $1 in
start|stop) "$1" ;;
esac
cd "$CURDIR"
처음 서비스를 실행했을 때 디렉터리는 수정되지 않았습니다. 즉, 루트 디렉터리에 속했고 amos.service에는 "그룹이 아닌 사용자" 매개변수가 없었으며 모든 것이 잘 실행되었습니다!
디렉터리 권한을 amos:amos로 변경하고 amos.service 사용자 및 그룹을 추가하면 서비스가 작동하지 않고 다음 메시지가 표시됩니다. 첨부된 이미지를 참조하세요.
답변1
시스템을 사용하십시오:
문제를 표시하려면 journalctl -xe
서비스를 시작한 후 사용하십시오.
Bash 스크립트가 필요하지 않습니다. 이것을 서비스 파일에 넣으십시오.
ExecStart=/usr/share/amos/run_amos.sh
아니요 ExecStop
, systemd는 모든 하위 프로세스를 중지합니다. 를 사용하여 출력을 볼 수 있습니다 journalctl -u amos.service
.
답변2
나는 당신이 단순보다는 포크를 원한다고 생각합니다. Simple은 프로세스가 종료되지 않았다고 가정하므로 종료되면 프로세스 종료를 호출합니다.
amos_service.sh 스크립트를 제거하고 해당 기능을 amos.service에 넣을 수 있습니다.
답변3
먼저 다음 명령을 사용하여 변경하려는 구성을 찾으십시오.
systemctl list-unit-files
그런 다음 다음 명령을 사용하여 특정 구성을 변경합니다.
sudo systemctl edit --full tomcat9.service
그러면 환경 변수에 설정된 기본 텍스트 편집기에서 파일이 열립니다 EDITOR
.
이제 특정 사용자 및 그룹 사용자 서비스 섹션을 추가하십시오.
답변4
amos
활성화-링거 옵션을 통해 사용자에게 서비스를 시작할 수 있는 권한을 부여할 수 있을까요?
loginctl enable-linger amos
(보다남자 로그인, 이는 필수인 것 같습니다)