我有一个带有几个 lxc 容器的服务器。在一些容器中安装了 docker。通常在这些LXC容器导致容器名称,格式为泊坞窗撰写的动作appname_service_1,如wordpress_app_1和wordpress_db_1,当app和db两个服务,被称为在wordpress撰写文件-你知道它。
但是今天我创建了另一个 LXC 容器并在其中安装了 docker。由于ansible,设置与其他容器相同。但是,docker 容器名称不同,例如wordpress_db_1_c9de200f9abd. 每当我删除容器并重新创建它时,最后的哈希值都会有所不同。
由于这使得容器不像它们应该的那样一次性,因为它破坏了容器之间的任何路由,我想知道为什么要附加这些哈希。所有 LXC 容器都安装了相同的 docker 和相同的 docker-compose 版本。我想在我的 docker 容器名称中完全阻止这些哈希。
为什么它们现在发生而以前没有发生?
我在 OpenShift 中配置了一个 cronjob。它的 crontab 条目如下所示:
spec:
schedule: "0 3 * * 1-5"
jobTemplate:
Run Code Online (Sandbox Code Playgroud)
所以它应该在工作日的早上 03:00 运行。所有集群节点都配置为使用我们的本地时区 CET,即 UTC+1。这可以通过date命令看到。OpenShift 文档说 cronjobs 是通过与主节点配置的时区匹配的 crontab 执行的,所以我希望 cronjobs 实际在欧洲中部时间 03:00 运行。
但是,根据日志,cronjobs 在 04:00 执行,即 UTC 时间的 03:00 CET。奇怪的部分是oc describe cronjob揭示:
Last Schedule Time: Mon, 14 Jan 2019 04:00:00 +0100
Run Code Online (Sandbox Code Playgroud)
因此,服务器实际上知道 cronjob 执行得太晚了一个小时。
我的问题是:为什么 cronjob 执行晚了一个小时,为什么服务器知道它,我该如何解决这个问题?
我有一个仅运行在带有 wine 和 Xvfb 的 linux 机器上的 Windows 守护程序。由于这个相当实验性的设置,守护程序会定期崩溃,我想实现某种机制来自动重新启动守护程序。目前我有一个带有Restart=always设置的 systemd 单元定义。
但是,我注意到有时守护程序会崩溃,但不会退出它的进程。这相当于显示一个带有“守护程序崩溃,您要发送错误报告吗?”问题的对话框。因此,该进程仍在运行,但守护进程已停止工作。
我可以在我的 linux 机器上检查的这种现象的唯一外部行为是两个新文件,它们出现在某个位置但具有可变文件名(它们依赖于时间,并且名称中有时间戳)。我认为它们是某种内存转储或堆栈跟踪,最初应该用于发送错误报告。
所以现在我正在为 systemd 寻找一个解决方案来捕获这个解决方案,比如
我想过一个用 bash 或其他东西编写的包装器,但有两个问题:首先我不知道如何实现这种行为,其次,这将使 systemd 的使用完全过时,因为脚本处理所有崩溃处理,而 systemd 只会执行脚本。
我还考虑过使用 systemd 的给定功能定期重新启动守护程序,但这会非常低效(考虑到 Wine 包装器中的 Windows 守护程序一开始并不是低效的),因为它有时会重新启动守护程序当不需要时,或者在守护程序崩溃后需要一段时间才能定期重新启动。
解决这个问题的最佳解决方案是什么?
仅供参考:我正在谈论的守护程序是 Google 相册的上传程序。出于某种原因,谷歌没有为 Linux 发布它。