![TeamViewer 서비스를 항상 온라인이 아닌 주문형으로 만드는 방법은 무엇입니까?](https://linux55.com/image/179585/TeamViewer%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%ED%95%AD%EC%83%81%20%EC%98%A8%EB%9D%BC%EC%9D%B8%EC%9D%B4%20%EC%95%84%EB%8B%8C%20%EC%A3%BC%EB%AC%B8%ED%98%95%EC%9C%BC%EB%A1%9C%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
/opt/teamviewer/tv_bin/script/teamviewer
저는 Linux Mint 19.3을 사용하고 있으며 GUI 애플리케이션()이 시작될 때만 TeamViewer systemd 서비스가 실행되도록 하고 싶습니다 . Windows에서는 TeamViewer를 선택하고 시작 유형을 자동에서 수동으로 변경하여 서비스 대화 상자에서 쉽게 수행할 수 있습니다.
Linux에는 TeamViewer 15가 있습니다(공식 웹사이트의 deb 파일을 통해 설치됨). systemd 서비스 파일에 다음이 포함되어 있음을 확인했습니다.
$ cat /etc/systemd/system/teamviewerd.service
[Unit]
Description = TeamViewer remote control daemon
After = network.target network-online.target dbus.service
Wants = network-online.target
Requires = dbus.service
[Service]
Type = forking
PIDFile = /var/run/teamviewerd.pid
ExecStart = /opt/teamviewer/tv_bin/teamviewerd -d
Restart = on-abort
StartLimitInterval = 60
StartLimitBurst = 10
[Install]
WantedBy = multi-user.target
그리고 로그인 중에 서비스가 자동으로 시작되는데, 이는 원하지 않습니다. GUI를 시작하기 전에 서비스를 시작하기 위해 새 bash 스크립트를 작성하는 것은 마음에 들지 않지만 시스템 서비스를 편집하는 데 능숙하지 않고 새 버전이 내 변경 사항을 덮어쓸까 봐 걱정됩니다.
질문:
"ExecStart" 매개변수를 사용하여 직접 시작하는 대신 서비스 파일을 제거하고 GUI 프로세스가 시작/종료되기 전/후에 bash 래퍼 스크립트를 사용할 수 있습니다.하지만...gui 프로세스가 서비스 프로세스와 상호 작용하기 위해 systemd 호출을 사용한다면 좋지 않을 것 같습니다... 더 나은 호환성을 위해 systemd 서비스 파일을 유지하려는 경우 서비스 파일을 여전히 구성할 수 있는 방법이 있습니까? 서비스를 활성화하지만 시작 시 실행되지는 않지만 여전히
sudo systemctl [start|stop] teamviewerd
?를 통해 수동으로 제어 할 수 있습니다.apt
특정 패키지에 대한 설치 후 스크립트를 지정하는 방법이 있습니까 ? (예를 들어apt
etc가 팀 뷰어의 새 버전을 설치하면 systemd 서비스와 *.desktop 파일이 다시 설치될 수 있으며 이러한 문제를 "수정"하기 위해 자동으로 스크립트를 실행하고 싶습니다.) 나는 보았다이것그리고이것스크립트 경로와 같은 것이 필요하다는 것을 이해/etc/apt/apt.conf.d/custom-hooks
하지만 a) 마지막으로 설치된 패키지 목록을 전달하거나 b) apt에 의해 방금 설치된 패키지를 찾는 방법을 모릅니다. PRE 후크에서 목록을 캡처한 다음 이를 다시 캡처하고 POST 후크에서 변경 사항을 확인하는 것보다 더 우아한 방법이 있습니까?내가 고려하지 않은 더 우아한 방법이 있습니까?
답변1
일반적으로 설치된 데몬의 시작은 제어됩니다 systemctl [enable|disable] <service_name>
. 여전히 시작할 수 있습니다.장애가 있는수동 서비스 systemctl start <service_name>
.
하지만 함께팀 뷰어이것은 다릅니다. 매번팀 뷰어업데이트 후 /etc/systemd/system/teamviewerd.service
파일을 덮어쓰고 서비스 시작을 활성화합니다. 따라서 사용자가 원하지 않더라도 데몬은 작동합니다.
나는 이것을 해결한다질문서비스에 재정의를 추가하면 다음과 같습니다.
systemctl stop teamviewerd.service
mkdir -p /etc/systemd/system/teamviewerd.service.d
cat >/etc/systemd/system/teamviewerd.service.d/override.conf <<EOF
[Unit]
ConditionPathExists=/tmp/allow_teamviewerd
EOF
systemctl daemon-reload
이제 데몬을 시작하려면 다음 명령을 실행하십시오.
touch /tmp/allow_teamviewerd
systemctl start teamviewerd.service
rm /tmp/allow_teamviewerd
평소처럼 중지하세요.
systemctl stop teamviewerd.service