প্রারম্ভকালে 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.