সিস্টেমড টাইমার কখন চালিত হবে তা জানার কোনও উপায় আছে?


19

আমি একটি সিস্টেমযুক্ত টাইমার পরীক্ষা করছি এবং এর ডিফল্ট টাইমআউটটি ওভাররাইড করার চেষ্টা করছি, তবে সফলতা ছাড়াই। আমি ভাবছি যে পরিষেবাটি যখন কখন চালু হবে তখন আমাদের জানাতে সিস্টেমডকে জিজ্ঞাসা করার কোনও উপায় আছে কিনা?

সাধারণ ফাইল ( /lib/systemd/system/snapbackend.timer):

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.timer.html

[Unit]
Description=Run the snapbackend service once every 5 minutes.

[Timer]
# You must have an OnBootSec (or OnStartupSec) otherwise it does not auto-start
OnBootSec=5min
OnUnitActiveSec=5min
# The default accuracy is 1 minute. I'm not too sure that either way
# will affect us. I am thinking that since our computers will be
# permanently running, it probably won't be that inaccurate anyway.
# See also:
# http://stackoverflow.com/questions/39176514/is-it-correct-that-systemd-timer-accuracysec-parameter-make-the-ticks-slip
#AccuracySec=1

[Install]
WantedBy=timers.target

# vim: syntax=dosini

ওভাররাইড ফাইল ( /etc/systemd/system/snapbackend.timer.d/override.conf):

# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=30min

আমি নিম্নলিখিত কমান্ডগুলি চালিয়েছি এবং টাইমার এখনও প্রতি 5 মিনিটে একবার টিক দেয়। সিস্টেমডে কোনও বাগ থাকতে পারে?

sudo systemctl stop snapbackend.timer
sudo systemctl daemon-reload
sudo systemctl start snapbackend.timer

তাই আমিও ভাবছিলাম, টাইমারটি পরবর্তী কখন টিক দেবে তা আমি কীভাবে জানতে পারি? কারণ তা অবিলম্বে আমাকে বলবে এটি 5 মিনিটের মধ্যে কিনা। বা 30 মিনিট তবে systemctl status snapbackend.timerএগুলি সম্পর্কে কিছুই বলে না। কেবল ভাবছেন যে কোনও আদেশ আছে যা আমাকে বর্তমানে ব্যবহৃত বিলম্বটি বলবে।

আগ্রহীদের জন্য, পরিষেবার ফাইলটিও খুব বেশি ( /lib/systemd/system/snapbackend.service) রয়েছে, যদিও আমি কল্পনা করব যে এটির টাইমার টিক্সগুলিতে কোনও প্রভাব ফেলবে না ...

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Snap! Websites snapbackend CRON daemon
After=snapbase.service snapcommunicator.service snapfirewall.service snaplock.service snapdbproxy.service

[Service]
# See also the snapbackend.timer file
Type=simple
WorkingDirectory=~
ProtectHome=true
NoNewPrivileges=true
ExecStart=/usr/bin/snapbackend
ExecStop=/usr/bin/snapstop --timeout 300 $MAINPID
User=snapwebsites
Group=snapwebsites
# No auto-restart, we use the timer to start once in a while
# We also want to make systemd think that exit(1) is fine
SuccessExitStatus=1
Nice=5
LimitNPROC=1000
# For developers and administrators to get console output
#StandardOutput=tty
#StandardError=tty
#TTYPath=/dev/console
# Enter a size to get a core dump in case of a crash
#LimitCORE=10G

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

1
সাহায্যের আউটপুট systemctl list-timers?
পিএইচজি

আহ! এটি অনুসন্ধান করে, আমি এই পৃষ্ঠাটি সমাধান সহ পেয়েছি : bbs.archlinux.org/viewtopic.php?id=214989 আমি এখনই একটি উত্তর লিখব।
অ্যালেক্সিস উইলকে

উত্তর:


25

বর্তমানে সক্রিয় টাইমারগুলির অবস্থা ব্যবহার করে দেখানো যেতে পারে systemctl list-timers:

$ systemctl list-timers --all
NEXT                         LEFT     LAST                         PASSED       UNIT                         ACTIVATES
Wed 2016-12-14 08:06:15 CET  21h left Tue 2016-12-13 08:06:15 CET  2h 18min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

