如何判断一行shell命令是否在执行。

环境

  • 操作系统: 常用的 linux

  • shell 环境: bash

  • 可执行文件: /usr/bin/eexxee

业务系统启动流程

eexxee -a xxxx
eexxee -b xxxx
eexxee -a xxxx -b xxxx
eexxee -a xxxx -c xxxx

需求

业务系统启动/运行过程中,每一种参数的 eexxee 命令只能执行一次,比如前面已成功执行过如下命令:

eexxee -a xxxx -b xxxx

后面再执行如下相似命令:

eexxee -b xxxx -a xxxx

业务系统就会异常。
现在我想写一个脚本 (shell/python) 来启动该程序,如果不存在相似命令时就执行该命令,否则直接退出。

问题

在执行 “eexxee -a xxxx -b xxxx” 命令前,shell/python 脚本中怎么判断当前系统中是否正在运行其对应的类似命令?

阅读 5.2k
2 个回答

执行的时候touch一个lock文件不就得了?这可以是Linux的通用做法,简单粗暴有效。

[[ -f /tmp/eeelock ]] && exit

touch /tmp/eeelock
eexxee -a xxxx
rm -f /tmp/eeelock

至于锁文件放到/tmp下,因为操作系统在重启的时候通常会自动清空/tmp/,所以不用担心系统重启的时候你的锁文件还在,导致永远无法执行

ps aux|grep eexxee
可以看到所有正在执行的eexxee进程以及启动该进程的命令行参数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进