服务是否应该取消并终止 SIGTERM 上未完成的工作?

sev*_*evo 5 signals

假设服务不会让事物处于“危险”或不一致的状态(尽管会观察到无法执行任务),它是否应该关闭文件、连接和任何其他工作?

Kus*_*nda 5

是的,应该。如果有与否取决于实用程序。

当程序出于某种原因退出时,文件和连接通常会关闭,但是“其他工作”可能会完成一半(可能会留下临时文件,数据库可能处于有问题的状态,实际上未写入文件的数据将被删除)丢失等)

程序可以TERM在信号处理程序中捕获信号并优雅地退出,即完成它正在做的任何事情,并在实际终止时让世界处于有序状态。它也可能完全捕获并忽略信号。