জিএনইউ স্ক্রিন - সংযোগ হারিয়ে যাওয়ার পরে পর্দায় পুনরায় যোগাযোগ করতে অক্ষম


23

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

আমি এটিকে জোর করে আলাদা করার জন্য স্ক্রিন-ডি চেষ্টা করেছি এবং এটি বিচ্ছিন্ন বলেছে তবে স্ক্রিন-এল এখনও বলেছে এটি সংযুক্ত রয়েছে। আমি স্ক্রিন-এক্স চেষ্টা করেছি এবং এটি কেবল সেখানে স্তব্ধ।

[sub@server ~]$ screen -ls 
There are screens on:
 4033.poe (Detached)
 7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.

আমি এখন কি করব?

উত্তর:


14

আপনি যদি 'সংযুক্ত' স্ক্রিনটি সংযুক্ত করার চেষ্টা করছেন, তবে চালান screen -xr irssi। বড় হাতের অক্ষর -X 'স্ক্রিন সেশনগুলির একটিতে একটি কমান্ড প্রেরণ করে, ছোট' -x 'বিকল্পটি আপনাকে একটি সংযুক্ত সেশনে পুনরায় সংযোগ করার অনুমতি দেয়। তবে আপনার এখনও অধিবেশনটির নাম দেওয়া দরকার যেহেতু একাধিকের বেশি রয়েছে।


9

আমি অতীতে স্ক্রিন সেশন শুরু হওয়া শেলটি মেরে এই আচরণটি পরিষ্কার করে দিয়েছি । মূলত, আমার ব্যবহারকারীর জন্য সমস্ত বাশ দৃষ্টান্তগুলি হত্যা করা যা পর্দার মালিকানাধীন ছিল না


2
এখানে উল্লিখিত সমস্ত বিকল্প (-RD, -xr) চেষ্টা করেও সেশনটি পুনরুদ্ধার করতে পারেনি। এটি খুঁজে পেয়ে স্ক্রিন সেশনটি মেরে ফেলা হয়েছে (পিএস-শেফ | গ্রেপ ব্যাশ) এটি।
so_mv


4

আপনি চেষ্টা করতে পারেন:

#Reattach a session and if necessary detach it first.
screen -d -r 7728.irssi  

#Reattach a session. If necessary detach and logout remotely first.
screen -D -r 7728.irssi

এটি সর্বদা একটি ভাল ধারণা পুরো নাম ব্যবহার করুন pid.tty


3

screenসংস্করণগুলির মধ্যে পিছনে সামঞ্জস্যপূর্ণ না হওয়ার জন্য পরিচিত। যদি screenসার্ভারে সংস্করণটি আপডেট করা থাকে তবে এটি সম্ভবত পুরানো স্ক্রিন সেশনগুলিতে পুনরায় সংযুক্ত করতে পারবেন না।

সেক্ষেত্রে আপনি পুনরায় সংযোগ স্থাপনের জন্য পুরানো স্ক্রিন বাইনারি ব্যবহার করতে পারেন (আপনার বিতরণ প্যাকেজ ব্যবস্থাপক এটি কোথাও সংরক্ষণ করে), অথবা পুরোপুরি সেশনটি মেরে ফেলতে পারেন।


2

আমি জিএনইউ / স্ক্রিন প্রসেসটি একটি সিএইচসিএলডি (যা সাধারণত উইন্ডোটি বন্ধ হয়ে যাওয়ার পরে প্রাপ্ত হয়) প্রেরণ করে কিছুটা সাফল্য পেয়েছে, এটি এটিকে সকেট ফাইলে স্পর্শ করতে (এবং সম্ভবত পুনরায় তৈরি করতে) বাধ্য করে।

এছাড়াও খেয়াল করুন যে screenএক্সিকিউটেবলকে অনুরোধ করার দুটি উপায় রয়েছে যা কেবলমাত্র ক্ষেত্রে পৃথক: আপনি SCREENযে সার্ভার-সাইড উপাদানটি আবার সংযোগের চেষ্টা করছেন screenসেটি হচ্ছে ক্লায়েন্ট-সাইড যা আপনার টার্মিনাল এবং সার্ভার-সাইডের মধ্যে ডেটা পরিবর্তন করে। সুতরাং আপনি নিম্ন-কেস সংস্করণ হত্যার চেষ্টা করতে চাইতে পারেন ...

উদাহরণস্বরূপ নীচের ক্ষেত্রে আপনি দেখতে পাচ্ছেন যে আমার screenএবং SCREENপ্রক্রিয়াগুলি পিতামাতা এবং সন্তানের হিসাবে বিবেচিত হয় না, এটি ইঙ্গিত করে যে আমি একটি বিদ্যমান সেশনে সংযুক্ত হয়েছি।

# ps fao pid,command
25070 SCREEN -U
25071  \_ vim +let &t_Co=256
25073  \_ -bash
25077  \_ -bash
...
18364  \_ sshd: username [priv]
18366  |   \_ sshd: username@pts/17
18367  |       \_ -bash
  870  |           \_ screen -U -x

