小编Ste*_*let的帖子

标记/识别进程以稍后杀死它们的最佳方法?

在我的 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)的问题,所以我正在寻找更好的方法。

  • 某些进程有办法将 pid 存储在某处,这很好,但通常我对仅基于某个文件中的 pid 杀死进程持怀疑态度。
  • Solaris 有项目,在我有限的经验中并不是所有的玫瑰,因为您必须先设置 /etc/projects,但它确实可以轻松标记并稍后查找进程。
  • 也许使用环境,比如设置一个像 (MYID=myserver) 这样的环境变量,然后用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)

linux startup-scripts

5
推荐指数
1
解决办法
4464
查看次数

标签 统计

linux ×1

startup-scripts ×1