স্ক্রিনে স্ক্রিপ্ট চালান


25

আমি একটি বিচ্ছিন্ন স্ক্রিনে বাশ স্ক্রিপ্ট চালাতে চাই। স্ক্রিপ্টটি কয়েকবার একটি প্রোগ্রাম কল করে, যার প্রতিটি অপেক্ষা করতে খুব বেশি সময় নেয়। আমার প্রথম চিন্তাটি ছিল কেবল একটি স্ক্রিন খোলার পরে স্ক্রিপ্টটি কল করা, তবে দেখা যাচ্ছে যে ctrl-a dস্ক্রিপ্টটি চলার সময় আমি (দ্বারা ) আলাদা করতে পারি না । সুতরাং আমি কিছু গবেষণা করেছিলাম এবং নীচে শিবাং প্রতিস্থাপনের জন্য এই নির্দেশটি পেয়েছি :

#!/usr/bin/screen -d -m -S screenName /bin/bash

তবে এটি কার্যকর হয় না, হয় (বিকল্পগুলি স্বীকৃত নয়)। কোন পরামর্শ?

পিএস এটি আমার কাছে এখনই ঘটে যা screen -dmS name ./script.shসম্ভবত আমার উদ্দেশ্যগুলির জন্য কাজ করবে তবে আমি কীভাবে এটি স্ক্রিপ্টে অন্তর্ভুক্ত করব সে সম্পর্কে এখনও আগ্রহী। ধন্যবাদ.

উত্তর:


28

আপনি যে শেবাং লাইনটি দেখেছেন তা কিছু ইউনিক্স রূপে কাজ করতে পারে তবে লিনাক্সে নয়। লিনাক্সের শেবাং লাইনগুলি সীমিত: আপনার কাছে কেবল একটি বিকল্প থাকতে পারে। সম্পূর্ণ শব্দটি আলাদা আলাদা শব্দ হিসাবে পাস -d -m -S screenName /bin/bashকরার screenপরিবর্তে একক বিকল্প হিসাবে পাস করা হয়।

আপনি যদি স্ক্রিনের অভ্যন্তরে কোনও স্ক্রিপ্ট চালাতে চান এবং একাধিক ফাইল বা উদ্ধৃতি দিয়ে গোলযোগ না ঘটাতে চান তবে আপনি স্ক্রিপ্টটি এমন শেল স্ক্রিপ্ট তৈরি করতে পারেন যা ইতিমধ্যে স্ক্রিনের ভিতরে না থাকলে স্ক্রিনকে ডাকে।

#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff

এটা ভাল কাজ করে, "$0"এখানে কি জন্য?
ফাবিচ

4
@ লর্ডফডার্ক এটি স্ক্রিপ্টের নাম। স্ক্রিপ্টটি আহ্বান করে screenযা /bin/bashস্ক্রিপ্টটি আবার আমন্ত্রণ করে।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

16

স্ক্রিন ম্যান পৃষ্ঠাগুলি অনুসারে:

  • screen -d -m বিচ্ছিন্ন মোডে পর্দা শুরু করুন। এটি একটি নতুন অধিবেশন তৈরি করে তবে এতে সংযুক্ত থাকে না। এটি সিস্টেম স্টার্টআপ স্ক্রিপ্টগুলির জন্য দরকারী।
  • -S sessionname নতুন অধিবেশনটির নামটি সেশননামে সেট করুন।

সুতরাং যখন আমি আপনার প্রদত্ত আদেশটি চালিয়েছি: screen -dmS name ./script.sh

স্ক্রিন নাম নামে একটি উইন্ডো শুরু করে এবং স্বয়ংক্রিয়ভাবে সেই স্ক্রিপ্ট.শ চালায়। সেখানে ফিরে যাওয়ার জন্য স্ট্যাটাসটি দেখতে আপনি কেবল টাইপ করতে পারেন:screen -r test

এখন উবুন্টু 14.04 এর সাথে কমান্ডগুলি কিছুটা আলাদা। চেষ্টা করুন:

screen -d -m -S test

এখন স্ক্রিপ্টটি চালনার জন্য আপনাকে তাদের কনফিগারেশন ফাইলে যেতে হবে:

sudo vim /etc/screenrc

একবার সেখানে গেলে নীচে নীচে স্ক্রোল করুন এবং আপনি দেখতে পাবেন:

# Example of automatically running some programs in windows on screen startup.
#
#   The following will open top in the first window, an ssh session to monkey
#   in the next window, and then open mutt and tail in windows 8 and 9
#   respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log

এটি সেই বিভাগ যেখানে আপনার চালনার জন্য স্ক্রিপ্টের নাম যুক্ত করতে হবে এবং এটি আপনাকে পর্দা থেকে প্রয়োজনীয় সমস্ত কিছু করতে দেয়।


কোনওভাবেই সেই আদেশটি ( screen -dmS ...) আমার পক্ষে কাজ করে না, যদিও এটি সত্যই হওয়া উচিত। আমি এটি চালাই এবং তারপরে screen -lsএবং কোনও সকেট পাওয়া যায় না। থটস?
বোংবাং

আপনি কোন ডিস্ট্রো ব্যবহার করছেন?
রাইকায়ো

নাম = "উবুন্টু" সংস্করণ = "14.04.1 এলটিএস, বিশ্বস্ত তাহর" আমার মনে হয়। এটি ভার্চুয়াল মেশিন।
বনবং

কিছুটা গিমে কারণ আমি শুধু আমার কাজ ছেড়ে অসুস্থ হয়ে আমার মেশিনে স্ক্রিনটি ব্যবহার করার চেষ্টা করছি যা
উবুন্টুও রয়েছে

@ বংবাং - আপনার কী স্ক্রিনের সংস্করণ রয়েছে?
slm

3

এটি কিছুটা পুরানো তবে আমি এটি করতে যে কয়েকটি থ্রেড পেয়েছি তার মধ্যে একটি। টান টান করার পরে উবুন্টু 14 এর সাথে বিচ্ছিন্ন মোডে এই চলমান একমাত্র উপায় way

screen -d -m -t nameofwindow sh nameoflaunch.sh

লঞ্চটির উপরে থাকা দ্বিতীয় অংশটি হবে যা বর্তমান জাভা কমান্ড এবং সার্ভার সংস্করণ রাখে। আমি ভ্যানিলা চালাই।

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