Answers:
运行这个:
while kill -0 <PID>; do sleep 1; done; echo "Process finished at $(date +"%F %T")."
或者,您可以制作一个bash脚本。wait-for-death.sh
:
#!/bin/bash
if ! kill -0 $1; then
echo "Process $1 doesn't exist."
exit 1
fi
while kill -0 $1; do
sleep 1
done
echo "Process $1 finished at $(date +"%F %T")."
然后授予它执行权限:
chmod +x wait-for-death.sh
并通过进程的PID运行它:
./wait-for-death.sh <PID>
while kill -0 <pid>; do ...
更便携-它也可以在非Linux系统上使用。而且没有理由使用bash-您的代码不使用任何bashisms,因此/bin/sh
在这里非常好。
kill -0
,我认为这是一个更优雅的解决方案。
at
(请参阅联机帮助页:)man at
。这会将其作为作业排队,并在完成时通知您,等等。这是非常基本的,类似于Cron的功能,但仅适用于一次作业。