Fstab মাউন্ট পরে চালিত করতে systemd পরিষেবা সেট করুন ute


33

আমি কাজ করছি systemd .serviceস্ক্রিপ্ট শুরু অনুমিত হয় পর একটি হয়েছে CIFS নেটওয়ার্ক অবস্থান মাধ্যমে মাউন্ট করা /etc/fstabথেকে /mnt/বুট-আপ করুন।

স্ক্রিপ্টটি প্রথমে লঞ্চ হওয়ার জন্য একটি ওপেনভিপিএন নির্ভরতা স্ক্রিপ্টের জন্য অপেক্ষা করে, তবে আমি এটিও মাউন্টটি সম্পূর্ণ হওয়ার অপেক্ষায় থাকতে চাই।

/etc/systemd/system/my-daemon.service :

[Unit]
Description=Launch My Daemon
After=network.target vpn-launch.service
Requires=vpn-launch.service

আমি systemd.mountলাইনে যুক্ত করার চেষ্টা করেছি : After=network.target vpn-launch.service systemd.mountতবে এটি যে ফলাফলের প্রত্যাশায় ছিল তা দেয় নি।


আপনি যদি systemd-remount-fsআপনার Afterতালিকায় যুক্ত হন তবে এটি কাজ করে ?
এরিক রেনৌফ

উত্তর:


40

একটি হয়েছে CIFS নেটওয়ার্ক অবস্থান মাধ্যমে মাউন্ট করা /etc/fstabথেকে /mnt/বুট-আপ করুন।

না এটা না. এই অধিকারটি পান এবং বাকিগুলি স্বাভাবিকভাবেই পড়ে যায়।

মাউন্টটি একটি (উত্পন্ন) সিস্টেমযুক্ত মাউন্ট ইউনিট দ্বারা পরিচালিত হয় যা এর মতো কিছু নাম দেওয়া হবে mnt-wibble.mount। আপনি systemctl list-units --type=mountকমান্ডের আউটপুটে এর প্রকৃত নাম দেখতে পাবেন । আপনি অন্যান্য ইউনিটের সাথে ঠিক তেমনভাবে এটিকে দেখতে পারেন systemctl status

খুব সহজভাবে, তাহলে: আপনাকে মাউন্ট ইউনিট শুরু হওয়ার পরে আপনার ইউনিটটি শুরু করার আদেশ দিতে হবে।

এর পরে = নেটওয়ার্ক.তারেটে ভিপিএন-লঞ্চ.সর্বস্ব মন্ট-উইবলল.মাউন্ট

আরও পড়া



অনুসারীদের জন্য, "উইবল" কেবল একটি ছদ্ম নাম, "
ফুবার

17

দুঃখিত তবে আমি এখনও মন্তব্য করতে পারছি না।

জেডিবিপি যেমন বলেছে, আপনার ফাইল সিস্টেম মাউন্টে অর্ডার করা উচিত। আপনি মাউন্ট ইউনিটের নাম বা বিকল্প হিসাবে, আপনি (ইউনিট বিভাগে) ব্যবহার করতে পারেন:

RequiresMountsFor = / পরম / পথ / এর / মাউন্ট

পরিষেবাটি শুরুর আগে পথটিকে অ্যাক্সেসযোগ্য করার জন্য এই বিকল্পটি উপযুক্ত * .মাউন্ট ইউনিটগুলির উপর নির্ভরতা তৈরি করে। এটি সমস্ত সিস্টেমেড সংস্করণে নাও থাকতে পারে তবে আমি এটি গত 6 মাস বা তার বেশি সময় ধরে সেন্টোস 7 মেশিনে ব্যবহার করছি।


(এবং ভ্যানিলা systemd হল থেকে আপনার পার্থক্য এখানে আছেন ।) RequiresMountsFor=আদেশ সহকারে তার নিজস্ব সেট দিয়ে আসে। সঙ্গে তাহলে RedHat বাগ # 1088057 এবং ক্রিস Siebenmann হাতে আপনি তার উত্তর করতে সক্ষম হওয়া উচিত superuser.com/questions/988734 । এটিও এই প্রশ্নের একটি সিআইএফএস মাউন্ট। তবে জড়িত বিষয়টি হ'ল autoভাগ্যক্রমে।
জেডিবিপি

@ জেডিবিপি মন্তব্য করার জন্য আপনাকে ধন্যবাদ। আমি এই বৈশিষ্ট্যটির সাবধানতা এবং বিষয়গুলি সম্পর্কে অবগত ছিলাম না।
মিগুয়েলবার্নাদি

14

