I'm pretty sure this has been suggested before, but running a command with the shell's xtrace option set will explicitly show HOW the command is called and HOW its parameters are expanded.
The grep and awk appear in the ps list, so ps *can* find them (race condition). Escape your search expressions, so they are not matching in the arguments.
Put one character in [ ] to achieve that.
With only awk
Stupid question, but why are you using ps and kill in this way? Does your system not have pgrep and pkill which allow you to search for and kill respectively processes by name? Why are you not using the -o option to ps to allow you to select exactly the fields you want to grep for and guarantee that awk will pick them up?