3

I'm using CentOS 7. I'm trying to write a script to start and stop a puma process but I can't figure out how to get the "master" PID, if taht is even the right term. In the below command

[rails@server myproject_production]$ ps aux | grep puma
rails    15767  0.0  1.2 437904 13612 ?        Sl   17:20   0:00 puma 3.11.4 (tcp://0.0.0.0:3000,unix:///home/rails/myproject_production/shared/sockets/puma.sock) [myproject_production]
rails    15779  0.6  7.6 1061248 80688 ?       Sl   17:20   0:05 puma: cluster worker 1: 15767 [myproject_production]
rails    15781  0.6  7.7 1061248 80876 ?       Sl   17:20   0:05 puma: cluster worker 2: 15767 [myproject_production]
rails    15785  0.6  7.4 1061964 78488 ?       Sl   17:20   0:05 puma: cluster worker 3: 15767 [myproject_production]
rails    15880  0.7  7.4 1059612 78592 ?       Sl   17:22   0:05 puma: cluster worker 0: 15767 [myproject_production]
rails    17106  0.0  0.1 112612  1064 pts/0    S+   17:33   0:00 grep --color=auto puma

The master PID is "15767". If I kill that all the other puma processes will die. How do I write a command to get taht into a script variable?

1
  • I naively assume you can grep for more text from that line of ps, why can't you?
    – ajeh
    Commented May 9, 2018 at 21:53

2 Answers 2

5

Use pgrep instead of filtering the output from ps. I think in your case, pgrep -f '^([^ ]*/)?puma ' will match the right process, but experiment a bit to make sure that you're getting what you want and no more.

Once you're satisfied that pgrep is finding the process you want to kill, replace pgrep by pkill.

0
0

You could do that using ps as follow:

ps -ef | grep puma | grep -v grep | grep -v cluster | awk '{print $2}' | xargs kill

Explaination:
ps: gives the process information
grep: filters on the string provided
grep -v: removes the one with matching records
awk '{print $2}': returns the second item from the line
xargs: converts the input provided into arguments for the command that follows it

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .