চাপ দিতে অসুবিধার প্রতিরোধমূলক ব্যবস্থা হিসাবে CTRL- zআপনি আপনার সম্পাদকের জন্য একটি মোড়ক স্ক্রিপ্ট তৈরি করতে পারেন যা আপনার সম্পাদককে পটভূমিতে চালিত করবে। স্পষ্টভাবে ব্যাকগ্রাউন্ডে এটি শুরু করার জন্য আপনার মনে রাখার যত্ন নেওয়ার প্রয়োজন হবে না:
#!/bin/sh
EDITOR="emacs" # or whatever
if [ -z "${DISPLAY}" ]; then
${EDITOR} "$@"
else
${EDITOR} "$@" &
fi
উপরে আপনি প্রথমে নির্ধারণ করতে চেষ্টা করুন যে আপনার কাছে এক্স সার্ভার উপলব্ধ রয়েছে এবং কেবলমাত্র তখনই পটভূমিতে সম্পাদকটি চালনা করুন (যদি না হয় তবে অনেকগুলি ইউনিক্স সম্পাদক পরিবর্তে আপনার টার্মিনালটি ব্যবহার করবেন এবং আপনি এই ক্ষেত্রে সম্পাদককে একটি ব্যাকগ্রাউন্ড প্রক্রিয়া হিসাবে চালাতে চান না) । এটি "$@"
মোড়ক স্ক্রিপ্টের জন্য আপনি যেমন সরবরাহ করেছেন ঠিক তেমনই আপনার পছন্দসই ভারব্যাটিম ( ) সম্পাদককে সমস্ত যুক্তি পাঠিয়ে দেবে ।
আপনি যে কমান্ডটি অনুপস্থিত রয়েছেন ... আমার প্রাথমিক পরীক্ষা-নিরীক্ষা অনুসারে, জিইউআই প্রোগ্রামগুলিতে টার্মিনাল জড়িত না, এটি প্রথম প্রেরণের মতো সহজ হতে পারে SIGSTOP
এবং তারপরে SIGCONT
অগ্রভাগ প্রক্রিয়াতে ( kill
কমান্ডটি ব্যবহার করে যদি আপনি এটি প্রয়োগ করতে শেল স্ক্রিপ্ট ব্যবহার করেন) । আপনার অবশ্যই এটি অন্য টার্মিনাল উইন্ডো / ট্যাবে চালানো দরকার এবং অসুবিধাটি হ'ল পিআইডি যে আপনি আপনার সিগন্যালটি প্রেরণ করতে চান তা সুবিধার্থে এবং জেনেরিক ফ্যাশনে। আপনি ডিফল্টরূপে প্রদত্ত নামের সমস্ত প্রক্রিয়াতে দুটি সংকেত প্রেরণ করতে পারেন (আপনার প্রিয় সম্পাদককে ডিফল্ট করা এবং পাশাপাশি পিআইডিগুলি আর্গুমেন্ট হিসাবে ব্যবহারের অনুমতি দেওয়া):
#!/bin/sh
EDITOR=emacs # whatever
stop_cont_prog()
{
case "$1" in
# begin with number is considered PID - this is not good
# enough to be taken seriously...
[1-9]*) kill -SIGSTOP "$1"; kill -SIGCONT "$2";;
*) killall -SIGSTOP "$1"; killall -SIGCONT "$2";;
esac
}
if [ -n "$1" ]; then
for prog in "$@"; do stop_cont_prog "$1"; done
else
stop_cont_prog "${EDITOR}"
fi
এই পদ্ধতিটি emacs
ব্যাকগ্রাউন্ডে (বেশ কয়েকটি) কমান্ড চালানোর পরে আমাকে আমার টার্মিনাল ট্যাবগুলি সঠিকভাবে দিয়েছে । তবে শেল জব নিয়ন্ত্রণ বা টার্মিনাল সেটিং বিভ্রান্তির কারণে টার্মিনালে চলমান ইমাস প্রক্রিয়াটি সঠিকভাবে পুনরুদ্ধার করা যায়নি। সুতরাং এই পদ্ধতিটি কিছু পরিশীলিত হতে উপকৃত হবে।
SIGSTOP
ঠিক কি ফোরগ্রাউন্ড প্রক্রিয়া যখন আপনি (সাধারণ অক্ষমতা দ্বারা) টিপুন পাঠাতে হয় CTRL- z। stty -a
আউটপুট পড়ুন
$ stty -a
speed 38400 baud; rows 50; columns 200; line = 0;
intr = ^C; [...] start = ^Q; stop = ^S; susp = ^Z; [...]
[...]
(আউটপুট সংক্ষিপ্ত) এবং stty
ম্যানুয়াল পৃষ্ঠা:
susp CHAR
CHAR will send a terminal stop signal
SIGSTOP
সিগন্যাল ব্যবহার বন্ধ হওয়া প্রক্রিয়াগুলি প্রেরণ করে পুনরায় আরম্ভ করা যেতে পারে SIGCONT
। সাধারণত এটি শেল জব কন্ট্রোল লজিক যা আপনার SIGCONT
সাথে যুক্ত অন্যান্য আদেশের সাথে জড়িত fg
এবং প্রয়োজনীয় bg
আদেশের যত্ন নেবে send
tmux
আপনার প্রশ্নের মতো একই কার্যকারিতা দেয়।