我有一个简单的脚本,它在后台运行几个进程,然后wait
让它们完成:
#!/usr/bin/env bash
sleep 100 &
sleep 200 &
wait
然而,当我运行该脚本然后将其删除时,2个后台进程继续运行。有没有办法等待它们完成,如果shell被杀,还可以杀死它们吗?
答案 0 :(得分:1)
您可以使用public static boolean isPalindrome(String p) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < p.length(); i++) {
char ch = Character.toLowerCase(p.charAt(i));
if (Character.isLetter(ch)) {
sb.append(ch);
}
}
int len = sb.length();
for (int i = 0; i < len / 2; i++) {
if (sb.charAt(i) != sb.charAt(len - i - 1)) {
return false;
}
}
return true;
}
在退出父进程时调用的函数中调用pkill
:
trap
现在,当您按#!/usr/bin/env bash
# this function will be called when main script exits
killall() {
# echo "killing all child process of parenr pid $$"
pkill -TERM -P $$
}
# set trap function on exit
trap killall exit
sleep 100 &
sleep 200 &
wait
或终止父脚本终止父脚本时,将会执行ctrl-C
。