Shell 用于在 linux 中关闭应用程序的脚本

Shell script to stop an application at power down in linux

我在爱迪生设备中用c写了一个姿势感应代码。我已成功在启动时调用应用程序。但是我需要一个 shell 脚本来在断电时关闭这个应用程序。

我试过kill {pid}命令行操作。尽管我终止了命令,但在断电期间设备需要额外 5 分钟才能停止该应用程序。我在这里错过了什么吗..

您的应用程序应该显式在关闭时处理一些signal(7)-s, in particular SIGTERM which is sent (by some system program doing a kill(2))。

发送 SIGKILL(例如 kill -9kill -KILL)是不安全的(特别是对于在磁盘上维护某些状态的服务器,例如数据库服务器,以及任何具有某种类型的软件)持久状态、配置或日志...)因为被杀死的程序没有机会清理它的混乱、刷新它的缓冲区并在磁盘上保存一致的状态。

所以稳健的策略是kill -TERM,然后几秒后kill -QUIT和几秒后kill -KILL。因此,健壮的应用程序应该处理 SIGTERMSIGQUIT(但不能捕获 SIGKILL)... 您可能会处理 SIGPWR(但并非每个系统都有或管理得当;一些 UPS 硬件和软件可以)。

也许您的系统使用 systemd and you could take advantage of that (e.g. D-bus 东西)。