直到现在我用
pidof -o %PPID -x "my-tool"
Run Code Online (Sandbox Code Playgroud)
检测最终运行的 my-tool 实例的 pid。
这是 my-tool 文件的简短版本,一个可执行的 bash 脚本
#!/bin/bash
if pidof -o %PPID -x "my-tool"; then
echo "Already running"
exit 1
fi
... if not running go on
Run Code Online (Sandbox Code Playgroud)
但是现在我需要允许每个用户有一个实例,每个机器有多个实例,所以我们甚至可以在同一时刻运行 100 个 my-tool,但每个用户只能运行 1 个。
请注意,我需要一个测试来创建类似单例的东西。如果该工具将启动并且有另一个实例正在运行,它将自行关闭。
简而言之:我需要一个 bash 脚本可以检测自身是否已经为当前用户运行,在这种情况下它必须退出。
如何 ?
bash ×1