Linux kill
命令用于向进程发送信号,以请求它们执行某些操作。默认情况下,kill
命令发送的是 TERM
信号(信号编号为 15)。
信号(Signal):信号是进程间通信的一种方式,用于通知进程某个事件已经发生。进程可以捕获这些信号并执行相应的操作。
TERM 信号:TERM
是“终止”(Terminate)的缩写,用于请求进程正常终止。进程收到 TERM
信号后,通常会尝试进行清理工作,然后退出。
TERM
信号允许进程在退出前进行必要的清理工作,如关闭文件描述符、释放资源等。TERM
信号,使其成为一种通用的终止手段。除了 TERM
信号,Linux 还支持多种其他信号,例如:
kill
命令终止原因:
TERM
信号。TERM
信号并选择忽略它。解决方法:
strace
或 gdb
等调试工具跟踪进程的执行情况。假设我们有一个简单的 Python 进程,它捕获并处理 TERM
信号:
import signal
import time
def handle_term(signum, frame):
print("Received TERM signal. Cleaning up...")
# 执行清理工作
time.sleep(2)
print("Cleanup done. Exiting.")
exit(0)
signal.signal(signal.SIGTERM, handle_term)
print("Process started. Press Ctrl+C to send INT signal.")
while True:
time.sleep(1)
运行此脚本后,可以使用以下命令发送信号:
kill <PID> # 发送 TERM 信号
kill -INT <PID> # 发送 INT 信号(相当于 Ctrl+C)
kill -KILL <PID> # 发送 KILL 信号(强制终止)
通过这种方式,可以观察到进程如何响应不同的信号。
领取专属 10元无门槛券
手把手带您无忧上云