প্রশ্ন কিভাবে আমি সব বন্ধ চাকরি হত্যা করতে পারেন?


যখন আমি আমার লিনাক্স সার্ভার থেকে প্রস্থান করার চেষ্টা করি তখন আমি বার্তাটি পাই:

কাজ বন্ধ আছে।

: এই হত্যা করার জন্য একটি কমান্ড আছে?


80
2018-02-25 10:07


উত্স


থি U & L এর অতিরিক্ত উদাহরণ Q & A: unix.stackexchange.com/questions/124428/... - slm
আমি এখন বিপরীত সমস্যা ছিল, আমি শেল প্রস্থান যখন বন্ধ কাজ সম্পর্কে সতর্ক হবে না! রাখা ছিল shopt -s checkjobs আমার .bashrc মধ্যে - Sam Watkins
ctrl + d টিপুন, এটি আপনাকে এখন প্রস্থান করতে দেবে, প্রক্রিয়াটিতে সেই কাজগুলি হারাবে - Jens Timmerman


উত্তর:


দ্রুত ব্যাশের অধীনে চলমান সমস্ত কাজ দ্রুত সরাতে, লিখুন:

kill `jobs -ps`

jobs -ps বন্ধ কাজ কর্ম তালিকা ID। kill `jobs -ps` সব বন্ধ চাকরি থেকে TERM সংকেত পাঠান।


69
2018-02-25 10:15



-1 "জবস হত্যা" - Tibor
কাজ ছিল না যখন "sudo su" ছিল। অর্থাত sudo kill `jobs -p` কাজ করেনি কিন্তু স্পষ্টভাবে পিআইডি টাইপ করা। - user13107
কেন এত উর্ধ্বগামী হয়? এটা ভুল. প্রসেস বন্ধ হলে, একটি kill যেমন প্রক্রিয়াগুলি বন্ধ হয়ে যাওয়ার কারণে এটি কিছুই করবে না, তারা ডিফল্টভাবে পাঠানো SIGTERM (-15) প্রক্রিয়া করবে না। - slm
খুন -9 কৌতুক করবে। - Blossoming_Flower
স্পষ্টভাবে ভুল উত্তর! - mrangry777


এটি টাইপ করার চেষ্টা করুন:

kill -9 $(jobs -p)

76
2018-02-25 10:14



এটি করা উচিত, কিন্তু আমি মনে করি সে প্রথমে একটি SIGTERM পাঠাতে হবে (-15) একটি SIGKILL (-9) পাঠানোর আগে। সুতরাং সম্ভবত "$ (jobs -p) খুন করা, 3 য় ঘুমের মত হত্যা করা; খুন -9 $ (jobs -p)" ভালো কিছু প্রস্তাব করা। SIGTERM পাঠানো প্রথম কাজগুলি একটি পরিষ্কার প্রস্থান করতে সক্ষম হতে পারে (বরাদ্দ সংস্থান মুক্ত, ইত্যাদি)। - rems
কেভিন ড্যুক, আপনার উত্তর আমার জন্য কাজ করেছে। আমি ভোট দিতে পারিনি কারণ আমার 15 জন খ্যাতি নেই। হত্যা -9 $ (কাজ-পি)
@rems ব্যতীত, যেমন স্লিমটি নির্দিষ্ট করে দেখানো হয়েছে, ততক্ষণ তারা সিগেটম পাবেন না কারণ তারা বন্ধ রয়েছে। - Paul Gear
Zsh কাজ করে না। কারণে পিএসএস হচ্ছে না zsh  চাকরি সঙ্গে IX compliant। - Max Coplan


গৃহীত উত্তরটি সমস্ত কাজকে হত্যা করবে (যা এই ক্ষেত্রে যথেষ্ট) এবং কেবলমাত্র বন্ধ হওয়া নয়। আপনি শুধুমাত্র থামানো বেশী হত্যা করতে চান, চালানো:

kill $(jobs -l | grep Stopped | cut -d' ' -f3)

16
2018-03-08 18:04



grep / কাট এক awk কমান্ড একত্রিত করা যাবে: awk '/Stopped/{print $3}') - laebshade
দ্য -s গৃহীত উত্তর ফিল্টার শুধুমাত্র থামানো বেশী উপর যুক্তি - 79E09796


