I want to use ps -ef | grep \"keyword\" to determine the pid of a daemon process (there is a unique string in output of ps -ef in it).
I can kill the pr
ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'
To kill a process by a specific keyword you could create an alias in ~/.bashrc (linux) or ~/.bash_profile (mac).
alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"
You can use pgrep as long as you include the -f options. That makes pgrep match keywords in the whole command (including arguments) instead of just the process name.
pgrep -f keyword
From the man page:
-fThe pattern is normally only matched against the process name. When-fis set, the full command line is used.
If you really want to avoid pgrep, try:
ps -ef | awk '/[k]eyword/{print $2}'
Note the [] around the first letter of the keyword. That's a useful trick to avoid matching the awk command itself.
This is available on linux: pidof keyword
Try
ps -ef | grep "KEYWORD" | awk '{print $2}'
That command should give you the PID of the processes with KEYWORD in them. In this instance, awk is returning what is in the 2nd column from the output.
I use
ps -C "keyword" -o pid=
This command should give you a PID number.