gpt4 book ai didi

Bash:启动并终止子进程

转载 作者:行者123 更新时间:2023-11-29 09:11:45 25 4
gpt4 key购买 nike

我有一个要启动的程序。假设这个程序将运行一个 while(true)-loop(所以它不会终止。我想写一个 bash 脚本:

  1. 启动程序(./endlessloop &)
  2. 等待 1 秒(休眠 1)
  3. 杀死程序 --> 如何?

我不能使用 $!从 child 那里获取 pid,因为服务器同时运行了很多实例。

最佳答案

存储 PID:

./endlessloop & endlessloop_pid=$!
sleep 1
kill "$endlessloop_pid"

您还可以使用 kill -0 检查进程是否仍在运行:

if kill -0 "$endlessloop_pid"; then
echo "Endlessloop is still running"
fi

...并将内容存储在变量中意味着它可以扩展到多个进程:

endlessloop_pids=( )                       # initialize an empty array to store PIDs
./endlessloop & endlessloop_pids+=( "$!" ) # start one in background and store its PID
./endlessloop & endlessloop_pids+=( "$!" ) # start another and store its PID also
kill "${endlessloop_pids[@]}" # kill both endlessloop instances started above

另见 BashFAQ #68 , "我如何运行一个命令,并让它在 N 秒后中止(超时)?"

ProcessManagement Wooledge wiki 上的页面也讨论了相关的最佳实践。

关于Bash:启动并终止子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com