The pipe does not behave like ;. It starts both the processes together. Which is why the grep command showed up too. So when you gave ps aux | grep myprocess , the ps aux included the grep myprocess, so the grep included that in its output.
To check this, I gave two dd commands on my test server like this:
[sreeraj@server ~]$ dd if=/dev/urandom of=/home/sreeraj/myfile1 bs=1M count=1024 | dd if=/dev/urandom of=/home/sreeraj/myfile2 bs=1M count=1024
And when I checked for the dd process, it shows that it both has started at the same time(look at the coloumn that says 2:55 minutes has elapsed) :
[sreeraj@server ~]$ ps aux | grep 'dd if' sreeraj 14891 100 0.2 5376 1416 pts/0 R+ 11:56 2:55 dd if=/dev/urandom of=/home/sreeraj/myfile1 bs=1M count=1024 sreeraj 14892 100 0.2 5376 1412 pts/0 R+ 11:56 2:55 dd if=/dev/urandom of=/home/sreeraj/myfile2 bs=1M count=1024 sreeraj 14936 0.0 0.1 9032 672 pts/1 S+ 11:59 0:00 grep --color=auto dd if [sreeraj@server ~]$
Now, if you want to exclude the grep from getting outputted, use regex. It will exclude the grep from the result:
ps aux | grep "[m]yprocess"
For example, if you are looking for httpd process, use:
ps aux | grep "[h]ttpd"
But I suggest you use pgrep -a, which will be more reliable.
[sreeraj@server ~]$ pgrep -a httpd 8507 /usr/sbin/httpd -DFOREGROUND 8509 /usr/sbin/httpd -DFOREGROUND 8510 /usr/sbin/httpd -DFOREGROUND 8511 /usr/sbin/httpd -DFOREGROUND 8513 /usr/sbin/httpd -DFOREGROUND 8529 /usr/sbin/httpd -DFOREGROUND [sreeraj@server ~]$