বাশ স্ক্রিপ্ট: একটি স্ক্রিন সেশন তৈরি করুন এবং এতে একটি কমান্ড প্রয়োগ করুন


2

আমি একটি বাশ ফাইল লিখতে চাই, যা একটি স্ক্রিন সেশন শুরু করে এবং ভিতরে একটি কমান্ড চালায়।

সমস্যাটি হ'ল এটি প্রথমে একটি অধিবেশন তৈরি করে এবং ম্যানুয়ালি সেশন থেকে বেরিয়ে গেলে এটি পরবর্তী কমান্ডটি কার্যকর করে। সেশনের অভ্যন্তরে কমান্ড কার্যকর করার কোনও উপায় আছে কি?

এটি এখন পর্যন্ত আমার কোড:

#!/bin/bash
screen -S test
python3 test.py

উত্তর:


2

স্ক্রিন সেশনের ভিতরে চলতে আপনার কমান্ডটি পাস করতে হবে। আপনি সরাসরি কমান্ডটি পাস করার মাধ্যমে, বা কোনও স্ক্রিপ্ট কল করে যা আপনি যা চান আদেশ চালায়।

screen -S test "python3 test.py"

আপনি যদি এই পদ্ধতিটি ব্যবহার করেন তবে মনে রাখবেন যে কমান্ড ( python) এবং এতে প্রদত্ত আর্গুমেন্ট test.pyউভয়ই স্পিচ চিহ্নের মধ্যে রয়েছে ".." - আপনি যদি যুক্তিগুলি নির্দিষ্ট করে যা নির্দিষ্টভাবে ফর্ম্যাট করার জন্য বক্তৃতা চিহ্নগুলি প্রয়োজন হয় তবে এটি জটিল হয়ে উঠতে পারে এবং এটি সম্ভবত নীচের পদ্ধতিটি ব্যবহার করা সহজ।

screen -S test /home/user/test.sh

যেখানে টেস্ট.শ / হোম / ইউজার / এ রয়েছে, এক্সিকিউটেবল ( chmod +x ./test.py) এবং এতে থাকে:

#!/bin/sh
python3 test.py

দ্বিতীয় উপায়টির সুবিধা হ'ল স্ক্রিপ্টে আপনি যতগুলি কমান্ড চান, সেগুলি একের পর এক চলবে।

আপনার কার্যের ব্যাকগ্রাউন্ড ব্যবহার করে 'একই সময়ে' একাধিক কমান্ড চালানো যেতে পারে:

#!/bin/sh
# All 3 will run at the same time
python3 test.py &
python3 test1.py &
python3 test2.py &

কিছু অতিরিক্ত চালাক কৌশল এসএফ-তে অনুরূপ প্রশ্নে পাওয়া যেতে পারে , এবং একটি চূড়ান্ত বিষয় লক্ষণীয় যে এই সমস্ত পদ্ধতিগুলির সাথে স্ক্রিন সেশনটি নিজেই আপনার প্রোগ্রাম / স্ক্রিপ্ট থেকে বেরিয়ে আসার পরে বন্ধ হয়ে যাবে। আপনি যদি এটি এটি না করতে চান তবে আপনি বাশ সেশনটি সম্পাদন করতে চান যা স্ক্রিপ্টটি কল করে এবং তারপরে বাশ সেশনে ফিরে আসে - এর মতো screen -S test "someCommand; bash"


0

এটি -X যুক্তির সাহায্যে অর্জনযোগ্য। প্রথমে আপনি একটি অধিবেশন তৈরি করুন এবং তারপরে আপনি স্ক্রিপ্টটি কার্যকর করতে কমান্ডটি প্রেরণ করুন:

$ echo "echo Hello world > /tmp/foo" > /tmp/myscript.sh; chmod a+x /tmp/myscript.sh
$ screen -S mysession -d -m bash
$ screen -r mysession -X stuff "/tmp/myscript.sh"$(echo -ne '\015')
$ cat /tmp/foo 
Hello world

"স্টাফ" কমান্ড টার্মিনালে টেক্সট পেস্ট করার অনুকরণ করে। ইকো-কমান্ড হিটিং রিটার্ন অনুকরণ করে। কমান্ড প্রেরণ সম্পর্কে ভাল ব্লগ-পোস্ট: https://theterminallife.com/sending-commands-into-a-screen-session/

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