Linux'ta durdurulan bir süreç nedir?


11

Bu yüzden komut satırından çalışan bazı PHP komut dosyaları vardı ve çalışmasını durdurmak istedim.

Koştum

$ ps aux | grep php
$ sudo kill 8754
$ sudo kill 8767

Ve sonra koştu

$ ps aux | grep php

İşlemlerin sonlandırıldığını kontrol etmek için yine bu tür çıktılar aldık:

jon      8754  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon      8767  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon     12275  0.0  0.0   4156   892 pts/1    S+   11:27   0:00 grep --color=auto php

Ben T ne anlama geldiğini baktı devlet sütununda ve Durduruldu anlamına keşfetti, ama bu süreç yapıyor ne anlama geldiğini anlamıyorum.

PHP'de kendi sinyal işleme sisteminizi oluşturabileceğinizi biliyorum , ancak bunu yapmadım, PHP bir SIGTERM sinyali aldığında ne yapar?

Durdurulmuş bir işlem ne yapıyorsa (eğer varsa)?

Yanıtlar:


14

Bu, işlemin bir STOPsinyal aldığı ve CONTsonlandırmadan bile bir sinyal alana kadar hiçbir şey yapmadığı anlamına gelir .

En yaygın STOPsinyal kaynağı ^z, işlem ön planda iken kullanıcının isabet etmesidir ve CONTdaha sonra göndermenin genel yolu sırasıyla yazarak fgveya bgişlemi ön planda ve arka planda devam ettirmektir.

Bir STOPsürece göndermek için başka bir yoldur kill -STOP $pid. Benzer şekilde CONTile bir işleme gönderilebilir kill -CONT $pid.

TERMİşlemlere sinyal gönderdiğinizden , onların sona ermesini istediğinizi varsayıyorum. Bunun gerçekleşmesi için süreçlerin CONTsinyal alması gerekir . Bunları kill -CONT 8754 8767bir terminal penceresine yazarak gönderebilirsiniz .


Bir CONT sinyali göndermek, komut dosyasının tamamlanana kadar çalışmasına izin verir mi? Yoksa komut dosyasının derhal sonlandırılmasına neden olur mu?
Jon

Süreç, bir CONT aldıktan sonra (STOP'tan önce) ne yaptığını sürdürür. kill $pidAncak, durdurulduğunda bir TERM ( örneğin) gönderirseniz, o zaman (gecikmeli olarak) söz konusu TERM'e cevap verir ve sonlanır.
Eroen

Hmm, ben de çalışarak bir TERM gönderdim, bu kill 8754da sürecin nihayetinde fesih yapmasına neden olacak? Sonlandırılmaya yaklaşırken bir sürecin hangi durumda olacağını biliyor musunuz? İşlemin STOP durumuna girdiği düşünülürse, STOP sinyali almış gibi kill -STOP 8754, TERM sinyali gönderilmişse de olabilir mi?
Jon

Durdurulmuş bir işlem TERM, devam edene kadar bir sinyal nedeniyle sona ermeyecektir . Durduğunda KILLbile bir sinyal alırsa derhal sonlandırılır . Bir işlem sonlandığında Run durumunda olacağını varsayalım. PHP ile pek aşina değilim ve bir sürecin neden durduğunu nasıl anlayacağımı bilmiyorum, üzgünüm. Genel olarak, yine de, işlemler durmaz, aldıklarında sonlanırlar TERM.
Eroen

3

Linux / Unix'teki durdurulan işlem , çekirdeğe durduruldukça üzerinde herhangi bir işlem gerçekleştirmemesini söyleyen askıya alma sinyali ( SIGSTOP/ SIGTSTP) alan bir işlem / görevdir ve yalnızca SIGCONTsinyal gönderilirse yürütülmesine devam edebilir .

Temel olarak durdurulmuş işlem, çekirdekten bir devam sinyali bekler, askıya alınmış işlem de çekirdekten uyanma koşulunu bekler.

Linux çekirdeği işlem durumu: Hazır, Çalışıyor, Durduruldu, Askıya Alındı, İzlendi, Zombi

Resim kredisi: polytechnique.fr


Linux çekirdeğindeki her işlem bir task_structveri yapısı ile temsil edilir ve her taskvektör her birine bir dizi işaretçi içerir task_struct. burada (o sistemde ya da bir işlem veya görev tarif unrunnable, runnableya da stopped). Daha fazla bilgi için bakınız: İşlemler ve Linux Veri Yapıları ).

Ayrıca bakınız: Linux Çekirdeği: Süreç Yönetimi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.