Tôi có một tập lệnh init /etc/init.d/myservice
để khởi tạo một dịch vụ như thế này:
...
start() {
...
daemon /usr/sbin/myservice
...
}
stop() {
...
pgrep myservice
pidof myservice
ps -ef | grep myservice
...
}
Và khi tôi cố gắng dừng dịch vụ, đây là đầu ra:
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
Đây có phải là mong đợi? Tại sao pidof
chỉ trả lại đúng PID của dịch vụ mà tôi muốn dừng và pgrep
trả lại PID dịch vụ và PID của tập lệnh init? Tôi có thể dựa vào đó pidof
sẽ luôn bỏ qua PID từ tập lệnh init không?
pidof
không trở lại10001
, bởi vì chương trình làsh
, không?