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 pidofchỉ trả lại đúng PID của dịch vụ mà tôi muốn dừng và pgreptrả lại PID dịch vụ và PID của tập lệnh init? Tôi có thể dựa vào đó pidofsẽ luôn bỏ qua PID từ tập lệnh init không?
pidofkhông trở lại10001, bởi vì chương trình làsh, không?