বুট এ / var / রান এর অধীনে ডিরেক্টরি তৈরি করুন


39

আমার একটি ডেমন ছিল যা ডিমন /var/runব্যবহারকারীকে লেখার অনুমতি দিয়ে পিআইডি ফাইলের জন্য নিজস্ব ডিয়ারের দরকার পড়ে ।

আমি খুঁজে পেয়েছি যে আমি এই আদেশগুলি দিয়ে এই দির তৈরি করতে পারি:

# mkdir /var/run/mydaemon

তারপরে আমি এর মালিকানাটি ব্যবহারকারীর / গোষ্ঠীতে পরিবর্তন করতে পারি যার অধীনে আমি প্রক্রিয়াটি চালাতে চাইছিলাম:

# chown myuser:myuser /var/run/mydaemon

আমি যখনই রিবুট ইস্যু করি তখন এই দিরটি হবে! প্রতিবার মেশিন বুট করার সময় আমি এই দিরটিকে কীভাবে তৈরি করব?

উত্তর:


56

সিস্টেমেড ডিরেক্টরি তৈরির জন্য দুটি বিকল্প, সাধারণত RuntimeDirectoryআপনার পরিষেবার ইউনিট ফাইলটিতে একটি ঘোষণা করা সবচেয়ে সহজ :

RuntimeDirectory=, RuntimeDirectoryMode= ডিরেক্টরি নামের একটি তালিকা নেয়। যদি সেট করা থাকে তবে নির্দিষ্ট /runইউনিটগুলির দ্বারা এক বা একাধিক ডিরেক্টরিগুলি ইউনিট শুরু হওয়ার পরে নীচে (সিস্টেম পরিষেবাদির জন্য) বা $ XDG_RUNTIME_DIR (ব্যবহারকারী পরিষেবাদির জন্য) তৈরি করা হবে, এবং ইউনিটটি বন্ধ হওয়ার পরে অপসারণ করা হবে। ডিরেক্টরি উল্লেখিত এক্সেস মোড থাকবে RuntimeDirectoryMode=, এবং ব্যবহারকারী মালিকানায় যেতে হবে এবং গ্রুপ উল্লেখিত User=এবং Group=। ইউনিটের এক বা একাধিক রানটাইম ডিরেক্টরি পরিচালনা করতে এবং ডেমন রানটাইমের সাথে তাদের জীবদ্দশায় বাঁধতে এটি ব্যবহার করুন। নির্দিষ্ট ডিরেক্টরি নাম অবশ্যই আপেক্ষিক হতে হবে এবং এতে একটি "/", অর্থাত্‍ তৈরি বা অপসারণের জন্য অবশ্যই সাধারণ ডিরেক্টরিগুলি উল্লেখ করতে হবে This বিশেষত সুবিধাগুলির অভাবের কারণে চালানো / চালিত রানটাইম ডিরেক্টরিগুলি তৈরি করতে পারে না এমন অনিয়মযুক্ত ডিমনগুলির জন্য এবং রানটাইম ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে ব্যবহারের পরে পরিষ্কার হয়ে গেছে তা নিশ্চিত করার জন্য এটি দরকারী।

বা রানটাইম ডিরেক্টরিগুলির জন্য আরও জটিল বা ভিন্ন কনফিগারেশন বা আজীবন গ্যারান্টি দরকার, tmpfiles.dআপনার প্যাকেজটি একটি ফাইল ফেলে এবং ব্যবহার করুন /usr/lib/tmpfiles.d/mydaemon.conf:

 #Type Path            Mode UID      GID    Age Argument
 d     /run/mydaemon   0755 myuser myuser   -   -

আমি দ্বিতীয়টি ব্যবহার করেছি কারণ প্রকৃত ডেমনটি ব্যবহার করে systemd-sysv-generatorএবং আমার কাছে সপ্তাহের জন্য পর্যাপ্ত শিক্ষণীয় বাঁক রয়েছে। ঠিক সেই একটি .conf ফাইল এবং সেই এক লাইন। এখনই ভাল
লাগছে

আমি ইতিমধ্যে আধুনিক আমার সংজ্ঞায়িত ছিল /usr/lib/tmpfiles.d/php7.3-fpm.confএবং /usr/lib/tmpfiles.d/php7.2-fpm.confএবং এটি এখনও তৈরি করে না /run/phpনির্দেশিকা।
মার্থি

3

আমি একটি পরিষেবা তৈরি করেছি যা শুরুতে দিরকে পরিণত করবে:

vim /etc/systemd/system/mydaemon-helper.service

বিষয়বস্তু /etc/systemd/system/mydaemon-helper.service:

[Unit]
Description=MyDaemon Helper Simple Service
After=network.target

[Service]
Type=simple
ExecStartPre=-/usr/bin/mkdir /var/run/mydaemon
ExecStart=/usr/bin/chown myuser:myuser /var/run/mydaemon
Restart=on-abort


[Install]
WantedBy=multi-user.target

তারপরে আমি এই পরিষেবাটি শুরু করেছি:

systemctl start mydaemon-helper

systemctl status mydaemon-helper

আউটপুট:

[root@alpha etc]# systemctl status mydaemon-helper.service
● mydaemon-helper.service - MyDaemon Helper Simple Service
   Loaded: loaded (/etc/systemd/system/mydaemon-helper.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

May 28 20:53:50 alpha systemd[1]: Starting MyDaemon Helper Simple Service...
May 28 20:53:50 alpha systemd[1]: Started MyDaemon Helper Simple Service.

শেষ পর্যন্ত আমি সিস্টেমটিকে এটি শুরুতে লোড করতে বলেছিলাম:

systemctl enable mydaemon-helper


ঠিক আছে, আমি অনুভব করি যে আমি এই জাতীয় ঘটনাটি বিবেচনা করে আমার প্রশ্নে এটি করা উচিত ছিল। আমি যদিও শিখছি - আপনাকে বলছি ধন্যবাদ!
ব্যবহারকারীর 24601

2
না, একটি উত্তর তৈরি করা সঠিক জিনিস ছিল, যাতে লোকেরা এটিতে মন্তব্য করতে পারে এবং এটি আপনার প্রশ্নকে বিশৃঙ্খলা করে না। আপনার নিজের প্রশ্নের উত্তর দেওয়ার জন্য সুস্পষ্টভাবে উত্সাহ দেওয়া হয়েছে। এবং আপনার উত্তরটিও ভুল নয়, এটি করার আরও অনেক ভাল উপায় রয়েছে, তাই আইএমওটি আপনাকে হ্রাস করা উচিত হয়নি। এটিও উত্সাহিত করা উচিত নয়। :)
ব্রায়ান লারসেন

2
যদিও RuntimeDirectoryএই কাজ করার একটি ভাল উপায় নেই এখন , আমি systemd হল এর একটি পুরোনো সংস্করণ (208) যেখানে যে নির্দেশ না থাকে সাথে একটি সার্ভার গাড়ীতে আঘাত তাই এই উত্তর শুধুমাত্র কার্যসংক্রান্ত নেই।
কিউবারিককে

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