nohup 无法使用 xargs 命令将进程的 pid 保存到文件中

nohup 无法使用 xargs 命令将进程的 pid 保存到文件中

在我正在构建的脚本中,我在将 pid 保存到文件时遇到了问题。

如果在终端中运行以下命令:

nohup mvn spring-boot:run > $HOME/logs/app.log 2>&1 & echo $! > $HOME/pids/app.pid

我无法执行with xargs如下命令:

echo "dirA" | xargs -L 1 -I {}  sh -c "cd '{}'; echo 'Changed directory to' '{}';
nohup mvn spring-boot:run > $HOME/logs/app.log 2>&1 & echo $! > $HOME/pids/app.pid; "

app.logs 文件生成成功,内容正确,同时生成 app.pid 文件,内容为空。

我将非常感激任何能帮助我解决这个问题的帮助。

问候,兰多。

答案1

命令周围的双引号sh -c "..."允许$!通过交互式 shell 进行扩展。

尝试

echo "dirA" | xargs -L 1 -I {}  sh -c '
   cd "$1"; echo "Changed directory to $1"; 
   nohup mvn spring-boot:run > $HOME/logs/app.log 2>&1 & echo $! > $HOME/pids/app.pid;
' sh {}

{}在大多数 shell 中无需引用。

相关内容