Yosemite এর প্রারম্ভে চালানোর জন্য শেল স্ক্রিপ্টগুলি কীভাবে পেতে হয়


20

স্টার্টআপ আইটেমগুলির জন্য সিস্টেম / লাইব্রেরীতে একটি ডিরেক্টরি রয়েছে যা আমি মনে করি: StartupItems

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

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

স্ক্রিপ্টটিকে রুট সুবিধাগুলির সাথে বা সুডোর সাথে কাজ করতে হবে, কিন্তু আমি আমি মনে করি যদি এটি সুডো ব্যবহার করে তবে একটি পাসওয়ার্ড কথোপকথন উপস্থাপন করা হবে বুট সময় বুট প্রক্রিয়া যে স্ক্রিপ্ট পায় যখন।

(আমি আমার উপায় খুঁজে বের করতে FreeBsd এবং লিনাক্স সঙ্গে যথেষ্ট অভিজ্ঞতা আছে টার্মিনালে, তবে এটি ম্যাক OSX তে প্রযোজ্য হিসাবে অপরিহার্য নয়)

উত্তর:


17

এটি করার এক উপায় স্ক্রিপ্টটিকে একটি লঞ্চড পরিষেবা প্রদান করা হবে:

স্বাভাবিক হিসাবে শেল স্ক্রিপ্ট তৈরি করুন। তারপর আপনি প্রারম্ভে এটি চালানোর জন্য একটি লঞ্চ সেবা করতে পারেন। যারা এ অবস্থিত /Library/LaunchDaemons। এই এক্সএমএল সম্পত্তি তালিকা বিন্যাসে হয়। আরেকটি তৈরি করুন এবং এটির মতো কিছু দিয়ে এটি তৈরি করুন:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.example.app</string>
        <key>ProgramArguments</key>
        <array>
            <string>/bin/sh</string>
            <string>/path/to/script</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <false/>
    </dict>
</plist>

পরিবর্তন com.example.app, /bin/sh এবং /path/to/script প্রয়োজনীয়.

সিস্টেম বুট করার সময় স্ক্রিপ্ট চালানো হবে। এটি খুব দ্রুত সঞ্চালিত হলে, আপনি স্ক্রিপ্টটি লিখতে এবং এটি সফল হওয়া পর্যন্ত যা করতে হবে তা করতে পারেন, অথবা এটি একটি অ-শূন্য ত্রুটি কোড দিয়ে প্রস্থান করে এবং এটির আগে সম্পত্তি তালিকায় যুক্ত করুন </dict> লাইন:

<key>KeepAlive</key>
<dict>
     <key>SuccessfulExit</key>
     <false/>
</dict>

ওএস এক্স লঞ্চ ডেমন এবং পরিষেবাদি সম্পর্কে আরো জানতে, আমি দেখছি এখানে তাদের তৈরি করার জন্য একটি চমৎকার দ্রুত রেফারেন্সের জন্য, অথবা এখানে কি launchd করতে পারেন একটি আরো ব্যাপক রেফারেন্সের জন্য।


আপনি এই plist নথি কল কি? এবং / path / to / script == / সিস্টেম / লাইব্রেরি / স্টার্টআপ আইটেম / স্ক্রিপ্ট আছে?
JeffK

1
প্রথম প্রশ্নের জন্য: প্লাস্টার নথির নামটি সাধারণত। তালিকা এক্সটেনশনের সাথে তালিকা তালিকাতে লেবেল কীটি সেট করা হয় (এই ক্ষেত্রে, "com.example.app")।
andonuts

1
দ্বিতীয় প্রশ্নের জন্য: এটি সঠিক, কিন্তু স্ক্রিপ্ট অন্যত্র সরানো উচিত।
andonuts

আপনার প্লাস্টার বিকৃত হয়। আপনি কি একটি প্রয়োজন: <key>Program</key> মান সঙ্গে <string>/bin/sh</string> এবং তারপর <key>ProgramArguments</key> শুধু মান আছে উচিত <string>/path/to/script</string>
Jon Brooks

প্রকৃতপক্ষে, খনি খুব ভুল: <key>ProgramArguments</key> একটি অ্যারে হতে হবে ..
Jon Brooks

16

কিছু সময় আগে আমি শুধু যে ক্রন ব্যবহৃত। আপনি এই মত একটি এন্ট্রি করতে পারেন

@reboot /path/to/my/script

আরো তথ্য এখানে

প্রথম পাঁচটি ক্ষেত্রের পরিবর্তে, আটটি বিশেষ স্ট্রিং প্রদর্শিত হতে পারে:

       string          meaning
       ------          -------@reboot ------@reboot
       @reboot         Run once, at startup.
       @yearly         Run once a year, "0 0 1 1 *".
       @annually       (same as @yearly)
       @monthly        Run once a month, "0 0 1 * *".
       @weekly         Run once a week, "0 0 * * 0".
       @daily          Run once a day, "0 0 * * *".
       @midnight       (same as @daily)
       @hourly         Run once an hour, "0 * * * *".

1
জানতে খুব সহজ!
geotheory

6
cron এই দিন ওএস এক্স এ এটি করার সঠিক উপায় নয়। পরিবর্তে LaunchAgent বা LaunchDeamon ব্যবহার করুন (চালু)। আরও তথ্যের জন্য: developer.apple.com/library/mac/documentation/MacOSX/Conceptual/... Although it is still supported, cron is not a recommended solution. It has been deprecated in favor of launchd.
CousinCocaine

4
cron তুলনায় কনফিগার করা অনেক সহজ launchd, যদিও। আমি কি বলতে চাচ্ছি তা দেখতে এই থ্রেডে দুটি উত্তর তুলনা করুন। cron একটি একক ফাইল, যেখানে একটি একক লাইন লাগে launchd আপনি স্ক্রিপ্ট চালানোর জন্য স্ক্রিপ্ট বর্ণনা করতে একটি স্ক্রিপ্ট প্রয়োজন।
Dannid

@ ড্যানিড ক্রন ডুপ্লিকেশন, সারি বাফারিং, এবং অন্যদের চালানোর জন্য সংবেদনশীল নয়। যদিও এই ক্ষেত্রে কার্যকর, এটি সবসময় একটি কঙ্কাল কী নয়, এবং এটি একটি নির্বোধ সমাধান নয়।
New Alexandria

Crontab উপায় ভাল। এটি ইউনিক্স বিশ্বের দ্রুত এবং নোংরা এবং দীর্ঘ প্রতিষ্ঠিত। আমি সম্পূর্ণরূপে এই @reboot শব্দ খনন।
macetw

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