我有一个程序,我想开始。让我们说这个程序会运行一段时间(真)-loop(所以它不会终止我想写一个bash脚本其中:Bash:启动并杀死子进程
- 启动程序(
./endlessloop &
) - 等待1秒(
sleep 1
) - 害死程序 - ?!>如何
我不能使用$,因为服务器运行大量实例的同时,从孩子得到PID
我有一个程序,我想开始。让我们说这个程序会运行一段时间(真)-loop(所以它不会终止我想写一个bash脚本其中:Bash:启动并杀死子进程
./endlessloop &
)sleep 1
)我不能使用$,因为服务器运行大量实例的同时,从孩子得到PID
您可以用p对于相同的grep命令:
kill $(pgrep endlessloop)
使用'pkill'并称它为一天! – heemayl
这会杀死每一个*无尽循环,而不仅仅是你开始的那个。它也会杀死'endlessloopctl'或'read-endlessloop-logs'。 –
我不能在这里等一下? –
Store中的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维基还讨论了相关的最佳实践。
但我不想杀死所有无尽循环过程,只是一个开始... –
@今天春天,这个答案就是这样。 '$ endlessloop_pid'只存储已启动的PID或者'endlessloop_pids'数组情况下的PID。 –
关键是我无法区分哪一个是正确的要杀人。 –
你试过了什么代码?它是如何失败的? – CAB
我尝试了上面括号中的两件事。问题是:如何杀死无尽环境? –