我正在编写一个简单的 bash 脚本。脚本按顺序运行命令,如command1,然后command2,依此类推。但是,在某个时间,我想运行一个命令,然后当该命令正在处理时,我想杀死它。让我借助以下示例进行解释:
#!/bin/bash
.
.
command24
kill $(pidof command24)
command26
.
.
当我的脚本到达 command24 时,大约需要 5-7 分钟才能完成。但是2-3分钟后,我想杀死这个command24并继续执行命令26。问题是,如果这个脚本按顺序工作,那么在command24完成之前无法执行“kill”命令,但我想当 command24 正在处理时启动“kill”命令。我希望我能够很好地解释这个场景。请在这方面指导我。
答案1
只需在后台运行该命令,告诉您的脚本休眠几分钟,然后终止它:
command24 &
sleep 3m
kill $(pidof command24)
command26
或者,更安全的是,使用$!
which 将获得后台执行的最后一个命令的 PID:
command24 &
sleep 3m
kill $!
command26