যখন প্রক্রিয়াটি 10 ​​সেকেন্ডের চেয়ে বেশি সময় নেয় আপনি কীভাবে শাটডাউনে স্ক্রিপ্ট চালাতে আপস্টার্ট কনফিগার করব?


11

লিনাক্সের বিকাশ সম্পর্কে আরও জানতে আমি ভার্চুয়াল মেশিনে (ভার্চুয়ালবক্স) উবুন্টু ১১.১০ চালাচ্ছি। আমি আমার কাজ বাঁচাতে গিট সংগ্রহস্থল ব্যবহার করছি এবং ভার্চুয়াল মেশিন চালু না থাকাকালীন আমার কাজটি বান্ডিল করার জন্য এবং এটি ভাগ করে নেওয়া ফোল্ডারে সংরক্ষণ করার জন্য একটি স্ক্রিপ্ট লিখেছি।

আমি শাটডাউন করার আগে এই স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে চালনা করতে চাই যাতে ভিএম বন্ধ থাকলে আমার কাজ সর্বদা উপলব্ধ থাকে (বর্তমানে আমাকে স্ক্রিপ্টটি ম্যানুয়ালি চালাতে হবে)।

আমি জানি না এটি সম্পন্ন করার জন্য আপস্টার্টই সবচেয়ে ভাল উপায় কিনা তবে এটি একটি কনফিগারেশন যা আমি পরীক্ষা হিসাবে লিখেছি:

description     "test script to run at shutdown"

start on runlevel [056]

task

script
touch /media/sf_LinuxEducation/start
sleep 15
touch /media/sf_LinuxEducation/start-long
end script

pre-start script
touch /media/sf_LinuxEducation/pre-start
sleep 15
touch /media/sf_LinuxEducation/pre-start-long
end script

post-start script
touch /media/sf_LinuxEducation/post-start
sleep 15
touch /media/sf_LinuxEducation/post-start-long
end script

pre-stop script
touch /media/sf_LinuxEducation/pre-stop
sleep 15
touch /media/sf_LinuxEducation/pre-stop-long
end script

post-stop script
touch /media/sf_LinuxEducation/post-stop
sleep 15
touch /media/sf_LinuxEducation/post-stop-long
end script

ফলাফলটি হল যে কেবলমাত্র একটি স্পর্শ সম্পন্ন হয় (প্রাক-শুরুতে প্রথম স্পর্শ)। ঘুমের পরে কাজ করার জন্য একটির ছোঁয়া দেখতে আমার কী পরিবর্তন করতে হবে? অথবা এটি সম্পাদন করার আরও সহজ উপায় আছে?

আগাম ধন্যবাদ.

উত্তর:


7

ভুঁইফোড় ইন্ট্রো, Cookbook এবং সর্বোত্তম কার্যাভ্যাস একটি দুর্দান্ত ভুঁইফোড় কর্ম ও কাজ তৈরি ব্যবহারের কোড স্নিপেট সংখ্যা হয়েছে।

শাটডাউন প্রক্রিয়া পাকপ্রণালীর বিভাগে বলে /etc/init/rc.confচালানোর এবং কল করা হবে /etc/init.d/rc। পরিবর্তে এটি শেষ পর্যন্ত কল করবে /etc/init.d/sendsigs। সুতরাং আপনি যদি start on starting rcতখন আরসি এর আগে আপনার কাজটি সম্পাদন করে (এবং সাধারণত যে প্রক্রিয়াটি বন্ধ করে দেওয়া হবে সেগুলি) ms

ফাইল: /etc/init/test.conf

description "test script to run at shutdown"

start on starting rc
task
exec /etc/init/test.sh

ফাইল: /etc/init/test.sh

touch /media/sf_LinuxEducation/start
sleep 15
touch /media/sf_LinuxEducation/start-long

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

তিরিস, এটি কাজ করা উচিত। আমি আপনার / var / লগ / সিসলগটি রিবুটের পরে দেখার আগ্রহী, বিশেষত দেখার জন্য যদি পরীক্ষার প্রক্রিয়াটি জোর করে আপস্টার্ট দ্বারা হত্যা করা হয়েছিল।
স্প্যাম্যাপস

1
এই উত্তরের সর্বশেষ সম্পাদনাটি কাজ করে। সমস্যা শিশুটি দেখতে পুনর্বিবেচনার ইতিহাসটি পরীক্ষা করে দেখুন। আমার ধারণা আমার মন্তব্য করা উচিত ছিল যে আমি একটি সম্পাদনা করেছি (বা মন্তব্যটি সরিয়ে নতুন করে যুক্ত করা কি আরও সঠিক? কোন স্ট্যাকেক্সচেঞ্জ শিষ্টাচার আছে?)। সমস্যাটি শিশু কেন কাজ করে না তা জানতে আগ্রহী হব (যেহেতু ডকুমেন্টেশন বলছে এটি করা উচিত)।
তিরিস

Test.conf ফাইলটির অর্থ কী? আমি কি টেস্ট.কনফ নামে একটি ফাইল তৈরি করি, বা আমি এটি আরসি কোডফের সাথে যুক্ত করব?
heneryville