1 timers listed.

7

@ পিএফজি মন্তব্য এবং উত্তর থেকে, আমি উত্তর সহ একটি পৃষ্ঠা পেয়েছি। টাইমারগুলি ক্রমযুক্ত এবং আপনাকে প্রথমে সেগুলি পুনরায় সেট করতে হবে অন্যথায় পূর্ববর্তী এন্ট্রি প্রায় থাকবে। এটি ক্যালেন্ডারগুলির জন্য দরকারী তবে এটি সমস্ত টাইমারগুলির সাথে একই কাজ করে।

একটি এন্ট্রি থাকা যা টাইমারকে নতুন মানতে পরিবর্তিত করার পূর্বে প্রত্যাশা অনুযায়ী কাজ করে:

# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=
OnUnitActiveSec=30min

1

না, কোনও টাইমার ঠিক কখন দেখতে পাবে না টাইমার কখন পরের দিকে চলবে। systemdঅফার systemctl list-timersএবং systemctl status something.timer, কিন্তু সেগুলি AccuracySec=এবং সম্ভবত অন্যান্য নির্দেশাবলীর প্রভাবকে প্রদর্শন করে না যা সময় বদলে দেয়।

আপনি যদি AccuracySec=1hদুটি সার্ভার সেট করেন তবে তারা উভয়ই জানায় যে উভয় সার্ভারে একই টাইমার ঠিক একই সময়ে গুলি চালানো হবে, তবে বাস্তবে তারা এক ঘন্টা অবধি আলাদা হতে পারে! যদি আপনি জানতে আগ্রহী হন যে দুটি এলোমেলো টাইমারের সংঘর্ষ হতে পারে, তবে চূড়ান্ত গণনা করা রান সময়টি খুঁজে পাওয়ার কোনও উপায় নেই বলে মনে হয়।

তালিকা-টাইমারদের আউটপুট আরও নির্ভুল / কম বিভ্রান্তিকর করার জন্য একটি সিস্টেমযুক্ত সমস্যা খোলা আছে।


টাইমার সম্পর্কে আকর্ষণীয় পয়েন্ট। list-timersযদিও আমরা যে তথ্যগুলি থেকে পেয়েছি তা আপনার টাইমারগুলির ব্যবহার সঠিক কিনা তা বোঝা ইতিমধ্যে ভাল pretty
অ্যালেক্সিস উইলক

1
আমার ক্ষেত্রে নয়। আমি দুটি হোস্টে ঠিক একই কনফিগারেশনটি ব্যবহার করতে চাই, তবে উভয় একই সময়ে মূলতত্ত্বটি করছে না তা নিশ্চিত করতে নির্ভুলতা = ব্যবহার করুন। আমি দেখতে চাই টাইমাররা কখন প্রতিটি হোস্টকে প্রকৃতপক্ষে গুলি চালায়, কিন্তু পারে না।
মার্ক স্টসবার্গ

আহ। আমারও একই সমস্যা আছে। আমি একটি নির্বাচিত মাস্টার ব্যবহার করব (একটি ভোট সিস্টেম ব্যবহার করে) এবং মাস্টার কম্পিউটার 1-এ "রক্ষণাবেক্ষণ" বার্তা প্রেরণ করে, কম্পিউটার 1 সম্পন্ন হওয়ার পরে এটি তার নতুন স্থিতিটি মাস্টারকে জানায় যা তারপরে কম্পিউটার 2 কে তার রক্ষণাবেক্ষণ করতে বলে, ইত্যাদি those কম্পিউটারগুলির মধ্যে একটি অবশ্যই মাস্টার হবে, তবে রক্ষণাবেক্ষণের লুপটি চালানো কোডটি প্রকৃত রক্ষণাবেক্ষণ থেকে পৃথক হওয়া উচিত। মনে রাখতে হবে একটি সমস্যা। যদি আপনার ক্লাস্টারটি কিছুটা বাড়তে থাকে তবে মনে রাখবেন এটি সময় নেয় এবং এটি এত দীর্ঘ হতে পারে যে কোনও কোনও কম্পিউটার দীর্ঘ সময়ের জন্য আপডেট হয় না!
অ্যালেক্সিস উইলক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.