দ্রষ্টব্য: সংক্ষেপে সূচিত প্রশ্ন নীচে পাওয়া যাবে।
আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা বাইরের ইউএসবি ড্রাইভে আমার ফাইলগুলির একটি ব্যাকআপ তৈরি করে। আমি যে নতুন ডেটা তৈরি করেছি তার উপর নির্ভর করে এটি কার্যকর করতে কিছুটা সময় নিতে পারে। আমি এটি সিস্টেমের প্রতিটি শাটডাউনে স্বয়ংক্রিয়ভাবে চালাতে চাই।
আমি ফেডোরা 23 ব্যবহার করছি সর্বশেষ আপডেট (সিস্টেমড) সহ with
আমি এটি বেশ কয়েকটি উপায়ে অর্জন করার চেষ্টা করেছি, কিন্তু আমি এটি কাজে লাগাতে পারি না।
স্টপএেক্সেক দিয়ে দীর্ঘ প্রক্রিয়া চলছে
autobackup.service:
[Unit]
Description=Slow backup script
Requires=local-fs.target
[Service]
ExecStart=/bin/true
ExecStop=/etc/systemd/system/do_backup.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multiuser.target
আমি এটি দিয়ে সক্রিয় করেছি systemctl enable autobackup.service
এবং এটি দিয়ে শুরু করেছি systemctl start autobackup.service
।
আমার বুট লগের অংশ ( journalctl -b-1
):
Dez 22 17:45:27 localhost systemd[1]: Unmounted /mnt/BACKUP.
Dez 22 17:45:27 localhost do_backup.sh[4296]: At subvol /home/BACKUP.2015_12_22-17_45_25
Dez 22 17:45:27 localhost do_backup.sh[4296]: ERROR: parent subvol is not reachable from inside the root subvol.
Dez 22 17:45:27 localhost do_backup.sh[4296]: At snapshot BACKUP.2015_12_22-17_45_25
Dez 22 17:45:27 localhost do_backup.sh[4296]: ERROR: failed to dump stream. Broken pipe
Dez 22 17:45:27 localhost systemd[1]: autobackup.service: Control process exited, code=exited status=1
Dez 22 17:45:27 localhost systemd[1]: Stopped Slow backup script.
Dez 22 17:45:27 localhost systemd[1]: autobackup.service: Unit entered failed state.
মনে রাখবেন যে আমি এর মধ্যে কিছু সংক্ষিপ্ত করে দেখিনি, এটি স্ক্রিপ্টটি শুরু হওয়ার ঠিক আগেই আনমাউন্ট করা / এমএনটি / ব্যাকআপ, মজার মজাদার ঘটনা ..
শাটডাউন.টারাগেটের আগে
autobackup.service:
[Unit]
Description=Slow backup script
DefaultDependencies=no
Before=shutdown.target
[Service]
ExecStart=/etc/systemd/system/do_backup.sh
Type=oneshot
systemctl edit shutdown.target
[Unit]
Requires=autobackup.service
আউটপুট মূলত একই।
সমস্যাটি
আমি মনে করি সমস্যাটি হ'ল সিস্টেমেড আমার স্ক্রিপ্টটি উভয় ক্ষেত্রেই অন্যান্য সমস্ত শাটডাউন স্ক্রিপ্টগুলির সাথে সমান্তরালে শুরু করে, যা ব্যাকআপ আনমাউন্ট করে এবং পাইপ অবকাঠামো নিষ্ক্রিয় করে তোলে (অন্য কোনও ত্রুটি আমি মাঝে মধ্যে পেয়েছিলাম, যখন আনমাউন্টটি খুব দ্রুত ছিল না)।
প্রশ্নটি
আমি প্রথমে আমার স্ক্রিপ্টটি শাটডাউন শুরু করার জন্য কীভাবে সিস্টেমে শিখতে পারি, এটি বের না হওয়া পর্যন্ত অপেক্ষা করুন এবং তারপরে বাকী শাটডাউন স্ক্রিপ্ট / লক্ষ্যগুলি / ইউনিটগুলি / যাই হোক না কেন শুরু করুন?