일반 사용자로 데몬을 실행하는 서버가 있습니다. 앞으로는 내가 신뢰하는 사람들에게 이 사용자에 대한 액세스 권한을 부여할 계획입니다. 하지만 예방 조치로 su 또는 sudo 액세스 없이 모든 구성 및 관리를 수행하고 싶습니다. 이를 위해 간단한 시스템 사용자 유닛을 작성하고 그것이 작동하는지 테스트했습니다. 물론.
문제는 서버를 다시 시작할 때입니다. systemd는 mariadb(데몬에 필요한)가 준비되기 전에 데몬을 시작하려고 시도합니다. 이로 인해 systemd의 StartLimit이 초과되고 systemd가 데몬 시작 시도를 모두 중지할 때까지 데몬이 반복적으로 실패하게 됩니다.
이 문제를 해결하기 위해 제가 할 수 있는 일이 많이 있습니다. SQL Server가 연결될 때까지 반복해서 쿼리한 다음 데몬을 시작하려고 시도하는 스크립트를 실행하도록 systemd 장치를 다시 작성할 수 있습니다. 아니면 시스템 장치에서 재시작 사이에 시간 제한을 추가할 수 있나요? 예를 들어... 30초? 하지만 둘 다... 혼란스럽고... 단조로운 느낌을 줍니다. 차라리 좀 더 우아한 솔루션을 갖고 싶습니다.
systemd 맨페이지를 살펴봤지만... 거기에는 많은 것이 있습니다. 어떤 아이디어가 있나요?
문제의 유닛 파일:
[Unit]
Description=Teamspeak 3
[Service]
Type=forking
#User=teamspeak
#Group=teamspeak
UMask=0027
Restart=always
WorkingDirectory=/home/teamspeak/ts
PIDFile=/home/teamspeak/ts/ts3server.pid
ExecStart=/home/teamspeak/ts/ts3server_startscript.sh start inifile=/home/teamspeak/ts/ts3server.ini
ExecStop=/home/teamspeak/ts/ts3server_startscript.sh stop
ExecReload=/home/teamspeak/ts/ts3server_startscript.sh restart
[Install]
WantedBy=default.target
답변1
우아한 해결책은 소켓 활성화를 사용하여 시스템 서비스를 시작하는 것입니다. 소켓 활성화 지점 중 하나는 종속성을 명시적으로 지정하지 않고 상호 종속 서비스를 시작할 수 있도록 허용하는 것입니다(따라서 시작이 추가로 병렬화됩니다).
예를 들어소켓 활성화에 대한 이 블로그 게시물이는 이를 매우 명확하게 보여줍니다.
소켓 활성화를 사용하면 주문 없이 정확히 동시에 네 가지 서비스를 모두 시작할 수 있습니다. 청취 소켓 생성이 데몬 프로세스 외부로 이동되었으므로 동시에 시작할 수 있으며 서로의 소켓에 즉시 연결할 수 있습니다.
특정 사례가 사용자 단위와 시스템 단위 간의 상호 종속성인 경우에도 동일한 논리가 적용됩니다.
불행하게도 현재 MariaDB는시스템 활성화 자체를 지원하지 않습니다.. 하지만 다음과 같은 프록시를 사용할 수 있습니다.systemd-소켓-프록시(8)별도의 포트에서 MariaDB에 대한 소켓 활성화 서비스 프록시를 만듭니다. 바라보다이 문제자세한 내용은.
또 다른 옵션은 Teamspeak 서비스를 다음과 같이 사용하는 것입니다.체계서비스 대신 서비스를 사용하고 해당 User=
지시어(현재 설명했듯이)를 사용하여 서비스 사용자와 함께 계속 실행하세요.
당신이 그것을 "데몬"이라고 묘사하기 때문에 시스템 서비스로 만드는 것이 완벽하게 적절하고 더 올바른 접근 방식일 수도 있다고 말하고 싶습니다.
"teamspeak" 사용자로 로그인한 사람이 서비스를 관리(중지/다시 시작)하기 어렵게 만드는 등의 단점이 있지만, 서비스 계정으로 전환하는 것과 관련된 배열에도 단점이 있다고 제안하고 싶습니다(개인적으로는 피한다고 생각합니다). 이 설정), 이 설정을 그대로 두고 사용자가 "sudo" 또는 이와 유사한 것을 사용하여 시스템 서비스를 관리하도록 허용할 수 있습니다.
답변2
Requires=mysqld.service
또는 Wants=mysqld.service
지시문은 서비스 종속성에 도움이 됩니다.
systemd: 단위 종속성과 순서자세한 내용은 페도라 매거진을 참조하세요.