我正在实现一个使用 sd_notify 的 systemd 服务。
在sd_notify 文档中,规定sd_notify(0, "READY=1");一旦重新加载完成,此类服务必须发送。
这对于服务本身触发的重新加载是有意义的,但我想知道这如何影响用户触发的重新加载(systemctl reload),因为systemd.service 文档指出重新加载命令应该同步以等待重新加载完成。
/bin/kill -HUP $MAINPID我现在的问题是:我可以在通知服务上使用异步命令(如)并使用RELOADING=1和READY=1来获得“阻塞”重新加载,即让 systemd 等待我的服务,或者在从 systemctl 重新加载的情况下 systemd 是否忽略这两个命令?
为了完整性:我的代码和我想要的:
void doReload() {
sd_notify(0, "RELOADING=1");
// operation that takes ca 5 seconds
sd_notify(0, "READY=1");
}
Run Code Online (Sandbox Code Playgroud)
并且可以从内部代码调用此方法,也可以通过注册的信号处理程序调用该方法SIGHUP
systemd 单元的相关部分是:
[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/bin/testd
ExecReload=/bin/kill -HUP $MAINPID
Run Code Online (Sandbox Code Playgroud)
我想归档ExecReload同步完成的事情。
简而言之:我想列出我用 Homebrew 安装的最后 N 个软件包。
\n实现这一目标的最佳(可能也是最快)方法是什么?
\n请注意,我对 Ruby 不太熟悉,因此任何“破解 Homebrew 代码以执行您想要的操作”的建议都会让我感到紧张......
\nbrew info [formula|cask]实际上会告诉配方/木桶倒出的日期(我认为这意味着“安装”在 Homebrewosphere 之外)。那么该值必须写入数据库 \xe2\x80\x94 的某个位置吗?一个日志?poured-date在 JSON 输出中获得任何或类似的元素...我获得的唯一日期与相关git(大概是因为它们更有用)用于 Homebrew 的内部运作)。理论上,这能够告诉我我安装的公式的“最新”版本是什么,但不能告诉我安装它们的顺序\ xe2\x80\x94 换句话说,我可以安装一个昨天是一年前的版本,我不需要知道它已经一年了,我只想知道我昨天安装了它!虽然我不知道如何检索该信息,但我确信它就在那里,因为brew info ... 会给出正确的日期浇注特定的公式。因此,一种可能的解决方案是捕获所有信息brew info,然后grep对其进行处理;因此,类似的东西brew info | grep Poured应该给我我想要的东西。不用说,这需要 …
这听起来很蠢,但我奇怪的配置似乎迫使一个Apache2的安装尝试时未安装php7.2-fpm!(我使用nginx并且我最不想在我的服务器上看到的是 Apache 安装......)
这是场景:我坚持安装 Ubuntu 16.04.6 LTS(对不起,我无法控制它,我只能维护它,用于apt安装我想要的任何东西,但不能将 Ubuntu 升级到现代版本。
多年来,正如预期的那样,Ubuntu 16.04 被许多软件包维护者抛弃,尤其是那些来自官方 Ubuntu 存储库的维护者;因此,我别无选择,只能添加许多替代存储库。
此外,随着时间的推移,我一直在升级 PHP。第一件事是几年前下降了 5.6。然后是时候退休 7.0,最终也是 7.1。与此同时,我安装了 7.2、7.3 和 7.4 版本,因为该服务器上托管的每个站点(顺便说一句,没有那么多)都经过严格测试,以确保它继续在最新版本的 PHP 上工作。
现在,我的所有站点都在 PHP 7.4 上运行,除了两个仍然需要 PHP 7.3,直到底层应用程序软件与 7.4 兼容(这将在几周或几个月内发生,我敢肯定) . 我可以安全地删除 PHP 7.2,因为它不再使用了。
可惜的是,它似乎并没有完全消除-尽管它并没有得到在开机启动,也不是从什么叫。但是,如果我尝试将其删除,则会得到以下信息:
# apt remove php7.2-fpm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed: …Run Code Online (Sandbox Code Playgroud)