প্রারম্ভের 5 মিনিট পরে আমি কীভাবে স্ক্রিপ্ট চালাব?


7

আমার বেশ কয়েকটি আরআর ওয়েবসাইটগুলি আমার ওয়েবসারভারে চলছে এবং শুরুতে আমার রুবি স্ক্রিপ্টটি চালানো দরকার।

সুতরাং, আমি /etc/init.d ডাইনিতে একটি রুশ প্রক্রিয়া কল করে একটি বাশ স্ক্রিপ্টটিকে থামিয়ে দিয়েছি। দুর্ভাগ্যজনকভাবে যে রুবি প্রক্রিয়াটিতে এমন কিছু স্টাফ দরকার যা এখনও লোড হয়নি।

আমি sleep 300আমার বাশ স্ক্রিপ্টের শুরুতে একটি যুক্ত করার চেষ্টা করেছি, তবে এটি সত্যিকার অর্থে সহায়তা করে না কারণ এটি এসএসএস, অ্যাপাচি ইত্যাদির মতো স্টার্টআপকেও প্রভাবিত করে ...

এছাড়াও, আমি শুরুতে সমস্ত রুবি লাইব্রেরি লোড করতে চাই না, কারণ এটি বুটের সময়কে ধীর করে দেবে।

উত্তর:


10

sleep 300 যাওয়ার উপায়, তবে আপনাকে এটি এমন একটি ফাংশনে রাখতে হবে যা আপনি অবিচ্ছিন্ন বলবেন:

myscript()
{
    sleep 300

    # do what you want
}

myscript &

# continue with other things

6

পাঁচ মিনিট ঘুমানো বেশ অস্থির হ্যাক। বুট শৃঙ্খলে পরে যদি কোনও কিছু শুরু করতে অস্বাভাবিক দীর্ঘ সময় নেয় তবে কী হবে? এবং আপনি কেন আপনার সিস্টেমটি বুট করার জন্য প্রয়োজনীয় সময়ের চেয়ে বেশি সময় নিতে চান?

এটা করতে সঠিক ভাবে আপনার আরম্ভের স্ক্রিপ্টটি রান করা হয় পরে কাপড় উপর নির্ভর করে। আপনি কীভাবে এটি করেন ডিস্ট্রসের মধ্যে পার্থক্য।

দেবিয়ানতে আপনি স্ক্রিপ্ট শিরোনামে উল্লেখ করেছেন যে আপনার স্ক্রিপ্টের কী নির্ভরতা রয়েছে: এখানে /etc/init.d/READMEদেবিয়ান হুইজির একটি উদাহরণ রয়েছে :

# Required-Start:    $remote_fs $syslog

অন্যান্য সিস্টেমে আপনি সাধারণত /etc/rc?.d/ফোল্ডারের কোনও একটিতে ফাইল নামের কোথাও একটি নম্বর দিয়ে স্ক্রিপ্টটির নাম দিন । এই জাতীয় ডিগ্রোগুলিতে কেবল স্টাফের উপর নির্ভর করে তার চেয়ে বেশি সংখ্যক দিন।


কেন এটি অস্থির হবে, ঘুম এমনকি 5mসিনট্যাক্স সরবরাহ করে। আমি স্বীকার করি নির্ভরতাগুলি যাওয়ার উপায়, যদিও পাঁচ মিনিটেরও বেশি সময় লাগে এমন বুটগুলি সম্ভবত দেখানো উচিত এবং রআর স্ক্রিপ্ট ব্যর্থ হওয়াই ভাল মনোযোগের দিকে নজর দেওয়া যায় (তবে সঠিক পথে নয়)।
তামারা উইজসম্যান

1
এটি অস্থির কারণ সাধারণত বাগ সংশোধন করতে অপারেশনগুলিতে বিলম্ব করা একটি সামঞ্জস্য সমস্যার ইঙ্গিত দেয় এবং আপনার সিস্টেমটি ধীর / দ্রুত না হওয়া পর্যন্ত একটি বিলম্ব যুক্ত করা কাজ করবে।
AsTeR

0

আমি ভাবছি যদি আপনি অন্য থ্রেড শুরু করতে পারেন এবং থ্রেডটি প্রথম যে কাজটি করে 300 ঘুমাই sleep তবে এটি স্ক্রিপ্টটিকে কল করবে যা আপনি init.d থেকে ডাকতেন call

আমি মনে করি এটি কিছু হবে

newscript &

0

ফাইল তৈরি করুন: delay

#!/bin/bash
# $1:delay time(s)
# $2:command
# example:
#    delay 10 "conky -d"

sleep $1
exec $2

তারপর

chmod a+x delay
delay 10 "xxx"

ভিতরে রাখো /etc/rc.local

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.