GNU/Linux >> Belajar Linux >  >> Linux

Linux:Lihat dan matikan proses yang tidak diakui

Singkatnya

Dengan & dan disown Anda tidak mengubah PID proses.
Jika Anda tidak melihatnya di ps -p <YOURPID> output, itu tidak lagi berjalan.
Anda dapat memeriksa ulang dengan echo $? tambahan setelah ps (atau kill ) perintah, memeriksa apakah program keluar dengan kode keluar yang berbeda dari 0 (biasanya 1 ).

Memahami perintah Anda.

  • Latar Belakang :saat Anda meluncurkan perintah dengan & terakhir Anda mengirimkannya di latar belakang.
    Artinya:

    • Itu ada di daftar pekerjaan shell Anda (dalam contoh Anda adalah nomor [1] dan Anda dapat menyebutnya sebagai %1; (coba perintah jobs ).
    • Anda dapat membawanya di latar depan dan di latar belakang dengan fg dan bg .
    • Itu (masih) "dimiliki" oleh shell (ditautkan ke induk):jika shell menerima SIGHUP sinyal, itu akan mengirim SIGHUP sinyal ke proses juga.

      $ 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
      
  • Singkirkan :dengan perintah disown Anda menghapus pekerjaan dari daftar pekerjaan shell, tetapi Anda tidak mengubah PID-nya.

    $ 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 
    

    Perhatikan PPID yang sama (shell masih ada).
    Sekarang kita bunuh cangkangnya.

    $ 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
    

    Ada lagi PPID , 5339 , itu dengan doa lain dari ps , ps -p 5339 , Anda akan menemukan menjadi init contoh:

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

pstree :cara yang lebih cepat.

Anda dapat melihat dengan pstree lebih cepat.

Sebelum disown dan bunuh bash perintah:

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

Setelah disown dan bunuh bash :

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

Catatan: tentu saja semua PID dalam kasus Anda akan berbeda...


Jika tidak ada di ps auxf , maka itu tidak berjalan. Jika Anda menjalankan kill 29144 dan dapatkan "Tidak ada proses seperti itu", itu juga berarti prosesnya tidak berjalan.


Setiap proses memiliki folder di /proc sistem file dengan pid . Jika folder tidak ada, proses tidak berjalan.

Misalnya

/proc/29144/

Anda dapat melihat proses commandline

cat /proc/29144/cmdline

contoh keluaran:

/usr/sbin/smbd

atau periksa status file proses

stat /proc/29144/exe

contoh keluaran:

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: -

Linux
  1. Linux – Kapan Saya Tidak Harus Membunuh -9 Proses?

  2. Bagaimana cara mematikan proses di Linux menggunakan perintah?

  3. Linux:Temukan dan Bunuh Proses Zombie

  1. Cara mematikan proses zombie di Linux

  2. Cara Menemukan dan Membunuh Proses Zombie di Linux

  3. skrip linux untuk membunuh proses java

  1. Mengelola proses di Linux dengan kill dan killall

  2. bunuh Contoh Perintah di Linux

  3. Cara Menjeda/Melanjutkan Proses di Linux