Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan pid untuk menyemak sama ada proses wujud dalam linux

Cara menggunakan pid untuk menyemak sama ada proses wujud dalam linux

WBOY
WBOYasal
2022-04-07 12:37:416799semak imbas

Di Linux, anda boleh menggunakan perintah bunuh untuk menyemak sama ada proses itu wujud berdasarkan pid "kill -0" tidak akan menghantar isyarat kepada proses, tetapi akan melakukan semakan ralat Jika proses itu wujud , hasil yang dikembalikan ialah 0. Jika Proses tidak wujud, hasil yang dikembalikan ialah 1, dan sintaksnya ialah "bunuh -0 pid".

Cara menggunakan pid untuk menyemak sama ada proses wujud dalam linux

Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.

Cara menggunakan pid untuk menyemak sama ada proses wujud dalam Linux

Andaikan kita kini ingin memantau sama ada sesuatu proses itu hidup dan menyemaknya setiap minit Menggunakan kaedah di atas, kita perlu jalankan arahan ps dan lakukan sekali setiap minit grep carian biasa. Overhed ini kelihatan tiada pada pelayan, tetapi bagaimana jika kita mahu memantau berpuluh-puluh atau beratus-ratus proses sedemikian pada nod yang sama pada masa yang sama? Oleh itu, kita perlu meneroka beberapa kaedah yang lebih baik dari perspektif prestasi.

Untuk proses daemon, mereka biasanya mempunyai fail pid atau kunci sendiri Kami boleh menyemak sama ada fail ini wujud untuk menentukan sama ada proses itu wujud. Walau bagaimanapun, dalam beberapa keadaan yang tidak normal, proses di mana fail pid wujud tidak wujud. Oleh itu, anda tidak boleh bergantung pada fail pid proses untuk mengesan sama ada proses itu masih hidup.

Kaedah yang boleh dipercayai ialah menggunakan "kill -0 pid", kill -0 tidak akan menghantar sebarang isyarat kepada proses, tetapi akan melakukan semakan ralat. Perintah mengembalikan 0 jika proses wujud dan 1 jika ia tidak wujud.

Cara menggunakan pid untuk menyemak sama ada proses wujud dalam linux

Walau bagaimanapun, kaedah ini hanya boleh digunakan untuk pengguna biasa menyemak proses mereka sendiri, kerana penghantaran isyarat kepada proses pengguna lain akan menyebabkan ralat kerana kekurangan kebenaran dan pulangan Nilainya juga 1.

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
1
[sw@gentoo ~]$

Sudah tentu, jika anda melaksanakan perintah bunuh sebagai pengguna istimewa, tidak akan ada masalah kebenaran.

Sebaliknya, kami tahu bahawa kernel akan mengeksport maklumat proses yang berjalan dalam sistem melalui sistem fail maya /proc Setiap proses mempunyai direktori /proc/ Oleh itu, kita boleh menukar pengesanan kewujudan proses kepada pengesanan kewujudan direktori /proc/

Cadangan berkaitan: "Tutorial Video Linux"

Atas ialah kandungan terperinci Cara menggunakan pid untuk menyemak sama ada proses wujud dalam linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn