如何为使用 nohup 运行的脚本提供输入?

如何为使用 nohup 运行的脚本提供输入?

我的服务器上正在运行一个脚本,例如test.sh。我使用以下命令执行了它 -

nohup test.sh

现在我想将一个输入传递quit给该脚本,以便它可以正常终止(该脚本会生成许多临时文件,如果您传递该quit命令,它会删除所有临时文件然后终止自身)

我知道该进程的 PID,但是如何将命令传递给该 PID?

答案1

如果它是一个 bash 脚本,您可以使用信号。

例如,此脚本将捕获信号 SIGUSR1,进行清理并退出。如果没有收到信号,它将在 60 秒后结束:

#!/bin/bash

function graceful_exit()
{
  echo "Graceful exit..."
  # your cleanup commands
  exit 0
}

trap graceful_exit USR1

sleep 30 & wait $!

echo "Normal exit"

因此,运行脚本:

$ nohup script.sh

kill然后,使用您所说的 PID发送 SIGUSR1 信号:

$ kill -SIGUSR1 PID

相关内容