如何在服务器关闭之前刷新所有ssh服务器数据?

时间:2018-01-09 04:56:48

标签: linux ssh systemd

我有一个运行应用程序的嵌入式Linux操作系统控制盒,它以 systemd 服务启动。应用程序监视交换机的状态。

同时,我通过以太网上的 ssh客户端 shell从linux PC登录控制盒,监控 systemd journalctl 输出以查找任何日志申请。

当发现开关状态为OFF时,应用程序通过打印消息使用 systemd journaled 服务记录事件。因此,消息由 systemd journaled 服务记录并保存在非易失性文件中。

打印消息后,应用程序执行系统(" poweroff")

因此,ssh会话足够快地终止,而不会在ssh客户端接收打印到 journalctl输出的消息。同时, systemd journaled 服务成功记录了该消息,并将其保存在非易失性文件中。

考虑到这一点,我想知道是否有一种特定的方法推迟执行系统(" poweroff")命令,直到所有的日志数据都被传输完毕/刷新 ssh输出缓冲区。根据具体情况,我的意思是在系统之前没有任意 sleep()调用(" poweroff")

2 个答案:

答案 0 :(得分:0)

如何在关闭脚本中添加一行来回显非易失性文件的尾部-n1的输出?

答案 1 :(得分:0)

目前尚不清楚为什么应该保证在SSH会话的另一端看到消息,即使我们接受它也必须得到保证,我仍然不明白为什么几秒钟的关机延迟是关键的(可以用 sleep()实现),但你可以采取另一种方法

如果一个或至少一个SSH连接始终对服务器开放,则可以在将日志消息写入文件时从SSH会话启动关闭。

tail -f path/to/file |  sed '/^regex pattern$/ q' && command_to_execute_after_match