টার্মিনাল এমুলেটররা কীভাবে একটি সিক্কিল প্রাপ্তির পরে তাদের শিশুদের হত্যা করতে পারে?


12

আমি যা বুঝি সে থেকে সিগ্কিল ধরা যায় না। এটি বোঝাবে যে কোনও প্রক্রিয়াটিতে ওএসগুলি ধ্বংস করার আগে তার শিশুদের মেরে ফেলার সময় নেই। এটি শেল স্ক্রিপ্ট দিয়ে প্রদর্শিত হতে পারে।

#! /bin/bash

trap : SIGTERM SIGINT SIGKILL # SIGKILL is pointless.

mplayer video.avi

এটিকে সিক্কিল দিয়ে হত্যা করার ফলে এমপ্লেয়ার চলছে leaves

$ kill -9 $pid

তবে টার্মিনাল এমুলেটর (এক্সটার্ম, টার্মিনাল, ...) ব্যবহার করার সময় এটির সাথে বাচ্চারা মারা যায়। এটা কিভাবে সম্ভব?

$ mplayer

এবং এটি হত্যা:

$ kill -9 $terminal_pid

এবং এমপ্লেয়ার জাহাজের সাথে নেমে যায়। টার্মিনাল এমুলেটররা কি কোনওভাবে সিগ্কিলকে ধরছে বা এখানে অন্য কোনও বাহিনী কাজ করছে?

উত্তর:


11

দ্বারা শুরু করা প্রক্রিয়াটি xtermটার্মিনালের নিয়ন্ত্রণে অধিবেশন নেতা হবে।

টার্মিনালটি সরে গেলে, এই প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে একটি SIGHUP সিগন্যাল পায় (তারপরে একটি SIGCONT)। এটি কার্নেল দ্বারা একইভাবে প্রেরণ করা হয় যে আপনি সিটিআরএল-সি চাপলে সাইন ইন প্রসেস হয়।

অতিরিক্তভাবে, একটি শেল প্রস্থান করার পরে তার কিছু শিশুকে সাইনআপ পাঠাতে পারে ( disownএটি অক্ষম করার জন্য কয়েকটি শেলের মধ্যে দেখুন )


1
অধিবেশন এবং অধিবেশন নেতাদের সম্পর্কে তথ্যের জন্য: unix.stackexchange.com/questions/18166/…
কেভিন কক্স

+1 disownযার জন্য খুব দরকারী।
গণিত

1

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

উদাহরণস্বরূপ, নিম্নলিখিতটি দেখুন:

csb@darwin[~]$ ps fauwx | grep -A6 "xfce4-terminal" | awk '{ for (i = 2; i <= 9; i++) $i="" ; print $0 }' 
csb         0:32 xfce4-terminal --geometry=271x65 --display :0.0 --role=Terminal-0x1340050-2606-1351620352 --show-menubar --show-borders --hide-toolbars --working-directory /home/csb --tab --working-directory /home/csb
csb         0:00 \_ gnome-pty-helper
csb         0:00 \_ bash
csb         0:00 | 
                  \_ ssh [redacted]
csb         0:00 \_ bash
csb         0:00 \_ ps fauwx
csb         0:00 \_ grep --color=auto -A6 xfce4-terminal
csb         0:00 \_ awk { for (i = 2; i <= 9; i++) $i="" ; print $0 }

এই সমস্ত প্রক্রিয়া 'xfce4- টার্মিনাল' প্রসেসের অধীনে চলছে, সুতরাং আমি যদি এই প্রক্রিয়াটি হত্যা করি তবে এটি স্বয়ংক্রিয়ভাবে প্রক্রিয়া গোষ্ঠীর সমস্ত শিশু প্রসেসকে হত্যা করবে ... উদাহরণস্বরূপ, টার্মিনাল এমুলেটর উইন্ডোটি থেকে বেরিয়ে আসা অগত্যা আমার এসএসএইচ সংযোগটি মেরে ফেলুন।

গোলাগুলির মতো প্রোগ্রামগুলি নতুন প্রক্রিয়া গ্রুপ তৈরি করে, সাধারণত সম্পর্কিত শিশু প্রক্রিয়াগুলিকে একটি গোষ্ঠীতে রাখে। প্রতিটি কাজ একটি প্রক্রিয়া গ্রুপ। কার্নেলের বাইরে, একটি শেল কিলপিজ সিস্টেম কল দিয়ে কাজের প্রসেস গ্রুপে সিগন্যাল প্রেরণ করে একটি কাজকে পরিচালনা করে, যা একটি প্রক্রিয়া গোষ্ঠীর সমস্ত প্রক্রিয়াতে সংকেত সরবরাহ করে del


3
-1: একটি পিতা বা মাতা কিলিং করে না শিশু নিহত হতে হতে।
ক্যামহ

2
গোলাগুলির মতো প্রোগ্রামগুলি নতুন প্রক্রিয়া গ্রুপ তৈরি করে, সাধারণত সম্পর্কিত শিশু প্রক্রিয়াগুলিকে একটি গোষ্ঠীতে রাখে। প্রতিটি কাজ একটি প্রক্রিয়া গ্রুপ। কার্নেলের বাইরে, একটি শেল কিলপিজ সিস্টেম কল দিয়ে কাজের প্রসেস গ্রুপে সিগন্যাল প্রেরণ করে একটি কাজকে পরিচালনা করে, যা একটি প্রক্রিয়া গোষ্ঠীর সমস্ত প্রক্রিয়াতে সংকেত সরবরাহ করে del
চার্লস বয়ড

2
@ চার্লসবয়েড এই মন্তব্যটি আপনার উত্তরের অংশ হওয়া উচিত।
জর্দান

4
@ চার্লসবয়েড: আপনার উত্তরে এটি যুক্ত করুন এবং আমি আপনাকে -1 এর পরিবর্তে +1 দেব। আপনার উত্তরটি বর্তমানে পিতামহীন প্রক্রিয়াটিকে হত্যা করার পরে শিশু প্রক্রিয়াগুলিকে হত্যা করা হিসাবে পড়া হয় (বিটিডাব্লু, এটির সেশনভিত্তিক, গ্রুপ ভিত্তিক নয়) process
ক্যামহ

@ চার্লসবয়েড আমি এটি বুঝতে পারি, তবে প্রশ্নের মূল বিষয় হ'ল এটি যখন একটি সিগ্কিল পেয়েছে তখন কীভাবে এটি "সংকেত প্রেরণ করে কোনও কাজকে [] চালিত করে"? আমি killpgসেই সময়ে সিস্টেম কলটি ব্যবহার করার কোনও উপায় দেখতে পাচ্ছি না ।
কেভিন কক্স

0

প্রথমত, আমি ব্যবহার করে টার্মিনালটি মারা যাওয়ার পরে বেঁচে থাকা এমপ্লেয়ারকে পুনরুত্পাদন করতে পারি না xterm

এটি মারা যাওয়ার কারণটি হ'ল এটি তার পিতামাতার মৃত্যুর থেকে সাইনআপ দেয়।


আমি কখনও বলিনি যে এটি হয়েছে, আমি বলেছিলাম যে এটি মারা যায় তবে যখন এটি স্ক্রিপ্টে থাকে এবং মারা যায় তখন বেঁচে থাকে।
কেভিন কক্স

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