প্রারম্ভকালে init.d স্ক্রিপ্টগুলির জন্য পাথ ইস্যু


8

আমার একটি সাধারণ স্ক্রিপ্ট রয়েছে যা একটি ইউনিকর্ন উদাহরণ শুরু করে (উবুন্টু 12.04LTS এ)।

#!/bin/sh

case "$1" in
    start)
       echo "starting"
       cd /path && bundle exec unicorn -c /path/config/unicorn.rb -D -E production
      ;;
     stop)
      echo "Stopping Unicorn Instances"
      kill `cat /tmp/unicorn.pid`
    ;;
    restart)
    echo "sending USR2 to all unicorns"
    kill -s USR2 `cat /tmp/unicorn.pid`
    ;;
esac
exit 0

এটি যখন ডাকা হয় তখন এটি সঠিকভাবে আচরণ করে: /etc/init.d/unicorn_boot.sh start

আমি এটি বুট শুরু করতে চাই, তাই আমি দৌড়ে: update-rc.d -f unicorn_boot.sh defaults

আমি এখন পুনরায় বুট করার সময় আমি নিম্নলিখিত ত্রুটিটি পাই:

/etc/rc2.d/S20unicorn_boot.sh: 10: /etc/rc2.d/S20unicorn_boot.sh: bundle: not found

আমি bundleকমান্ডটি পরীক্ষা করে দেখেছি এবং এটি কমান্ডের /usr/local/binজন্য ইনস্টল করা আছে ruby।

এটি প্রদর্শিত হয় যে বুটে PATHএখনও অন্তর্ভুক্ত নেই /usr/local/bin। আমি এটা কিভাবে ঠিক করবো?

উত্তর:


9

ইনস স্ক্রিপ্টগুলি যথাযথ পথ নির্ধারণের জন্য দায়বদ্ধ। $PATHস্ক্রিপ্টের শীর্ষে ভেরিয়েবল সেট করুন :

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

ঠিক আছে ধন্যবাদ. তা জানতাম না। এটা এখন ঠিক!
— পিটারডকে

বিকল্পভাবে আপনি PATH="$PATH:/usr/local/bin"সম্পূর্ণরূপে AT PAT ভেরিয়েবলকে ওভাররাইড না করে আপনার প্রয়োজনীয় পাথগুলি ভ্যারিয়েবলের সাথে যুক্ত করতে সক্ষম হবেন ।
— জেসি

বাইরের $ PATH এর উপর নির্ভর করা একটি সুরক্ষা ঝুঁকি। একটি বিদ্যমান पथ সংযোজন করবেন না! আপনার প্রয়োজনীয় সঠিক তালিকাটি তৈরি করুন।
— ব্রেন্ডন বাইার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.