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 perintahjobs
). - Anda dapat membawanya di latar depan dan di latar belakang dengan
fg
danbg
. -
Itu (masih) "dimiliki" oleh shell (ditautkan ke induk):jika shell menerima
SIGHUP
sinyal, itu akan mengirimSIGHUP
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
- Itu ada di daftar pekerjaan shell Anda (dalam contoh Anda adalah nomor
-
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 darips
,ps -p 5339
, Anda akan menemukan menjadiinit
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: -