Systemd提供了OnFailure =机制,用于在发生故障时调用操作。最明显的用途是在单元发生故障时像cron的MAILTO =和电子邮件日志一样工作。我在Ubuntu 16.04下使用OnFailure =
启动的.service单元尝试了这种方法 ExecStart=/bin/sh -c 'journalctl --user-unit=<my unit> -n 20 | mail -s "Unit failed" <my email address>'
这不会从journalctl获得任何输出。从/ bin / sh开始的完全相同的命令,在从shell提示符下执行时功能完美。
我已经将此问题提交为Ubuntu(https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1810351)上的一个错误,但是如果我要使用替换cron,inotify,inetd等的systemd功能,那么我必须具有基本的错误报告,并且无法等待错误修复。有谁知道Journalctl / systemd中这种基本缺陷的解决方法吗?