추가 읽기

추가 읽기

나는 Ubuntu 16.04 LTS에서 ddclient/DDNS를 사용하여 내가 소유한 두 도메인(NameCheap에서)에 대한 DNS 레코드로 IP를 업데이트하고 있습니다(작동합니다).

그런데 문제는 도메인이 두 개이므로 ddclient의 별도 인스턴스 두 개를 실행해야 한다는 것입니다. .service이를 위해 저는 두 개의 파일을 작성하기 시작했습니다.

/usr/lib/systemd/system/ddclient_website1.service

[Unit]
Description=DDNS client for website1.tld

[Service]
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf

[Install]
WantedBy=multi-user.target

/usr/lib/systemd/system/ddclient_website2.service

[Unit]
Description=DDNS client for website2.tld

[Service]
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website2.conf

[Install]
WantedBy=multi-user.target

ExecStart 명령에 지정된 구성을 다음과 같이 사용합니다.

/etc/ddclient_website1.conf

daemon=1800
use=web, web=dynamicdns.park-your-domain.com/getip
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=domain_1.tld
password=first_ddns_password
server_name

/etc/ddclient_website2.conf

daemon=1800
use=web, web=dynamicdns.park-your-domain.com/getip
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=domain_2.tld
password=second_ddns_password
server_name

systemctl enable ddclient_website1.service(website2와 동일)을 사용하면 다음이 생성됩니다.

Created symlink from /etc/systemd/system/multi-user.target.wants/ddclient_website1.service to /usr/lib/systemd/system/ddclient_website1.service.

systemctl start ddclient_website1.service출력을 생성하지 않습니다.

ps -ef | grep ddclient방금 실행하고 생성한 grep을 나열하세요 systemctl status ddclient_website1.service.

● ddclient_website1.service - DDNS client for website1.tld
   Loaded: loaded (/usr/lib/systemd/system/ddclient_website1.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2016-12-18 15:34:23 EST; 39s ago
  Process: 2687 ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf (code=exited, status=0/SUCCESS)
 Main PID: 2687 (code=exited, status=0/SUCCESS)

Dec 18 15:34:23 server_name systemd[1]: Started DDNS client for website1.tld.

다시 시작해도 긍정적인 변화가 나타나지 않습니다.

편집하다:

.serviceddclient 설치 중에 생성된 기본 파일로 파일을 수정 한 후 .service이제 다음을 수행할 수 있습니다.시작서비스(에 나열되어 있습니다 ps -ef | grep ddclient.

[Unit]
Description=DDNS client for website1.tld
After=network.target

[Service]
Type=forking
PIDFile=/var/run/ddclient_website1.pid
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf

[Install]
WantedBy=default.target

그러나 40~50초 동안 실행한 후 시간이 초과되어 액세스해야 하는 PID 파일이 존재하지 않음을 나타냅니다(두 서비스 모두 동일한 문제).

● ddclient_website1.service - DDNS client for website1.tld
   Loaded: loaded (/usr/lib/systemd/system/ddclient_website1.service; enabled; vendor preset: enabled)
   Active: failed (Result: timeout) since Sun 2016-12-18 16:04:14 EST; 22s ago
  Process: 1347 ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf (code=exited, status=0/SUCCESS)

Dec 18 16:02:44 server_name systemd[1]: Starting DDNS client for website1.tld...
Dec 18 16:02:44 server_name systemd[1]: ddclient_website1.service: PID file /var/run/ddclient_website1.pid not readable (yet?) after start: No such file or directory
Dec 18 16:04:14 server_name systemd[1]: ddclient_website1.service: Start operation timed out. Terminating.
Dec 18 16:04:14 server_name systemd[1]: Failed to start DDNS client for website1.tld.
Dec 18 16:04:14 server_name systemd[1]: ddclient_website1.service: Unit entered failed state.
Dec 18 16:04:14 server_name systemd[1]: ddclient_website1.service: Failed with result 'timeout'.

나는 touch편집했고 ddclient_website1.pid(웹사이트2에서도 작동함) /var/run동일한 결과를 얻었습니다.

답변1

[제공하다]
ExecStart=/usr/sbin/ddclient -파일/etc/ddclient_website1.conf

PIDFile프로그램의 옵션과 마찬가지로 INI 파일의 및 설정을 사용하는 것이 잘못되었습니다. 많은 프로그램과 마찬가지로 이 프로그램은 실제로 관련 준비 프로토콜을 구현하지 않았습니다.Type=forking-pid

다른 많은 소프트웨어와 마찬가지로 이를 수행하는 올바른 방법은 프로그램의 -foreground옵션을 사용하는 것입니다. doco에 따르면 이 옵션은 개정판 113부터 사용할 수 있습니다.

추가 읽기

답변2

이것은 관련이 있을 수 있습니다, [Install]해당 섹션을 다음으로 변경해 보세요.

[Install]
WantedBy=default.target

답변3

문제는 ddclient의 캐시와 PID 파일의 위치를 ​​지정하지 않았다는 것입니다.

--help페이지 에 따르면 :

  -file path            : load configuration information from 'path' (default: /etc/ddclient.conf).
  -cache path           : record address used in 'path' (default: /var/cache/ddclient/ddclient.cache).
  -pid path             : record process id in 'path'.

ExecStart명령은 만 지정 하지만 및 -file도 지정해야 합니다 .-cache-pid

이것은 내 작업 ddclient_website1.service입니다.

[Unit]
Description=DDNS client for website1.tld
After=network.target

[Service]
Type=forking
PIDFile=/var/run/ddclient_website1.pid
ExecStart=/usr/sbin/ddclient -file /etc/ddclient_website1.conf -pid /var/run/ddclient_website1.pid -cache /var/cache/ddclient/ddclient_website1.cache

[Install]
WantedBy=default.target

ddclient의 구성 파일에서 다음 경로를 지정할 수도 있습니다 /etc/ddclient_website1.conf.

daemon=1800
use=web, web=dynamicdns.park-your-domain.com/getip
protocol=namecheap
server=dynamicdns.park-your-domain.com
login=website1.tld
password=my_ddns_password
cache=/var/cache/ddclient/ddclient_website1.cache
pid=/var/run/ddclient_website1.pid
@

이제 ddclient를 실행 systemctl enable ddclient_website1.service하고 systemctl start ddclient_website1.service작업을 시작할 수 있습니다.

관련 정보