所以我使用典型的nohup语法启动下面的脚本:
nohup ./script &
下面的日志输出的一部分是当我有临时Internet连接并且终端窗口锁定时显示的内容,强制我手动关闭它们。当我的问题解决后,我重新登录并从日志中看到此输出:
日志输出:(来自results2.log)
--------------
UPDATE table where id between 45759776 and 55759776
--------------
Terminal close -- sending "KILL QUERY 3329619" to server ...
Terminal close -- query aborted.
Bye
--------------
脚本分组:
#!/bin/bash
first=5759776
last=15759776
while [ $first -lt 73843165 ]; do
mysql -u -p??????? db -vvv -e "UPDATE table where pc.id between $first and $last;" >> results2.log
((first=first+10000000))
((last=last+10000000))
done
所以基本上有两个问题:
答案 0 :(得分:1)
在脚本中添加陷阱处理程序以捕获如下信号:
#!/bin/bash
trap "echo 'trap recieved';" SIGHUP SIGINT SIGTERM
first=5759776
last=15759776
....
进程可以接收信号以通知他们某些事件。您可以使用 kill 命令发送信号。其他进程也像父进程一样向进程发送信号。使用此命令可以捕获信号。如果你没有抓住他们,这个过程将会终止。唯一的信号是9,你不能抓住:kill -9 processid;