在我的 linux 启动脚本中,当我启动一个进程时(本示例使用 openvpn,但问题对任何进程都是通用的);
openvpn --config /etc/myserver.conf
Run Code Online (Sandbox Code Playgroud)
找到它并100%确定它是正确的过程并在停止部分杀死它的最佳方法是什么?我通常使用类似的东西:
pid=$(ps -efww | grep -v grep | grep openvpn | grep /etc/myserver.conf | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)
当然它几乎一直都在工作,但有时会出现意外匹配名称几乎相同的进程(例如 myserver.conf-new)的问题,所以我正在寻找更好的方法。
ps e -ef | grep MYID=myserver? 仍然可能会遇到意外匹配的相同问题。我希望有一些简单的东西,比如:
launch --tag myserver openvpn --config /etc/myserver.conf
Run Code Online (Sandbox Code Playgroud)
和
pgrep --tag myserver
Run Code Online (Sandbox Code Playgroud)