gpt4 book ai didi

linux - 从 nohup + sudo 获取 pid 和返回状态

转载 作者:搜寻专家 更新时间:2023-11-01 00:18:34 24 4
gpt4 key购买 nike

我有一个 shell 片段:

nohup sudo node server.js >> node.log 2>&1 &

if [ $? -eq 0 ]; then
echo $! $?
echo $! > pids
fi

我期望的是,如果node server.js正常运行,那么将这个进程的pid记录到文件:pids。

但它不起作用,$? 始终为 0,因为它是 sudo 进程的状态?而$!也不是node命令进程的pid。

那么如何在上面的shell脚本中得到node server.js的正确返回码和pid呢?

最佳答案

我的最终解决方案:

#!/usr/bin/env bash

ROOT=$(cd `dirname $0`; pwd)

sudo kill -9 `cat ${ROOT}/pids` || true

nohup sudo node server.js >> node.log 2>&1 &

sleep 1

pid=$(ps --ppid $! | tail -1 | awk '{ print $1 }')

if echo $pid | egrep -q '^[0-9]+$'; then
echo $pid > ${ROOT}/pids
else
echo 'server not started!'
fi

关于linux - 从 nohup + sudo 获取 pid 和返回状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20716495/

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