【问题标题】:Bash exec write output to logfile and write PID to seperate fileBash exec 将输出写入日志文件并将 PID 写入单独的文件
【发布时间】:2018-05-30 19:05:02
【问题描述】:

我在理解 BASH 时遇到问题,将 exec 命令的输出写入日志文件并将 PID 写入单独的文件。 这就是我到目前为止所尝试的:

exec ./node -connect-manager -manager-address $MANAGER_IP:5998 -manager-web $MANAGER_IP:8000 >> /var/log/skywirenode.log >> echo $$ > /home/odrod420/skywireScript/node.pid &

有人知道我在想什么吗?

提前致谢!

【问题讨论】:

    标签: bash file logging exec pid


    【解决方案1】:

    您不能在单个语句中对stdout 进行多次重定向。 echo 语句应作为单独的语句完成:

    echo $$ > /home/odrod420/skywireScript/node.pid
    exec ./node -connect-manager -manager-address $MANAGER_IP:5998 -manager-web $MANAGER_IP:8000 >> /var/log/skywirenode.log 2>&1
    

    如果你想在后台运行node并将它的PID保存在文件中,你不应该使用exec,你应该在命令后面加上&,并在文件中回显$!

    ./node -connect-manager -manager-address $MANAGER_IP:5998 -manager-web $MANAGER_IP:8000 >> /var/log/skywirenode.log 2>&1 &
    echo $! > /home/odrod420/skywireScript/node.pid
    

    【讨论】:

    • 也许我的方法完全错误,但是使用“echo $$”,我想将“./node”的 PID 转发到单独的文件
    • @McJohnson ./node 的 pid 将是 $$ 因为你是 exec
    • @McJohnson 我已更新答案以显示如何在后台运行 ./node 并将其 PID 保存在文件中。
    • 您可能还想将 stderr 重定向到日志文件:cmd >log 2>&1cmd &>log
    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2017-11-21
    • 2012-04-06
    • 2013-06-26
    • 2012-10-06
    • 2019-04-11
    • 2012-01-16
    相关资源
    最近更新 更多