@heneryville test.confকেবল একটি এলোমেলো ফাইলের নাম। আপনি ঠিক হিসাবে সহজে ব্যবহার করতে পারে whatEverYouWant.conf। আপনার মন্তব্য এছাড়াও দেখায় যে আপনি উত্তরে উল্লিখিত "কুকবুক" পড়েন নি। আপনি যদি বিভাগে 4.2 দেখুন তবে কাজের কনফিগারেশন ফাইলটি আরও পুঙ্খানুপুঙ্খভাবে ব্যাখ্যা করা হয়েছে।
তিরিস

7

আমি মনে করি এটি আপস্টার্টের মাধ্যমে করা যাবে না , যেমন /etc/init.d/sendsigs লিপিটি, যা থামানো / পুনরায় আরম্ভ করার সময় আপস্টার্ট দ্বারা আহ্বান করা হয় , 10 সেকেন্ডের মধ্যে সমস্ত প্রক্রিয়া ( ) মেরে ফেলেছেkillall5 -9 এবং এটি সফল না হলেও এটি যায় সমস্ত কিছু আনমাউন্ট করার জন্য এবং শাটডাউন করার জন্য।

সবচেয়ে ভাল উপায়টি হবে মরিচা /etc/init.d স্টাইলের স্ক্রিপ্টগুলি ব্যবহার করা ।

উদাহরণ: /etc/init.d/ শাটডাউন_জব

#! /bin/sh
### BEGIN INIT INFO
# Provides:          shutdown_job
# Required-Start:    
# Required-Stop:     sendsigs
# Default-Start:
# Default-Stop:      0 6
# Short-Description: bla
# Description: 
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/lsb/init-functions

do_stop () {
    date > /root/s.log
    sleep 20
    date >> /root/s.log
}

case "$1" in
  start)
    # No-op
    ;;
  restart|reload|force-reload)
    echo "Error: argument '$1' not supported" >&2
    exit 3
    ;;
  stop)
    do_stop
    ;;
  *)
    echo "Usage: $0 start|stop" >&2
    exit 3
    ;;
esac

:

তারপরে স্ক্রিপ্টটি সক্রিয় করুন

sudo update-rc.d shutdown_job start 19 0 6 .

এটি স্ক্রিপ্টটি রান-লেভেল 0 এ 6 (শাটডাউন, রিবুট) এ প্রেরণাগুলির স্ক্রিপ্টের আগে রাখবে । এই নমুনা স্ক্রিপ্টটি তারিখটি রেকর্ড করবে, তারপরে ২০ সেকেন্ডের জন্য ঘুমাবে, আবার তারিখটি /root/s.log এ রেকর্ড করবে )

অধিক তথ্য:


আমি এই ধরণের কাজ করার সাথে মোটেই পরিচিত নই। এটি কাজ করার জন্য কোনও ভাল গাইড আছে? আরও তথ্যের সাথে সম্পাদনা করুন।
টিরিস

আমি এটি চেষ্টা করেছিলাম এবং এটি কার্যকর হয় না (ঠিক তেমন নয়)। আমি ডেট কমান্ডের ঠিক পাশে touch /media/sf_LinuxEducation/startএবং যোগ করেছি added touch /media/sf_LinuxEducation/start-longতারিখগুলি লগ হয়, কিন্তু ছোঁয়া স্পর্শ করা হয় না। স্ক্রিপ্টটি চালিত হওয়ার সময় যদি সেই ড্রাইভটি আনমাউন্ট করা হয় তা আমাকে অবাক করে তোলে। আমি মনে করি এনএন যুক্তির সাথে এটির কিছু থাকতে পারে, যদিও আমি নিশ্চিত নই যে এই যুক্তিটি কীভাবে কাজ করে (ম্যান পেজটি খুব মন বাঁকানো উপায়ে এটি ব্যাখ্যা করে)। এই যুক্তিতে কোন সংখ্যা (বা সংখ্যার জোড়) সেট করা উচিত তা আপনি কীভাবে জানবেন?
Tiris

আপনি /etc/rc6.dডিরেক্টরি তালিকাভুক্ত করার সময় স্ক্রিপ্টগুলি তাদের সংখ্যা অনুসারে কার্যকর করা হবে । সুতরাং 19 টি শাটডাউন স্ক্রিপ্টটি কোনও আনমাউন্টিংয়ের আগে (> 31) সম্পাদন করা উচিত ছিল। তবে কেন আপনার অনুমানের চেষ্টা করে /rootতার পরিবর্তে কোনও ফাইল স্পর্শ করবেন না?
ব্যবস্থা করুন

দিরের দিকে /etc/rc6.dতাকানো থেকে বোঝা যায় যে ভাগ করা ফোল্ডারগুলি K70vboxaddস্ক্রিপ্টের সাথে মাউন্ট / আনমাউন্ট করা হচ্ছে । এনএন আর্গুমেন্ট (আমার স্ক্রিপ্টের জন্য) পরিবর্তন করে আমার স্ক্রিপ্টটি ভিবি ভাগ করা ফোল্ডারগুলির আনমাউন্টের আগে চালিত হবে? আমি আজ এটি পরে চেষ্টা করব।
তিরিস

ভাল যে কাজ করে না। আপডেট: কমান্ডের touch /root/startআগে আমি একটি যুক্ত করেছি sleep 20এবং কোনও ফাইল তৈরি হয় না। আমি জানি না কেন কোথায় এটি শুরু করতে হবে। তারিখগুলি আনন্দের সাথে /root/s.logফাইলটিতে যুক্ত হয় কেন আমি কোনও ফাইল স্পর্শ করতে পারি না?
তিরিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.