使用这个
OF=$(ps fax | grep 'php-fpm: master process' | awk '{print $1}')
IDX=`expr index $OF ' '`
我收到一个错误。 $OF 变量的结果是:
27797 27495
这里有什么错误?我认为这与变量如何传递到表达式中有关。另外,尝试在 $OF 变量周围添加 ' 引号,但无济于事。这只是返回 0 作为未找到。
答案1
你应该使用pgrep
grep进程号一个过程的。这是最安全的方法。某些系统(旧系统)没有,pgrep
因此您将被迫使用某些东西作为ps
.如果您使用,ps
您应该考虑以下事项。您的行使用了grep
and ,awk
这不是必需的,因为您可以使用 awk 处理所有这些。
of=$(ps fax | awk '/[p]hp-fpm: master process/{print $1}')
作为旁注。普通变量名不要使用大写。按照惯例,环境变量是大写的。
在此阶段,您的变量$of
将保存php-fpm
.由于你的问题不清楚,我不确定expr
那里在做什么。
答案2
你需要双引号:
IDX=`expr index "$OF" ' '`
不带引号,该expr
命令看起来像
expr index 27797 27495 ' '
这没有任何意义。使用单引号,您将传递由、和(不包含任何空格)expr
组成的三字符长字符串。将变量放在双引号中几乎总是一个好主意 - 当值可能包含空格或任何其他特殊字符时,这一点至关重要。$
O
F