nohup 无法正常工作

nik*_*sdi 5 unix linux bash nohup

我有一个非常简单的 bash 脚本。我希望这个 bash 脚本在我从终端注销后继续运行,因为它正在监视一些服务。但是,我遇到的问题是,一旦我退出终端,进程就会终止。

我运行这个过程:

nohup ./test.sh > test.log & 
Run Code Online (Sandbox Code Playgroud)

我使用以下方法检查过程:

 ps -aux | grep test.sh
Run Code Online (Sandbox Code Playgroud)

当我运行该进程时,我会检查脚本是否正在运行。但是,当我重新连接时,脚本不再运行。

test.sh文件内容如下:

#!/bin/bash
while :
do
        echo `date`": ****** Scheduled Test *****"
        result1=$(wget "127.0.0.1" -q -O -)
        result2=$(wget "127.0.0.1" -q -O -)
        echo ": $result1"
        echo ": $result2"
        if [[ $result1 == *"Running OK"* ]] && [[ $result2 == *"Running OK"* ]];
        then
                echo "***** Running OK ***** :)"
                sleep 60
                continue
        fi
        echo "@@@@@ Not Running @@@@@"
        echo "-----> Killing JARS"
        kill -9 `lsof -i:4445 | cut -d' ' -f5`
        kill -9 `lsof -i:4423 | cut -d' ' -f5`
        ./runsomejar.sh > jar1.log & 
        echo "-----> Restarting jar1"
        sleep 60
        echo "-----> Restarting jar2"
        ./runsomejar.sh > jar2.log &
        sleep 180
done
Run Code Online (Sandbox Code Playgroud)

Eri*_*nil 5

你可以使用screen

screen -L ./test.sh
Run Code Online (Sandbox Code Playgroud)

您可以使用 Ctrl-Ad来分离屏幕。

不用杀就可以退出test.sh

您可以重新登录并输入

screen -r
Run Code Online (Sandbox Code Playgroud)

回到你的脚本。

标准输出将被记录到screenlog.0