Jadi saya membuat beberapa skrip PHP berjalan dari baris perintah, dan ingin menghentikannya.
Saya berlari
$ ps aux | grep php
$ sudo kill 8754
$ sudo kill 8767
Dan kemudian berlari
$ ps aux | grep php
lagi untuk memeriksa proses telah dihentikan tetapi mendapat hasil seperti ini:
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
Aku mencari tahu apa yang dimaksud T di kolom negara bagian dan menemukan bahwa itu berarti Berhenti, tetapi saya tidak mengerti apa artinya proses itu dilakukan.
Saya tahu Anda dapat membuat penanganan sinyal Anda sendiri di PHP, tetapi saya belum melakukannya, jadi ketika PHP menerima sinyal SIGTERM apa fungsinya?
Apa yang dilakukan proses yang terhenti (jika ada)?
sumber
kill $pid
misalnya) saat dihentikan, maka (TERLambat) akan merespons JANGKA tersebut dan berakhir.kill 8754
yang seharusnya menyebabkan proses akhirnya berakhir kan? Apakah Anda tahu di negara bagian mana suatu proses akan berlangsung sementara itu sudah hampir berakhir? Mengingat bahwa proses memasuki status STOP, seolah-olah telah menerima sinyal STOP darikill -STOP 8754
, dapatkah itu juga terjadi jika ia mengirim sinyal TERM?TERM
sinyal sampai itu dilanjutkan. Ini akan segera berakhir jika menerimaKILL
sinyal, bahkan ketika berhenti. Saya berasumsi bahwa suatu proses akan berada dalam kondisi Jalankan ketika berakhir. Saya tidak terlalu terbiasa dengan PHP, dan tidak tahu bagaimana mengatakan mengapa suatu proses berhenti, maaf. Namun, secara umum, proses tidak berhenti tetapi berhenti ketika mereka menerimaTERM
.Proses terhenti di Linux / Unix adalah proses / tugas yang menerima sinyal penangguhan (
SIGSTOP
/SIGTSTP
) yang memberitahu kernel untuk tidak melakukan pemrosesan apa pun di dalamnya seperti yang telah dihentikan, dan itu hanya dapat melanjutkan kembali pelaksanaannya jika mengirimkanSIGCONT
sinyal.Pada dasarnya proses berhenti menunggu sinyal lanjutan dari kernel, sama seperti proses yang ditangguhkan menunggu kondisi bangun dari kernel.
Kredit gambar: polytechnique.fr
Setiap proses dalam kernel Linux diwakili oleh
task_struct
struktur data dan setiaptask
vektor terdiri dari array pointer ke setiaptask_struct
. yang menggambarkan suatu proses atau tugas dalam sistem (baik ituunrunnable
,runnable
ataustopped
). Lihat: Proses dan Struktur Data Linux ) untuk lebih jelasnya.Lihat juga: Kernel Linux: Manajemen Proses
sumber