টাটকা সেশনগুলি আরও দেখতে দেখতে:

19645  |  \_ screen -S MySession
19646  |      \_ SCREEN -S MySession
19647  |          \_ bash
 1485  |          |   \_ python
19700  |          \_ bash

কিভাবে একটি সইচিল্ড প্রেরণ করবেন?
giorgio79

1
স্কেরিলি নামযুক্ত killকমান্ডটি এর মতো ব্যবহার করুন : প্রসেস আইডি নম্বরটি kill -s SIGCHLD <PID>কোথায় <PID>(আমার উদাহরণের আউটপুটে বাম-সর্বাধিক কলাম)
রবএম

1

আমি যখন ভিআইটি ব্যবহার করছিলাম তখন সেশনটি হিমশীতল এবং আমার সংযোগ বিচ্ছিন্ন হয়ে গিয়েছিল me স্ক্রিন -আরএক্স ব্যবহার করে স্ক্রিনে পুনরায় সংযুক্ত হওয়ার চেষ্টা করার সময়, প্রক্রিয়াটি কেবল স্তব্ধ হয়ে যায়।

স্ক্রিনটি স্তব্ধ হয়ে যাওয়ার কারণে একই ধরণের শিশু প্রক্রিয়া চলছে। যদি আপনি সেই বিষয়ে বিশেষভাবে একটি ফোকাসকে স্মরণ করেন, অন্যথায় আপনার পর্দার অধীনে চলমান শিশু প্রক্রিয়াটির একটি তালিকা পেতে:

ps ux -H

যা নীস্টযুক্ত শিশু প্রক্রিয়াগুলি দেখায়:

zwood    28481  0.0  0.0 101148  8844 ?        Ss   Oct07   1:36 SCREEN -S mysession
zwood    28482  0.0  0.0  67436  1744 pts/2    Ss+  Oct07   0:00   /bin/bash
zwood    28515  0.0  0.0  67556  1876 pts/4    Ss+  Oct07   0:00   /bin/bash
zwood     4498  0.0  0.0  67436  1772 pts/5    Ss   Oct07   0:00   /bin/bash
zwood     2007  0.0  0.0  73604  1324 pts/5    S+   15:47   0:00     vi /home/zwood/.bashrc.custom
zwood    14670  0.0  0.0  67436  1768 pts/13   Ss+  Oct14   0:00   /bin/bash
zwood    27002  0.0  0.0  67436  1720 pts/11   Ss+  Oct20   0:00   /bin/bash
zwood    24748  0.0  0.0  67432  1712 pts/14   Ss+  Oct21   0:00   /bin/bash

প্রথম স্থানটিতে সমস্যা তৈরি করা vi প্রক্রিয়াটি হত্যার পরে, আমি কোনও সমস্যা ছাড়াই পর্দাটি পুনরায় সংযুক্ত করতে সক্ষম হয়েছি। পূর্বের যে কোনও প্রক্রিয়া যা পর্দায় পুনরায় সংযুক্ত হয়েছিল তাদের হত্যা করা সম্ভবত একটি ভাল ধারণা। শুধু ব্যবহার করুন:

kill -9 <pid>

অভ্যন্তরীণভাবে কী পর্দা করছে তা আমি জানি না, vi কেন পর্দা ঝুলিয়েছিল বা vi প্রক্রিয়া হত্যার ফলে কেন আমার পর্দা ফিরে এসেছিল। আমি অতীতে পর্দার সাথে এই সমস্যায় পড়েছি এবং চেষ্টা করেছি বেশিরভাগ লোকেরা এই থ্রেডে কোন ভাগ্য ছাড়াই সুপারিশ করছেন। এই সমস্যাটি শিশু প্রক্রিয়াটি অনুসন্ধান করা কেবলমাত্র আমার পক্ষে কাজ করে এবং এটিতে ধারাবাহিকভাবে কাজ করেছি।


পর্দার অধীনে প্রক্রিয়াগুলির একটি কিল স্প্রিটিই কেবল আমাকে সংরক্ষণ করেছিল। আমি বরং পুরো পর্দার অধিবেশন হারাতে পর্দার অধীনে অনেক প্রক্রিয়া হারাতে চাই!
যোনাতন


0
killall -9 sshd

এটা আমার জন্য কাজ করে। আমার কাছে 3 টি ভিন্ন স্ক্রিন ছিল এবং আমি 3 টি পৃথক এসএসএস সংযোগ হারিয়েছি। পুনরায় সংযোগের পরে, পর্দাটি এখনও সংযুক্ত ছিল, আমি উপরের কমান্ডটি জারি করেছি ... অবশ্যই আমি আমার বর্তমান সংযোগটি হারিয়ে ফেলেছি, তবে এটি একটি তাজা ছিল। পরবর্তী পুনরায় সংযোগ করার সময়, প্রতিটি পর্দা আলাদা করা হয়েছিল।

দ্রষ্টব্য, আপনি যদি সুপারইউসার হন তবে আপনার --userকেবলমাত্র এসএসএইচ ডেমনকে হত্যা করার বিকল্পটি ব্যবহার করা উচিত ।

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