लिनक्स: विख्यात प्रक्रिया देखें और मारें


4

मैंने लिनक्स का उपयोग करके एक कार्यक्रम शुरू किया है &और disown
मैं यह देखना चाहता हूं कि क्या यह अभी भी चल रहा है और संभवतः इसे मार सकता है।

मैंने इन जैसे कमांड के साथ प्रक्रिया शुरू की:

(env)bash-4.2$ python manage.py update_rollups &

[1] 29144

(env)bash-4.2$ disown

मैं अब इसे पा नहीं सकता ps aux, न ही इसे पीड के आधार पर मार सकता हूं 29144
मैं जानना चाहता हूं कि क्या प्रक्रिया अभी भी चल रही है (अंडर init?)।

मुझे उम्मीद है आप सहायता कर सकते हैं!


सुपर यूजर पर आपका स्वागत है। उत्तर देने वालों को प्रतिक्रिया दें, याद रखें कि आप अपने प्रश्न को संपादित कर सकते हैं , उत्थान कर सकते हैं , उत्तरों को घटा सकते हैं और उनमें से किसी एक को चुन सकते हैं यदि आपको लगता है कि यह आपके प्रश्न को हल करता है।
11

जवाबों:


4

संक्षेप में

के साथ &और disownआप प्रक्रिया के पीआईडी [ 1 ] को नहीं बदलते हैं।
यदि आप इसे ps -p <YOURPID>आउटपुट में नहीं देखते हैं , तो यह अधिक चलने वाला नहीं है।
आप कर सकते हैं पर-जाँच इसके साथ एक अतिरिक्त echo $? [ 2 ] के बाद ps(या kill) आदेश, जाँच करता है, तो प्रोग्राम एक निकास कोड से अलग के साथ बाहर निकल जाता है 0(आमतौर पर 1)।

आपकी आज्ञाओं को समझना।

  • बैकग्राउंड : जब आप कमांड को फाइनल करते हैं &तो आप इसे बैकग्राउंड में भेजते हैं।
    इस का मतलब है कि:

    • यह आपके शेल की नौकरी सूची में मौजूद है (आपके उदाहरण में संख्या है [1]और आप इसे इस रूप में संदर्भित कर सकते हैं %1; (कमांड का प्रयास करें jobs)।
    • आप इसे अग्रभूमि में और पृष्ठभूमि में fgऔर साथ ला सकते हैं bg
    • यह (अभी भी) "स्वामित्व" (माता-पिता से जुड़ा हुआ) शेल है: यदि शेल को एक SIGHUPसंकेत मिलता है , तो यह SIGHUPप्रक्रिया को भी एक संकेत भेजेगा ।

      $ sleep 1h &
      [1] 10795
      $ jobs
      [1]+  running           sleep 1h & 
      $ ps -l -p 10795       
      F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
      0 S  1000 10795  8380  0  80   0 -  3107 hrtime pts/57   00:00:00 sleep
  • Disown : कमांड के साथ disownआप शेल की जॉब लिस्ट से जॉब को हटा देते हैं, लेकिन आप इसके PID को नहीं बदलते हैं।

    $ disown
    $ jobs
          # <---- No jobs
    $ ps -l -p 10795
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 10795  8380  0  80   0 -  3107 hrtime pts/57   00:00:00 

    उसी पीपीआईडी ​​पर ध्यान दें (शेल अभी भी मौजूद है)।
    अब हम खोल को मारते हैं।

    $ kill 8380   # Here we kill the shell 
    $ ps -l -p 10795
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 10795  5339  0  80   0 -  3107 hrtime pts/57   00:00:00 sleep

    एक और है PPID, 5339, कि का एक और मंगलाचरण के साथ ps, ps -p 5339, आप एक होने के लिए पता चल जाएगा initउदाहरण:

    $ ps -p 5339
    PID TTY          TIME CMD
    5339 ?        00:02:20 init

pstree: जल्दी रास्ता।

आप pstreeअधिक तेज़ी से देख सकते हैं ।

इससे पहले कि disownऔर मारने बैश कमांड:

$ pstree -s -p 10795 
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)

मारdisown और मार के बाद :

$ pstree -s -p 10795 
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)

नोट: निश्चित रूप से आपके मामले में सभी PID अलग-अलग होंगे ...


3

अगर यह नहीं है ps auxf, तो यह नहीं चल रहा है। यदि आप दौड़ते हैं kill 29144और "ऐसी कोई प्रक्रिया नहीं" प्राप्त करते हैं, तो इसका मतलब यह भी है कि प्रक्रिया नहीं चल रही है।


हम्म, मैं ps auxf के साथ प्रक्रिया नहीं देखता, या यह इनमें से एक में छिपा हो सकता है? WEB0117 32409 0.3 0.2 583004 39360? Sl 12:49 0:01 _ WEB0117 -k प्रारंभ (WEB0117 उपयोगकर्ता Im के रूप में चल रहा है)
user715198

2

प्रत्येक प्रक्रिया में /procफाइल सिस्टम में एक फोल्डर होता है pid। यदि फ़ोल्डर मौजूद नहीं है, तो प्रक्रिया नहीं चल रही है।

उदाहरण के लिए

/proc/29144/

आप इस प्रक्रिया को देख सकते हैं commandline

cat /proc/29144/cmdline

उदाहरण आउटपुट:

/usr/sbin/smbd

या प्रक्रिया फ़ाइल स्थिति की जाँच करें

stat /proc/29144/exe

उदाहरण आउटपुट:

File: /proc/29144/exe -> /usr/sbin/smbd
  Size: 0               Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 78497       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-04-07 12:18:01.719011505 +0200
Modify: 2017-04-07 12:18:01.369010535 +0200
Change: 2017-04-07 12:18:01.369010535 +0200
 Birth: -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.