Saya memiliki skrip init /etc/init.d/myservice
untuk menginisialisasi layanan seperti ini:
...
start() {
...
daemon /usr/sbin/myservice
...
}
stop() {
...
pgrep myservice
pidof myservice
ps -ef | grep myservice
...
}
Dan ketika saya mencoba menghentikan layanan, ini adalah output:
10000 10001
10000
root 10000 1 0 09:52 ? 00:00:02 /usr/sbin/myservice
root 9791 9788 0 10:06 pts/1 00:00:00 /bin/sh /sbin/service myservice stop
root 10001 9791 1 10:06 pts/1 00:00:00 /bin/sh /etc/init.d/myservice stop
root 9805 9796 0 10:06 pts/1 00:00:00 grep myservice
Apakah ini yang diharapkan? Mengapa pidof
mengembalikan hanya PID yang benar dari layanan yang ingin saya hentikan dan pgrep
mengembalikan PID layanan dan PID dari skrip init? Bisakah saya mengandalkan itu pidof
akan selalu mengabaikan PID dari skrip init?
pidof
tidak kembali10001
, karena programnyash
, bukan?