Pgrep erroneously includes `sh` output as a process
On an idle node, you can see that git_upload_pack_http
and git_upload_pack_ssh
always return 1:
$ curl http://localhost:9168/process
process_count{name="sidekiq"} 0
process_count{name="unicorn"} 30
process_count{name="git_upload_pack_http"} 1
process_count{name="git_upload_pack_ssh"} 1
process_memory_bytes{name="unicorn",field="RssFile",quantile="50th"} 16908288
process_memory_bytes{name="unicorn",field="RssFile",quantile="90th"} 17645568
process_memory_bytes{name="unicorn",field="RssFile",quantile="99th"} 17645568
process_memory_bytes{name="unicorn",field="RssAnon",quantile="50th"} 663162880
process_memory_bytes{name="unicorn",field="RssAnon",quantile="90th"} 668192768
process_memory_bytes{name="unicorn",field="RssAnon",quantile="99th"} 675504128
process_memory_bytes{name="unicorn",field="VmRSS",quantile="50th"} 681541632
process_memory_bytes{name="unicorn",field="VmRSS",quantile="90th"} 686592000
process_memory_bytes{name="unicorn",field="VmRSS",quantile="99th"} 693374976
process_memory_bytes{name="unicorn",field="VmData",quantile="50th"} 766414848
process_memory_bytes{name="unicorn",field="VmData",quantile="90th"} 792629248
process_memory_bytes{name="unicorn",field="VmData",quantile="99th"} 793677824
process_age_seconds{name="unicorn",quantile="50th"} 833.339999999851
process_age_seconds{name="unicorn",quantile="90th"} 833.8900000001304
process_age_seconds{name="unicorn",quantile="99th"} 833.9300000001676
This appears to happen because of the way pgrep
is invoked by Ruby:
irb(main):011:0* `pgrep -f "git-upload-pack --stateless-rpc"`
=> "11571\n"
It seems when the argument list is more than one word and -f
is used we get this result.
Edited by Stan Hu