এখন যেহেতু উবুন্টু রূপগুলি এবং পুদিনাটি সিস্টেমে চলে গেছে আমি উপরের ভিত্তিতে আমার পুরানো সমাধানগুলি কম সন্তুষ্টিজনক দেখতে পেয়েছি। এটি সিস্টেমেডের সাথে কীভাবে করা যায় তা অনুসন্ধান করার জন্য আমি ওয়েবের চারপাশে অনুসন্ধান করেছি এবং অন্যের জ্ঞানের সংমিশ্রণ এবং ব্লগস্পট.কম এ ব্লগ পোস্ট হিসাবে নথিভুক্ত করেছি এবং নীচের টিউটোরিয়ালটি রয়েছে।
সিস্টেমডের সাহায্যে আপনি নীচের টেমপ্লেটগুলি ব্যবহার করে আপনার স্ক্রিপ্টগুলিতে কল করতে এক বা দুটি ফাইল তৈরি করেন এবং কয়েকটি কমান্ড কার্যকর করেন। সহজ।
জিইউআই সংস্করণ
প্রথমে আপনি যে স্ক্রিপ্টগুলি প্রারম্ভকালে এবং / অথবা শাটডাউনে চালাতে চান তা তৈরি করুন। আমি .scopening_atstart এবং .scfullcopy_atend তৈরি করেছি।
তারপরে নিশ্চিত হয়ে নিন যে ফাইলগুলি ডান ক্লিক করে, বৈশিষ্ট্যগুলি নির্বাচন করে এবং নিশ্চিত হয়ে গেছে যে অনুমতিগুলির অধীনে, আপনি একটি প্রোগ্রাম হিসাবে ফাইলের নির্বাহের মঞ্জুরিকে টিক দিয়েছেন।
আমি যে দুটি ফাইল তৈরি করেছি তা একটি র্যামডিস্কের বিষয়বস্তু পপুলেশন এবং সংরক্ষণ করে। তারা পরিষেবাটি কাজ করছে তা প্রমাণ করার জন্য আমার হোম ডিরেক্টরিতে একটি ফাইলও তৈরি করে। তারা ফর্ম ছিল:
#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time
তারপরে আমি আমার ফাইল ম্যানেজারটিকে রুট হিসাবে খুললাম /etc/systemd/system
এবং একটি ফাইল স্টার্টআপ.সার্ভিস এবং একটি ফাইল সেভ-রমডিস্ক.সার্ভিস খুললাম এবং তৈরি করেছি। অবশ্যই আপনি নিজের নাম চয়ন করতে পারেন এবং জেনেরিক নামগুলিতে johns_start.service নামে একটি স্টার্টআপ ফাইল এবং johns_shutdown.service নামে একটি শাটডাউন ফাইল অন্তর্ভুক্ত থাকতে পারে। কেবল বিদ্যমান পরিষেবার নাম বাছাই করবেন না।
[Unit]
Description=Startup Applications
[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart
[Install]
WantedBy=multi-user.target
এবং
[Unit]
Description=Save Ramdisk to Wine drive C
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend
[Install]
WantedBy=multi-user.target
আমার জন্য আপনার এক্সিকিউটেবল স্ক্রিপ্টের পুরো পথটি প্রতিস্থাপন করে আপনি একই পরিষেবা ফাইলগুলি ব্যবহার করতে পারেন।
অবশেষে প্রত্যেকের জন্য কমান্ড প্রয়োগ করুন systemctl আপনার_ফায়াল_নাম সক্ষম করুন (তবে প্রত্যয় পরিষেবা ছাড়াই)। আমার প্রথম ছিলsystemctl enable startup
পরিষেবাগুলি শুরু করার জন্য কম্পিউটারটি পুনরায় বুট করুন। মাল্টি-ইউজার টার্গেটটি যখন প্রস্থানিত হবে তখন সিস্টেমডিটি মাল্টি-ব্যবহারকারীর টার্গেটে প্রবেশ করবে এবং স্টপ পরিষেবাটি কার্যকর করা হবে। বিভিন্ন অ্যাক্টিভেশন শর্ত সহ বিকল্প পরিষেবা ফাইলগুলি নীচে বর্ণিত হবে।
সি এল এল (কমান্ড লাইন) সংস্করণ
এই বিবরণটি ধরে নেওয়া হয় যে আপনি / হোম / জনের পরিবর্তে আপনার হোম ডিরেক্টরি থেকে পরিচালনা করেন, প্রয়োজন অনুযায়ী sudo ব্যবহার করুন এবং আপনার সম্পাদকের পছন্দ যেখানে আমি vim বা svim লিখি।
তৈরি করুন প্রথম লাইন দিয়ে আরম্ভ এবং বন্ধ শেল স্ক্রিপ্ট #!/bin/sh
এবং তাদের ব্যবহার এক্সিকিউটেবল করতে chmod +x my_new_filename
।
উপরের মতো দুটি ফাইল তৈরি করুন , বা এই উদাহরণস্বরূপ, স্টার্টআপ এবং শাটডাউন কার্যগুলি পরিচালনা করতে একটি ফাইল। আমি আমার হোম ডিরেক্টরিতে স্ক্রিপ্টগুলি সম্পাদন করব তবে @ ডন_ক্রিসটি স্ট্যাক এক্সচেঞ্জের কিছু বিকল্প দেখায় ।
vim /etc/systemd/system/start_and_stop.service
এবং ফাইলের সামগ্রীটিতে অনুলিপি করুন:
[Unit]
Description=Run Scripts at Start and Stop
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands #your paths and filenames
ExecStop=/home/john/.shutdown_commands
[Install]
WantedBy=multi-user.target
তারপরে পরিষেবাটি কমান্ড সহ সক্ষম করুন :
systemctl enable start_and_stop
এবং আপনার সিস্টেমটি পুনরায় বুট করুন যার পরে পরিষেবাগুলি সক্রিয় থাকবে। আদেশগুলি systemctl is-enabled start_and_stop
এবং systemctl is-active start_and_stop
আপনার নতুন পরিষেবাদি পর্যবেক্ষণে ব্যবহার করা যেতে পারে।
শাটডাউন করার জন্য ট্রিগার শর্তগুলি পরিবর্তন করা
উপরের ফাইলগুলি স্ক্রিপ্টগুলি চালনার জন্য একাধিক-ব্যবহারকারী পরিবেশের উন্মুক্ত বা ঘনিষ্ঠ ব্যবহার করে। নীচের ফাইলটি এর স্ক্রিপ্টগুলি শুরু করতে চারটি সম্ভাব্য শাটডাউন প্রক্রিয়া শুরু করে। পূর্ববর্তী লাইনে + ওয়ান্টডবাই লাইনটিতে লক্ষ্যগুলি যুক্ত করা বা অপসারণ আপনাকে সূক্ষ্ম পার্থক্য করতে দেয়:
এই পোস্টটির দ্বিতীয় উত্তরে এই ফাইলটি প্রস্তাব করা হয়েছিল তবে আমি ইনস্টল বিভাগটি যুক্ত না করা পর্যন্ত এটিকে চালাতে সক্ষম হয়েছি।
আবার, স্ক্রিপ্টটি সম্পাদনা করুন /etc/systemd/service/
এবং এটি ব্যবহার করে সক্ষম করুন systemctl enable your_file_name
। আমি যখন লক্ষ্যগুলি পরিবর্তন করেছি তখন আমি systemclt disable file_name
কমান্ডটি ব্যবহার করেছি এবং তারপরে এটি সক্ষম করে যা এটি লক্ষ্য ডিরেক্টরিতে সংযুক্ত করে। রিবুট করুন এবং পরিষেবাটি পরিচালনা করবে।
[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
# executed before the target state is entered
# Also consider kexec.target
[Service]
Type=oneshot
ExecStart=/home/john/.my_script #your path and filename
[Install]
WantedBy=halt.target reboot.target shutdown.target