যদিও উভয় উত্তর সঠিক, আমি আলোচনায় আমার দুটি সেন্ট যুক্ত করতে চাই, কারণ যখন আমি এটি সন্ধান করেছি তখন কীভাবে এগিয়ে যেতে হবে তার কয়েকটি নির্দেশাবলী এবং উদাহরণগুলি আমি অনুপস্থিত ছিলাম।

  1. এতে ফাইল সিস্টেম যুক্ত করুন /etc/fstab
  2. টাইপ করুন mount -aযা fstab এ উল্লিখিত সমস্ত ফাইল সিস্টেমকে মাউন্ট করে
  3. সিস্টেমড ইউনিট যা দিয়ে উত্পন্ন হয়েছে তা দেখুন:

    systemctl list-units | grep '/path/to/mount' | awk '{ print $1 }'

    (এমন কিছু ফিরে আসা উচিত যা দিয়ে শেষ হবে .mount)
  4. ফাইলের After=বিবৃতিতে পাওয়া মাউন্ট-ইউনিট যুক্ত *.serviceকরুন

my-daemonবুট এ পরিষেবা শুরু করার উদাহরণ এখানে দেওয়া আছে তবে নেটওয়ার্ক প্রস্তুত হওয়ার পরে, একটি সিআইএফএসের অংশটি মাউন্ট করা হয় /mnt/cifs, এবং vpn-launchপরিষেবাটি শুরু হয়েছে:

/ Etc / fstab ফাইলের

//servername/sharename /mnt/cifs cifs defaults,some,other,options 0 0

দ্রষ্টব্য: আপনি nofailআপনার fstab বিকল্পগুলিতে যুক্ত করতে পারেন (যেমন কোনও বাহ্যিক ড্রাইভ ব্যবহার করার সময়)। অন্যথায়, ডিভাইস সংযুক্ত না থাকলে আপনার মেশিন বুট করবে না। দেখুন ArchWiki এর fstab ফাইলের নিবন্ধ


/etc/systemd/system/my-daemon.service

[Unit]
Description=Launch My Daemon
Requires=vpn-launch.service mnt-cifs.mount
After=network.target vpn-launch.service mnt-cifs.mount

[Service]
ExecStart=/path/to/my-daemon

[Install]
WantedBy=multi-user.target

বুট চালু হওয়ার সাথে সাথে পরিষেবাটি সক্ষম করতে ভুলবেন না: systemctl enable my-daemon

নোট করুন যে এটি অন্যান্য ফাইল সিস্টেমগুলির জন্যও কাজ করে (এনএফএস, এইচডিডি, ইত্যাদি)।

ইতিমধ্যে উল্লিখিত হিসাবে, উভয় উত্তর সঠিক এবং আমি প্রত্যেককে সেগুলি পড়তে উত্সাহিত করি তবে আমার জন্য কয়েকটি উদাহরণ আমার কিছুটা সময় বাঁচাতে পারত।

আপডেট (2019-06-25):

  • বাহ্যিক ড্রাইভগুলি ব্যবহার করার সময় বুট লক রোধ করতে fstab বিকল্প সম্পর্কিত একটি নোট যুক্ত করা হয়েছে
  • সিআইএফএস মাউন্টটি সফলভাবে মাউন্ট না করা অবস্থায় সূচনায় ব্যর্থ হওয়ার কারণ তালিকাতে যুক্ত mnt-cifs.mountহয়েছেRequires=my-daemon.service

কেবল পরিষ্কার করে বলতে গেলে, "mnt-cifs.mount" আপনার নির্দিষ্ট মাউন্ট-পয়েন্টের জন্য মাউন্ট ইউনিটের নাম systemctl list-units --type=mount?
smdvlpr

1

@ বিএম-বার্গমোট: আপনার নির্দেশের জন্য ধন্যবাদ যা আমাকে অনেক সাহায্য করেছে। আমার জন্য এটি ঠিক কাজ করছে, যদি আমি রাখি

After=network.target vpn-launch.service mnt-cifs.mount
Requires=vpn-launch.service mnt-cifs.mount

যদি আমি "আবশ্যক" এর ভিতরে "এমএনটি-সিআইপিএস.মাউন্ট" না রাখি (এবং এই ক্রমে) এটি রিবুট / স্টার্টআপের জন্য কাজ করে তবে ডিভাইসটি মাউন্ট না করা থাকলে পরিষেবাটি যাইহোক শুরু হয়। এটিকে অতিরিক্ত "" আবশ্যক "ভিতরে রাখার পরে পরিষেবাটি ডিভাইসটি মাউন্ট না করা থাকলে এটি শুরু করার আগে ডিভাইসটিকে মাউন্ট করে।


তুমি ঠিক. যদি মাউন্টটি ব্যর্থ হয় তবে আমার-ডেমন.সেবারিস যাইহোক শুরু করা হবে। After=শুধু আদেশ আদেশ। Requires=এটি বাধ্যতামূলক করে তোলে যে সিআইএফএস মাউন্ট অবশ্যই উপস্থিত থাকতে হবে (তার উপর সুফিয়ান ঘোরি উত্তর দেখুন )। আমি আমার উত্তর আপডেট করব।
বিএম-বার্গমোট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.