pgrep命令不显示bash脚本

时间:2017-03-27 18:46:31

标签: bash

当我运行一个简单的bash脚本时,请说myscript.sh

#!/bin/bash
sleep 30
从终端

然后执行pgrep myscript.sh我没有得到任何结果。为什么呢?

2 个答案:

答案 0 :(得分:1)

你可能会这样做:

pgrep myscript.sh

这不会显示您正在运行的流程,因为正在运行您的脚本的是/bin/bash

你应该这样做:

pgrep -fl myscript.sh

列出您的流程。

根据man pgrep

  

-f在流程的完整参数字符串中匹配模式 where ,而不仅仅是可执行文件名。

答案 1 :(得分:1)

您刚刚运行bash脚本,需要使用-f标志,请检查man page 检查pgrep是否已安装在您的机器中。如果找不到安装该实用程序的命令,只需执行testfunction<-function(x){ x_2_columns=data.frame(x[34],x[23]) x_2_columns_no_na=na.omit(x_2_columns) counter=0 x_2_columns_no_na[,1]<-as.numeric(x_2_columns_no_na[,1] ) x_2_columns_no_na[,2]<-as.numeric(x_2_columns_no_na[,2] ) for(i in 1:nrow(x_2_columns_no_na)){ if (x_2_columns_no_na[i,1]>x_2_columns_no_na[i,2]) {counter=counter+1 } } return(counter) } testoutput<-apply(df, 1, testfunction)

pgrep查看当前正在运行的进程,并将与选择条件匹配的进程ID列出到stdout。所有标准都必须匹配。

使用示例:

man pgrep

如果使用pgrep名称|杀死,pgrep名称的输出是杀死stdin的。因为kill不会从stdin读取参数,所以这不起作用。

使用xargs,它将构建来自stdin的kill参数。例如:

pgrep name | xargs kill