GNU স্ক্রিন সহ একটি প্রোগ্রাম চালান এবং সঙ্গে সঙ্গে এর পরে আলাদা করুন after


27

আমি সিস্টেম স্ক্রিনে জিএনইউ স্ক্রিন সেশনগুলিতে প্রোগ্রাম (গুলি) শুরু করতে পারে এমন কোনও স্ক্রিপ্ট কীভাবে লিখব তা চেষ্টা করার চেষ্টা করছি। আমি এটি চেষ্টা করছি:

#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \

সেশন ইতিমধ্যে পৃথক হওয়ার কারণে কমান্ড ক্যান্ট কার্যকর করা যাবে? আমার কেবলমাত্র প্রয়োজনটি হল পর্দার সেশনে কমান্ড চালানো এবং এই সেশনটি তাত্ক্ষণিকভাবে বিচ্ছিন্ন করা।

উত্তরের জন্য ধন্যবাদ, তবে এখন আমি আরও একটি সমস্যার মুখোমুখি হয়েছি। আমার "প্রোগ্রাম এবং প্রোগ্রাম 2" এর জন্য কিছু ভেরিয়েবল রাখার পরে স্ক্রিপ্ট কাজ করা বন্ধ করে দেয়। এটার মতো কিছু:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg

কোনও কারণে "-f config.cfg" উপেক্ষা করা হয়েছে। আমি কমান্ড উদ্ধৃত করার চেষ্টা করা হয়েছে এবং খুব একটা সাহায্য না।


-Xবিকল্প কেন ?
এনজোটিব

উত্তর:


34

আপনি কি আসলেই \লাইনের শেষ প্রান্তটি রেখেছিলেন ? যদি তা না হয় তবে সেগুলি সরিয়ে দেওয়ার চেষ্টা করুন - তারা নিম্নলিখিত চরিত্রটি থেকে পালাতে পারেন।

এছাড়াও, সহায়তাগুলি ফেলে দেওয়া -Xআমার জন্য সেটআপটিকে কাজ করতে সহায়তা করে, উদাহরণস্বরূপ:

screen -S test -d -m -X touch /tmp/test

ব্যর্থ হয় No screen session found, তবে:

screen -S test -d -m touch /tmp/test

ঠিকভাবে কাজ করে. এই হিসাবে আমি সন্দেহ করি যে নিম্নলিখিতগুলি আপনার পক্ষে কাজ করবে:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

মনে রাখবেন, বুট করার সময় আপনি এটি চালালে, specific কোনও নির্দিষ্ট ব্যবহারকারী হিসাবে লগ ইন করার পরে the হোমটি একই হয় না। আপনার যদি এটি কোনও নির্দিষ্ট ব্যবহারকারী হিসাবে চালনার দরকার হয় তবে আপনাকে suএটিকে সেই ব্যবহারকারী হিসাবে চালানোর জন্য পছন্দগুলি ব্যবহার করতে হবে এবং পুরো পথটি নির্দিষ্ট করে দেওয়া কোনও দ্বিধা দূর করবে:

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

অথবা, আপনি উপরের পুরো স্ক্রিপ্টটিকে কল করবেন su - username /path/to/your/script


উত্তরের জন্য ধন্যবাদ, তবে এখন আমি আরও একটি সমস্যার মুখোমুখি হয়েছি। আমার "প্রোগ্রাম এবং প্রোগ্রাম 2" এর জন্য কিছু ভেরিয়েবল রাখার পরে স্ক্রিপ্ট কাজ করা বন্ধ করে দেয়
TbMa

এটি: ফোল্ডার / .pgram শেষ হয়ে গেলে, স্ক্রিন সেশনটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় তবে আমিscreen -S test -d -m $HOME/folder/folder/.program প্রায় ঠিক যা খুঁজছি তা করে almost প্রোগ্রামটি শেষ হওয়ার পরেও স্ক্রিন সেশন (শেল) চালিয়ে যাওয়ার কোনও উপায় আছে কি? সম্ভবত প্রোগ্রামটি একচেটিয়াভাবে চালনার পরিবর্তে, একটি শেল শুরু করুন যা প্রোগ্রাম শুরু করে এবং তারপরে শেল প্রম্পটে ফিরে আসে, বা কিছু?
রকেটনাটস

4

ক্রি হাভোকের মতো উল্লেখ করা হয়েছে, আপনি প্রোগ্রামটি ঠিক কমান্ড-লাইনে রাখতে পারেন।

আপনি যদি সত্যিই -X বিকল্পটি ব্যবহার করতে পারেন তবে ক) আপনাকে 'স্ক্রিন' কমান্ড নির্দিষ্ট করতে হবে এবং খ) সেশনের আগেই উপস্থিত থাকা প্রয়োজন।

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2

আপনি যদি প্রোগ্রামটি কমান্ড-লাইনে রেখে দেন, প্রোগ্রামটি প্রস্থান করার পরে পর্দাটি বের হয়; আপনি কনসোল আউটপুট দেখতে চাইলে স্ক্রিনটি উন্মুক্ত রাখতে আমি একটি কমান্ড-লাইন পতাকা দেখতে পাচ্ছি না। আপনি যদি স্ক্রিনটি শুরু করেন এবং কমান্ডগুলি আলাদাভাবে প্রেরণ করেন, যেমন এখানে দেখানো হয়েছে, আপনার sleepকমান্ড প্রেরণের আগে সেশন শুরু করার জন্য পর্দার সময় দেওয়ার জন্য সুস্পষ্ট আদেশের প্রয়োজন হতে পারে ।
চিনাসৌর

এই উত্তরটি stackoverflow.com উত্তরের সাথে অনুরূপ যা একই প্রশ্নের উত্তর দেয় । আমি @ ক্রাইহ্যাভকের চেয়ে এই উত্তরটিকে বেশি পছন্দ করি কারণ এই উত্তরটি আপনার ব্যবহারকারীর ডিফল্ট শেলের ভিতরেই আপনার প্রোগ্রামটি কার্যকর করে (@ ক্রাইহভোক আপনার প্রোগ্রামটি প্যারেন্ট শেল ছাড়াই চালায় যাতে প্রোগ্রামটি মারা যায় বা আপনি যখন স্ক্রিন সেশনটি অবিলম্বে বন্ধ করে দেন)
ট্রেভর বয়ড স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.