স্ক্রিন কমান্ড দিয়ে init.d স্ক্রিপ্ট কাজ করে না


2

আমি এই সহজভাবে শুরু স্ক্রিপ্ট লিখেছেন:

SESSION_NAME="session1"
COMMAND="python /opt/aaa/manage.py runserver 192.168.1.1:4300"

case "$1" in
    start)
        screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"
        echo "session1 started"
        ;;
    stop)
        echo "Stopping session1"
        screen -S session1 -X quit
        echo "."
        echo "session1 stopped"
        ;;
    restart)
        echo "Restarting session1"
        screen -S session1 -X quit
        echo "."
        screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"
        echo "session1 has restarted"
        ;;
    *)
        echo "Usage: /etc/init.d/session1 {start|stop|restart}"
        exit 1
        ;;
esac
exit 0

কিন্তু যদি আমি /etc/init.d/startscript.sh শুরু করি, এটি কাজ করে না। পর্দা অধিবেশন চালানো হয় না। অনুগ্রহ করে আপনি কি আমাকে সাহায্য করতে পারেন? উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ।


যোগ করুন #! / Bin / bash -x
rjt

ধন্যবাদ, তবে আমি স্ক্রিপ্টের শীর্ষে এটি যুক্ত করেছি, কিন্তু পরিবর্তনটি শুধুমাত্র স্ক্রিপ্ট ধারণ করার জন্য লিখতে পারে যেমন: + SESSION_NAME = session1 + COMMAND = 'python /opt/aaa/manage.py রানারভার 192.168.1.1:4300 '
Mato

তুমি কি চেষ্টা করেছিলে /usr/bin/screen এবং /usr/bin/python (অথবা এই এক্সিকিউটেবল আছে যেখানেই)?
nickie

@ নিকি ধন্যবাদ কিন্তু এটি একই, এটা কাজ করে না ...
Mato

উত্তর:


0

সেবা সঙ্গে সমস্যা ব্যবহারকারী এবং tty হয়।

বুটআপে স্ক্রীন রান করার বিকল্প উপায়টি ব্যবহারকারীকে স্বয়ংক্রিয়ভাবে লগইন করতে হবে এবং তারপরে '~ / .screenrc' এ উইন্ডোজ এবং কমান্ডগুলির একটি পূর্বনির্ধারিত সেট দিয়ে স্ক্রীন চালু করুন।

লগইন এ যে পর্দায় পুনরায় সংযোগ।


ধন্যবাদ, আপনি আমার ক্ষেত্রে জন্য পর্দা সম্পাদনা সম্পাদনা সঙ্গে আমার কোন উদাহরণ দিতে পারেন?
Mato

0

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

এখানে স্ক্রিপ্টগুলির একটি উন্নত সংস্করণ রয়েছে, যে তথ্যটি আমি সাধারণত আমার স্ক্রিপ্টগুলিতে যোগ করি:

#!/bin/sh
NAME=session1
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SESSION_NAME="session1"
COMMAND="python /opt/aaa/manage.py runserver 192.168.1.1:4300"
LOGPATH="/var/tmp/session1.log"

case "$1" in
    start)
        screen -dmS "$SESSION_NAME" script -a --flush -c "$COMMAND" $LOGPATH
        echo "session1 started"
        ;;
    stop)
        echo "Stopping session1"
        screen -S session1 -X quit
        echo "."
        echo "session1 stopped"
        ;;
    restart)
        echo "Restarting session1"
        screen -S session1 -X quit
        echo "."
        screen -dmS "$SESSION_NAME" script -a --flush -c "$COMMAND" $LOGPATH
        echo "session1 has restarted"
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
        exit 2
        ;;
esac
exit 0

ধন্যবাদ, কিন্তু এটি session1.log তৈরি হয়নি ... :((
Mato

শুধু brainstorming: 1 / আপনি আছে script ইনস্টল? 2 / যখন আপনি সঠিক প্যাথন কমান্ডটি টাইপ করেন তখন আপনার স্টার্ট স্ক্রিপ্টটিতে এটি সঠিকভাবে চালানো হয়? 3 / আপনি কমান্ডটি ব্যবহার করার সময় "session1 শুরু করা" পাঠ্যটি প্রিন্ট করেছেন?
Maxime Biette

0

আমি সমস্যা আপনার সাথে মনে হয় $COMMAND পরিবর্তনশীল। কমান্ড নাম হতে হবে python এক্সিকিউটেবল, বাকি আর্গুমেন্ট হয়। কিন্তু, আপনি উদ্ধৃতি মধ্যে এটি করা হলে, screen মনে করে কমান্ডের নামটি সম্পূর্ণ স্ট্রিং এবং সেই নামের সাথে এক্সিকিউটেবল দেখায়।

এটা চেষ্টা কর:

COMMAND="/usr/bin/python /opt/aaa/manage.py runserver 192.168.1.1:4300"

case "$1" in
    start)
        screen -dmS "$SESSION_NAME" $COMMAND
        echo "$SESSION_NAME started"
        ;;
    ...

যেমন, চারপাশে উদ্ধৃতি ছাড়াই $COMMAND এবং ছাড়া (অপ্রয়োজনীয়) $ARGUMENTS পরিবর্তনশীল। এই কাজ করা উচিত.


0

অবশেষে আমি এই স্ক্রিপ্টটি ব্যবহার করেছি, কিন্তু আমি নতুন উইন্ডোতে কমান্ড সরিয়ে দিয়েছি - আমি কিভাবে একই স্ক্রীন সেশনতে স্বয়ংক্রিয়ভাবে নতুন উইন্ডো শুরু করতে পারি?


এটি একটি উত্তর নয় --- আমি জানি না এটা কি। এটি একটি ফলোআপ প্রশ্ন এবং যদি এটি আপনার প্রশ্ন থেকে শুরু হয় তবে আপনি কেন আপনার আসল প্রশ্ন সম্পাদনা করবেন না? তবুও, আপনি কি এতদূর উত্তর দিয়েছেন? তারা আপনার জন্য কাজ বা ব্যর্থ?
nickie

Originaly আমি উইন্ডোজ সঙ্গে এক পর্দা হিসাবে - আমি এটা আলাদা করা ছিল। কিন্তু সিপরেট সেশনের সাথে এটি করার সিদ্ধান্ত নিয়েছিলাম। আমি আমার স্ক্রিপ্ট তৈরি, যে কাজ করে না। কিন্তু এখানে পোস্ট করা উত্তর আমাকে সাহায্য করেনি, তাই আমি আমার শেষ প্রশ্ন থেকে স্ক্রিপ্ট সংশোধন করার চেষ্টা করেছিলাম। এখন এটা সঠিকভাবে কাজ করে।
Mato
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.