সহজতম উপায় সহজভাবে অবিলম্বে প্রস্থান পুনরায় চেষ্টা করতে হয়; bash "সব বন্ধ চাকরি এবং প্রস্থান করুন" মানে যে নিতে হবে।


12
2018-03-08 18:13



যে একটি HUP পাঠাতে হবে যা কোন কাজ বন্ধ করতে হবে না। - Stephen Niedzielski


for x in `jobs -p` ; do kill -9 $x ; done

7
2018-02-26 10:22



আপনি এই লাইনটি পড়তে সহজ করতে কোড বিন্যাস যুক্ত করতে পারেন। - drcelus
আপনি কি আবার আপনার ফরম্যাটে নজর রাখতে পারেন - লক শুরুতে কোডের মতো ব্লক চিহ্নিত করতে চারটি স্পেস ব্যবহার করুন (ব্যাটিক ব্যবহার করার পরিবর্তে)। আপনি এখন আপনার কোডে ব্যাকটিক ব্যবহার করছেন কিনা বা ব্যাকটিক্স ব্যবহার করে কোড প্রদর্শন করার চেষ্টা করছেন তা স্পষ্ট নয়। - dunxd
বিন্যাস জরিমানা। আমাদের ব্যাক -িক্সগুলি ব্যবহার করে কাজগুলি পাস করতে হবে - এটি কমান্ড হিসাবে বিবেচিত হবে না এবং এটি একটি ত্রুটি নিক্ষেপ করবে। - monu


আপনি যদি কিছু বন্ধ হওয়া কাজগুলি সরাতে চান কিন্তু সব না, তবে এটি চেষ্টা করুন:

প্রথম, চাকরি তালিকা, আপনি এই মত কিছু পাবেন:

$ jobs -l

[2]   4813 Stopped                 ./parse < call.txt
[3]-  4819 Stopped                 ./parse < call.txt

একটি বন্ধ কাজ করতে হত্যা পাঠান, এটা কিন্তু সারি ছাড়া কিছুই করতে হবে এটা সম্মুখভাগে আনতে চেয়ে, এটা বিনষ্ট করা হবে

$ fg %2
./parse < call.txt
Terminated

$ jobs -l
[3]-  4819 Stopped                 ./parse < call.txt

4
2018-05-30 04:16





সাধারণত আপনি যদি সেই বার্তাটি পেয়ে থাকেন তবে আপনাকে দুবার লগআউট করতে হবে। উদাহরণস্বরূপ প্রথম জন্য Ctrl + D: আপনাকে চাকরি বন্ধ করার বিষয়ে আপনাকে অবহিত করার জন্য সতর্কতা বার্তা দেয়, দ্বিতীয়বার চাপ দেওয়ার ফলে কাজগুলি হত্যাকাণ্ডে আপনাকে লগ আউট করা হবে। এই একই প্রযোজ্য logout এবং exit কমান্ড।

ম্যানুয়ালি তাদের মেরে ফেলার চেষ্টা করুন: kill $(jobs -p)


আপনি যদি আপনার বর্তমান শেল থেকে কাজগুলি মারতে না চান তবে আপনি সেগুলিকে ব্যবহার করে হত্যা ছাড়া সক্রিয় কাজগুলির টেবিল থেকে সরাতে পারবেন disown কমান্ড। উদাহরণস্বরূপ

$ sleep 1000 &
[1] 19404
$ jobs
[1]+  Running                 sleep 1000 &
$ disown

স্থগিত কাজ এছাড়াও প্রক্রিয়া রাষ্ট্র দ্বারা নির্ধারণ করা যেতে পারে (T চরিত্র) যার অর্থ হল প্রক্রিয়াটি যেমন সংকেত দ্বারা থামানো হয়েছে SIGSTOP, SIGTSTP বা অন্যান্য (মত SIGTTIN, অথবা SIGTTOU)।

ক্ষেত্রে যখন jobs শেল বিল্টইন কমান্ড উপলব্ধ নয়, থামানো প্রসেস নিম্নলিখিত কমান্ড দ্বারা তালিকাভুক্ত করা যাবে:

ps wuax | awk '$8 ~ "T"'

তাদের সবাইকে হত্যা করার জন্য আপনি মূলত টাইপ করতে পারেন:

kill -9 $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')

এখানে একটি সহজ পরীক্ষা:

