如何在BASH中找到类似的命令?

时间:2017-08-15 02:42:00

标签: shell command-line matching

环境

  • 正常linux中的Bash
  • 可执行文件:/ usr / bin / eexxee

要求

我只需运行一次follow命令: bash eexxee -a xxxx -b xxxx 我们可以使用以下类似的命令行启动此命令: bash eexxee -b xxxx -a xxxx /usr/bin/eexxee -b xxxx -a xxxx /usr/bin/eexxee -a xxxx -b xxxx 现在我想写一个shell / python脚本来启动这个命令,检查类似的命令行是否正在运行。

问题

我们如何判断这些类似命令行的匹配?

2 个答案:

答案 0 :(得分:0)

不确定你需要多少差异化,但这两个应该足够了:

  1. lsof /usr/bin/eexxee
  2. ps fxau | grep eexxee

答案 1 :(得分:0)

也许这样的事情会有所帮助。

我在写这篇文章时做了一些假设。 我假设xxxx和yyyy将永远是第二或第四个参数。

#!/usr/bin/bash

# exeee -a xxxx -b yyyy
# $0 = exeeee
# $1 = -a
# $2 = xxxx
# $3 = -b
# $4 = yyyy

pid=$$

cnt=$(
ps -ef |\
grep 'eexxee -[ab] '"$2"' -[ab] '"$4"'$' |\
grep -v $pid |\
wc -l
)

if [ $cnt -ne 0 ];then
   echo "another instance running"
   exit 1
fi