gpt4 book ai didi

linux - 多个 PID 存储在 PID 文件中

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:06 29 4
gpt4 key购买 nike

我有一个我开发的用于启动 Java 程序的 System V 初始化脚本。由于某种原因,无论何时创建 PID 文件,它都包含多个 PID 而不是一个。

下面是启动服务并写入PID文件的相关代码:

daemon --pidfile=$pidfile "$JAVA_CMD &" >> $logfile 2>&1
RETVAL=$?
usleep 500000

if [ $RETVAL -eq 0 ]; then
touch "$lock"

PID=$(ps aux | grep -vE 'grep|runuser|bash' | grep <myservice> | awk '{print $2}')

echo $PID > $pidfile

当我手动测试 ps aux... 命令时,返回一行。作为脚本运行时,此调用似乎返回了多个 PID。

PID 文件中的示例内容:16601 16602 16609 16619 1669016619是手动运行上面提到的ps aux...命令时找到的实际进程ID。

最佳答案

尝试反转你的 greps。第一个 (-vE) 可能会在 myservice 启动之前运行。首先为您的服务 Grep,然后过滤掉不需要的行:

PID=$(ps aux | grep <myservice> | grep -vE 'grep|runuser|bash' | awk '{print $2}')

关于linux - 多个 PID 存储在 PID 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40367902/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com