$ sleep 1000 &
[1] 2014
$ sleep 1000 &
[2] 2015
$ sleep 1000 &
[3] 2016
$ sleep 1000 &
[4] 2017
$ killall -STOP sleep
[1]   Stopped                 sleep 1000
[2]   Stopped                 sleep 1000
[3]   Stopped                 sleep 1000
[4]   Stopped                 sleep 1000
$ ps wuax | awk '$8 ~ "T"'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
vagrant   2014  0.0  0.0   7228   832 pts/0    T    20:38   0:00 sleep 1000
vagrant   2015  0.0  0.0   7228   708 pts/0    T    20:38   0:00 sleep 1000
vagrant   2016  0.0  0.0   7228   760 pts/0    T    20:38   0:00 sleep 1000
vagrant   2017  0.0  0.0   7228   828 pts/0    T    20:38   0:00 sleep 1000
$ kill -9 $(awk 'NR>1 && $8 ~ "T" {print $2}' <(ps wuax))
$ jobs
[1]   Killed                  sleep 1000
[2]   Killed                  sleep 1000
[3]   Killed                  sleep 1000
[4]   Killed                  sleep 1000

4
2018-02-19 20:46





শুধু যদি এটি অন্য কারো সাহায্য করে - বেশিরভাগ লোকেরা এখানে রয়েছে কারণ তাদের শুরু হওয়া কিছু বন্ধ হওয়া প্রক্রিয়াগুলি সম্ভবত শেলের মাধ্যমে ব্যাকগ্রাউন্ড করা হয়েছে। আমি অন্যান্য ব্যবহারকারীদের দ্বারা বন্ধ রুট হিসাবে প্রসেস, খুঁজে বের করতে প্রয়োজন, যার জন্য বৈকল্পিক jobs কমান্ড করবেন না।

সঙ্গে প্রায় খনন একটি বিট man ps আমাকে এই পেয়েছিলাম:

ps -a -o pid,user,cmd,state | grep 'T$'

ব্যাখ্যা: দী -a পতাকা সব প্রক্রিয়া, তারপর দেখায় -o নিয়ন্ত্রণ আউটপুট, প্রতিটি প্রক্রিয়া সম্পর্কে কি তথ্য দেখানো হবে। আমি নির্বাচন করছি pid, user, cmd (কমান্ড লাইন), এবং stateযা, হয় প্রক্রিয়া রাষ্ট্র

থেকে man ps:

PROCESS STATE CODES
   Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the
   state of a process:
           D    uninterruptible sleep (usually IO)
           R    running or runnable (on run queue)
           S    interruptible sleep (waiting for an event to complete)
           T    stopped, either by a job control signal or because it is being traced
           W    paging (not valid since the 2.6.xx kernel)
           X    dead (should never be seen)
           Z    defunct ("zombie") process, terminated but not reaped by its parent

তাই অবশেষে আমি এটা পাইপ grep T$ যা বলে, শেষ কলামে টি আছে এমন সমস্ত প্রক্রিয়া দেখান।

এবং তারপর বন্ধ থাকা অবস্থায় থাকা বিভিন্ন ব্যবহারকারীর সমস্ত প্রসেসগুলির একটি চমৎকার তালিকা রয়েছে।

$ ps -a -o pid,user,cmd,state | grep 'T$'
  865 joson74+ python                      T
  885 joson74+ sh -c less                  T
  886 joson74+ less                        T
 1014 minames+ python3.4 -i /home/minames  T
 5352 MooKo    nano stdio.h                T
 7851 harry    tmux attach                 T
12083 harry    tmux attach                 T
13495 gorylla+ python3.4 -i /home/gorylla1 T
18009 conr1d   vim                         T
19664 enythin+ python                      T
24906 wardlist python                      T

4
2018-02-26 06:47



বর্তমান শেল সংযুক্ত কাজ বন্ধ পেতে, jobs -ps এই উত্তর চেয়ে সহজ। যে বলা হচ্ছে, এই উত্তর শুধুমাত্র মাধ্যমে কাজ বন্ধ দেখায় না Ctrl-Z একটি শেল মধ্যে, কিন্তু সব কাজ বন্ধ: অন্যান্য শেল, অন্যান্য ব্যবহারকারীদের, ডিবাগ করা কাজ সহ (উদাঃ gdb)। - Stéphane Gourichon