当我运行一个简单的bash脚本时,请说myscript.sh
#!/bin/bash
sleep 30
从终端然后执行pgrep myscript.sh
我没有得到任何结果。为什么呢?
答案 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