systemd를 사용하여 집에 있는 서버에 대한 역방향 터널을 자동으로 설정하도록 autossh를 얻으려고 합니다. /etc/systemd/system에 autossh.service라는 단위를 설정했습니다.
인터넷에 연결한 후 서비스를 시작하면 모든 것이 잘 작동합니다. 그러나 출시 당시에는 그렇지 않습니다. "호스트 이름을 확인할 수 없습니다."는 인터넷에 연결되어 있지 않기 때문에 표시할 수 없습니다.
/etc/systemd/system/autossh.service에 다음 줄이 있습니다.
After=network-online.target
이론적으로는 이 문제가 해결되어야 하지만 그렇지 않습니다. 시작 시 명령이 실패하고(아직 온라인 상태가 아니므로 호스트 이름을 확인할 수 없다고 표시됨) 재시도하지 않습니다.
이 문제를 어떻게 해결할 수 있나요?
답변1
그것은 다음과 같습니다:
Restart=always
RestartSec=120
아마도...
또는 다음을 참조하세요.StartLimitInterval 이후 Systemd 서비스가 자동으로 다시 시작됩니다.
답변2
a) StartLimitIntervalSec=12
의 시작 부분에 [Unit]을 추가해 보세요 autossh.service
.
b) Type=simple
[서비스] 섹션.
c) 데몬을 다시 로드합니다 sudo systemctl daemon-reload
.
d) 다시 활성화합니다 sudo systemctl enable autossh
.
e) 시작하세요 sudo systemctl start autossh
.
f) 다시 시작
성공하셨나요?
답변3
또한 다음을 추가해야 합니다.
Wants=network-online.target
이렇게 하면 서비스가 시작되기 전에 구성된 모든 네트워크 장치가 시작되고 IP 주소가 할당됩니다.
답변4
유닛 파일을 기다리게 만드는 것이 더 나은 목표처럼 들리지 않습니까?
nss-find.target
모든 호스트/네트워크 이름 서비스 조회에 대한 동기화 지점의 대상으로 사용해야 합니다. 이는 nss-user-lookup.target을 사용해야 하는 UNIX 사용자/그룹 이름 조회와는 아무런 관련이 없습니다. 전체 호스트/네트워크 이름 확인이 필요한 모든 서비스는 이 대상 이후에 주문되어야 하지만 끌어와서는 안 됩니다. systemd는 "$named" 기능을 참조하는 LSB가 있는 모든 SysV init 스크립트 서비스 유닛 헤더에 이 대상 유닛의 After= 유형 종속성을 자동으로 추가합니다.