重新登陆终端,后台运行脚本无输出问题定位

测试脚本mytest.sh

#!/bin/bash
localtime=`date "+%Y-%m-%d_%H:%M:%S"`
logfile=logs/${
    
    localtime}.txt
PID=$(ps aux| grep node_exporter | grep -v 'grep' | awk '{print $2}')

while [ "PID" != "" ]
do
        cpuinfo=$(top -n 1 -b -d 1 | grep 'node_exporter'|grep -v grep| awk '{print $9,$10,$(NF-1)}')
        echo "PID=$PID;localtime=$localtime;cpuinfo=$cpuinfo" >> $logfile
        sleep 1
done

后台运行脚本的命令

setsid sh mytest.sh

查看日志
在这里插入图片描述

退出终端再次查看日志
在这里插入图片描述
可以看到日志还是在增加,脚本还是在运行的

最后添加全部打印发现重新登陆后进程名被截断,导致grep匹配为空
在这里插入图片描述

最后修改为用PID匹配

#!/bin/bash
localtime=`date "+%Y-%m-%d_%H:%M:%S"`
logfile=logs/${
    
    localtime}.txt
PID=$(ps aux| grep node_exporter | grep -v 'grep' | awk '{print $2}')

while [ "PID" != "" ]
do
        cpuinfo=$(top -n 1 -b -d 1 -p $PID | grep $PID |grep -v grep| awk '{print $9,$10,$(NF-1)}')
        echo "cpuinfo=$cpuinfo;$localtime" >> $logfile
        sleep 1
done

猜你喜欢

转载自blog.csdn.net/qq_28686911/article/details/114920319