সিস্টেমড টাইমার তার পরিষেবা ইউনিট শুরু করছে না


9

পরিস্থিতি

লেটস এনক্রিপ্ট থেকে শংসাপত্র পুনর্নবীকরণের জন্য আমি একটি কাস্টম সিস্টেমড সার্ভিস ইউনিট এবং এর সহযোগী শেল স্ক্রিপ্ট লিখেছি । আমি দৌড়ানোর সময় সবকিছু ঠিকঠাক কাজ করে systemctl start letsencrypt-example_com.service। আমি এটি প্রতি 60 দিন পরে স্বয়ংক্রিয়ভাবে চালিত হতে চাই, তাই আমি একটি সিস্টেমযুক্ত টাইমার ইউনিট লিখেছি।

সমস্যা

আমি systemctl enable letsencrypt-example_com.timerতখন দৌড়ে গেলাম systemctl start letsencrypt-example_com.timer। টাইমার মনে হচ্ছে পরিষেবাটি শুরু হচ্ছে না।

# systemctl status letsencrypt-example_com.timer
Created symlink from /etc/systemd/system/timers.target.wants/letsencrypt-example_com.timer to /etc/systemd/system/letsencrypt-example_com.timer.
# systemctl start letsencrypt-example_com.timer
# systemctl list-timers --all
# systemctl list-timers
NEXT                           LEFT     LAST                           PASSED       UNIT                            ACTIVATES
n/a                            n/a      ven. 2016-05-06 13:10:13 CEST  1h 51min ago letsencrypt-example_com.timer letsencrypt-example_com.service
# systemctl status letsencrypt-example_com.timer
● letsencrypt-example_com.timer - Run letsencrypt-example_com every 60 days
   Loaded: loaded (/etc/systemd/system/letsencrypt-example_com.timer; enabled)
   Active: active (elapsed) since ven. 2016-05-06 15:01:57 CEST; 2min 50s ago
# systemctl status letsencrypt-example_com.service
● letsencrypt-example_com.service - letsencrypt certificat renewal for example.com and subdomains
   Loaded: loaded (/etc/systemd/system/letsencrypt-example_com.service; static)
   Active: inactive (dead)

নথি পত্র

cat /etc/systemd/system/letsencrypt-example_com.service :

[Unit]
Description=letsencrypt certificat renewal for example.com and subdomains
Requires=nginx_reload.service
Before=nginx_reload.service

[Service]
Type=simple
ExecStart=/bin/sh /usr/local/bin/letsencrypt-renew.sh example.com www.example.com
User=letsencrypt
Group=www-data

/usr/local/bin/letsencrypt-renew.sh :

#!/bin/sh

letsencrypt certonly \
--server https://acme-v01.api.letsencrypt.org/directory \
--text \
--email admin@example.com \
--agree-tos \
--rsa-key-size 4096 \
--authenticator webroot \
--webroot-path /srv/files/letsencrypt/www \
$(
for fqdn in $@;
    do echo "--domain $fqdn";
    done;
) \
--force-renew

/etc/systemd/system/letsencrypt-example_com.timer :

[Unit]
Description=Run letsencrypt-example_com every 60 days

[Timer]
OnUnitActiveSec=1min
Persistent=true
Unit=letsencrypt-example_com.service

[Install]
WantedBy=timers.target

/etc/systemd/system/nginx_reload.service :

[Unit]
Description=reload nginx conf

[Service]
Type=oneshot
ExecStart=/bin/systemctl reload nginx

আমি যদি আজ এটি করে থাকি তবে আমি একটি তৈরি নাও করতে পারি nginx_reload.serviceএবং letsencrypt-example_com.service insteadPermissionsStartOnly=true ExecStartPost=/bin/systemctl reload nginx
এগুলিতে

সম্ভবত সম্পর্কিত: github.com
সিস্টেমেড

উত্তর:


11

যদিও টাইমার ইউনিটগুলি Before=সক্রিয় হওয়ার কথা বলে সেগুলির উপর স্বয়ংক্রিয়ভাবে নির্ভরতা অর্জন করে , স্পষ্টতই তারা এতে স্বয়ংক্রিয়ভাবে Requires=নির্ভরতা রাখে না (যা আমার কাছে কোনও অর্থ দেয় না)।

তাই আমি [Unit]টাইমার ইউনিটের বিভাগে নিম্নলিখিত লাইনটি যুক্ত করেছি এবং এখন এটি ইচ্ছাপূর্বে পরিষেবাটি শুরু করে:

Requires=letsencrypt-example_com.service

আমিও বিভাগে একটি AccuracySec(এর 10s) সেট করেছি [Timer]


আমার কিছুক্ষণ আগে একটি ওয়ার্কিং টাইমার ছিল, তখন একই টাইমারটি আপনার একই ত্রুটি নিয়ে থামল; আমি এই সমাধানটি ব্যবহার করে সমাধান করেছি; আমি মনে করি একটি সিস্টেমড আপগ্রেডে কিছু পরিবর্তন হয়েছে ...
জ্যাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.