哪个问题会导致生产应用程序中的kill -9 (确切地说是在linux中)?
我有一些申请,做一些定期工作,停止这些工作需要很长时间,我不在乎一些工作是否会被取消-工作可以通过新的程序完成。所以,我是否可以使用kill -9来立即停止它,或者这会导致严重的操作系统问题?
例如,独角兽将其用作正常工作过程:
当您的应用程序出错时,BOFH就可以“杀死-9”失控的工作进程,而不必担心会撕毁所有客户端,只有一个。
但是这个文章声称:
不应在Unix系统上使用-9 (或杀死)参数来杀死(1)。
PS:我知道kill -9不能被应用程序处理,但我知道对于可能的应用程序它不会引起任何问题,我只是想知道它会在操作系统级别引起一些问题吗?shared memory segments active, lingering sockets听起来很危险。
发布于 2010-06-05 22:34:08
这取决于它是什么样的应用程序。
像数据库这样的东西可能会丢失数据(如果它不立即将所有数据写入持久事务日志),或者下次启动需要更长的时间,或者两者都会丢失。
虽然只撞车是一个很好的原则,但目前很少有应用程序遵守它。
例如,mysql数据库并不是“仅崩溃”,使用杀死-9会导致启动时间大大延长(而不是完全关闭)、数据丢失,或者两者兼而有之,这取决于设置(在某种程度上,运气)。
另一方面,卡桑德拉实际上鼓励使用杀害-9作为关闭机制;它不支持其他任何东西。
发布于 2010-06-05 11:42:19
kill -9没有给应用程序一个干净关闭的机会。
通常,应用程序可以捕获SIGINT/SIGTERM并干净地关闭(关闭文件、保存数据等)。应用程序无法捕获SIGKILL (与kill -9一起发生),因此它无法执行任何(可选的)清理。
更好的方法是使用标准的kill,如果应用程序仍然没有响应,那么使用kill -9。
发布于 2010-06-05 11:43:55
kill -9不会造成任何“严重的操作系统问题”。但这一过程将立即停止,这意味着它可能会使数据处于一种奇怪的状态。
https://stackoverflow.com/questions/2980162
复制相似问题