TeamViewer 서비스를 항상 온라인이 아닌 주문형으로 만드는 방법은 무엇입니까?

TeamViewer 서비스를 항상 온라인이 아닌 주문형으로 만드는 방법은 무엇입니까?

/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 스크립트를 작성하는 것은 마음에 들지 않지만 시스템 서비스를 편집하는 데 능숙하지 않고 새 버전이 내 변경 사항을 덮어쓸까 봐 걱정됩니다.

질문:

  1. "ExecStart" 매개변수를 사용하여 직접 시작하는 대신 서비스 파일을 제거하고 GUI 프로세스가 시작/종료되기 전/후에 bash 래퍼 스크립트를 사용할 수 있습니다.하지만...gui 프로세스가 서비스 프로세스와 상호 작용하기 위해 systemd 호출을 사용한다면 좋지 않을 것 같습니다... 더 나은 호환성을 위해 systemd 서비스 파일을 유지하려는 경우 서비스 파일을 여전히 구성할 수 있는 방법이 있습니까? 서비스를 활성화하지만 시작 시 실행되지는 않지만 여전히 sudo systemctl [start|stop] teamviewerd?를 통해 수동으로 제어 할 수 있습니다.

  2. apt특정 패키지에 대한 설치 후 스크립트를 지정하는 방법이 있습니까 ? (예를 들어 aptetc가 팀 뷰어의 새 버전을 설치하면 systemd 서비스와 *.desktop 파일이 다시 설치될 수 있으며 이러한 문제를 "수정"하기 위해 자동으로 스크립트를 실행하고 싶습니다.) 나는 보았다이것그리고이것스크립트 경로와 같은 것이 필요하다는 것을 이해 /etc/apt/apt.conf.d/custom-hooks하지만 a) 마지막으로 설치된 패키지 목록을 전달하거나 b) apt에 의해 방금 설치된 패키지를 찾는 방법을 모릅니다. PRE 후크에서 목록을 캡처한 다음 이를 다시 캡처하고 POST 후크에서 변경 사항을 확인하는 것보다 더 우아한 방법이 있습니까?

  3. 내가 고려하지 않은 더 우아한 방법이 있습니까?

답변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

관련 정보