সিস্টেমেড সহ দিনে একবার স্ক্রিপ্ট রান করুন


13

আমি আমার মেশিনটি বুট করার 10 মিনিট পরে তবে দিনের মধ্যে একবার ব্যাকআপ স্ক্রিপ্ট চালাতে চাই। সিস্টেমডের সাথে কি এই জাতীয় পরিস্থিতি তৈরি করা সম্ভব?


3
আমি আপনার প্রয়োজনীয়তা পুরোপুরি বুঝতে পারছি না, দয়া করে পরিষ্কার করুন। আমি বুঝতে পারি যে আপনি যদি কোনও দিনে আপনার মেশিনের সার্বারাল বার পুনরায় চালু করেন তবে স্ক্রিপ্টটি কেবল প্রথম পুনরায় বুট করার পরে চালানো উচিত, এটি কি ঠিক? যদি আপনার মেশিনটি 1 দিনের বেশি সময় ধরে চলে, তবে স্ক্রিপ্টটি কি টানা দিনে চালানো উচিত?
ক্রিজিসটফ অ্যাডামস্কি

যথাযথভাবে। আমি আমার পিসি কতবার রিবুট করি না কেন আমি প্রতিদিন ব্যাকআপ নেব।
Fu86

5
যদি আপনি সিস্টেমে ঝুলন্ত না হন তবে এটি হ'ল অ্যানক্রোন for
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

আমি ভুল হতে পারি তবে বুট শেষ হওয়ার 10 মিনিটের পরে স্ক্রিপ্টটি চালানোর জন্য অ্যানক্রোন সেট করার সহজ উপায় নেই।
Krzysztof অ্যাডামস্কি

সেটা ঠিক. এজন্য আমি বর্তমানে অ্যানক্রোন এবং ভাল পুরানো ব্যবহার করছি, যেমন একটি দৈনিক চাকরীর সাথেecho "obnam backup" | at "now + 10 minutes"
অ্যাড্রিয়েন ক্লার্ক

উত্তর:


11

দেখুন /lib/systemd/system/systemd-tmpfiles-clean.timer:

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

এটি .serviceবুট করার 15 মিনিটের পরে এবং তারপরে প্রতিদিন সিস্টেমটি চালু থাকার সময় সংশ্লিষ্ট ফাইলটি চালায় । যদি আপনি একই দিনে একাধিকবার রিবুট করেন, আপনি কেবল সংরক্ষণাগারটির এমটাইম পরীক্ষা করতে ব্যাকআপ স্ক্রিপ্টটি রাখতে পারেন এবং এটি যদি এক দিনেরও কম পুরানো হয় তবে চালানো যায় ip

এছাড়াও, যদি আপনার ব্যাকআপগুলি আইও-তে ভারী হতে চলেছে, তবে সিস্টেমড.এক্সেক (5) ম্যানপেজে আইওএসচেডিং * নির্দেশিকা সম্পর্কে পড়তে সহায়ক হতে পারে ।


5

আমি মনে করি না এটি সম্পূর্ণভাবে সিস্টেমে করা সম্ভব কারণ এটি পুনরায় বুট করার মধ্যে কোনও রাজ্য ট্র্যাক করে না। আপনি easly বুট ব্যবহার করে পরে 10 মিনিট চালানোর জন্য কিছু নির্ধারিত করতে পারেন systemd.timerএবং তার OnBootSec=বা OnStartupSec=

স্ক্রিপ্ট নিজেই এটি পরীক্ষা করতে হবে যে এটি ইতিমধ্যে আজ চালানো হয়েছিল কি না। এটি সহজে ব্যাশে প্রয়োগ করা যেতে পারে, উদাহরণস্বরূপ:

#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`

[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE

1

বুটের 10 মিনিটের পরে যদি আপনি ঝুলন্ত না হন তবে আপনি এটি করতে পারেন:

[Unit]
Description=...

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

OnCalendar=dailyPersisten=trueকমপক্ষে একটি মিস করা রান থাকলে বুটে এটি প্রতি মধ্যরাতে চালিত করে ।


0

স্পষ্টতই এই সমস্যাটি ভবিষ্যতের প্রকাশগুলিতে সম্বোধন করা হবে। অন্তত সিস্টেমেড-ডেভেল মেলিং তালিকায় এই ইমেল অনুসারে । যতক্ষণ না আপনি ক্রিজিসটফের প্রস্তাবিত হ্যাকিশ পথে যেতে হবে।

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