小编Gwy*_*lyn的帖子

systemd sd_notify 服务通过 SIGHUP 重新加载

我正在实现一个使用 sd_notify 的 systemd 服务。

sd_notify 文档中,规定sd_notify(0, "READY=1");一旦重新加载完成,此类服务必须发送。

这对于服务本身触发的重新加载是有意义的,但我想知道这如何影响用户触发的重新加载(systemctl reload),因为systemd.service 文档指出重新加载命令应该同步以等待重新加载完成。

/bin/kill -HUP $MAINPID我现在的问题是:我可以在通知服务上使用异步命令(如)并使用RELOADING=1READY=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同步完成的事情。

c signals daemon systemd

5
推荐指数
1
解决办法
504
查看次数

Homebrew:如何列出最近安装的 N 个软件包?

简而言之:我想列出我用 Homebrew 安装的最后 N 个软件包。

\n

实现这一目标的最佳(可能也是最快)方法是什么?

\n

请注意,我对 Ruby 不太熟悉,因此任何“破解 Homebrew 代码以执行您想要的操作”的建议都会让我感到紧张......

\n

到目前为止我尝试过的

\n
    \n
  1. 阅读手册页、文档、Homebrew 网站、StackOverflow、用 google 搜索各种不同的问题等。到目前为止还没有运气。
  2. \n
  3. brew info [formula|cask]实际上会告诉配方/木桶倒出的日期(我认为这意味着“安装”在 Homebrewosphere 之外)。那么该值必须写入数据库 \xe2\x80\x94 的某个位置吗?一个日志?
  4. \n
  5. 也许有一个选项可以通过JSON API提取倒出的日期信息?但事实是,使用 Homebrew 3.1.9-121-g654c78c,我无法poured-date在 JSON 输出中获得任何或类似的元素...我获得的唯一日期与相关git(大概是因为它们更有用)用于 Homebrew 的内部运作)。理论上,这能够告诉我我安装的公式的“最新”版本是什么,但不能告诉我安装它们的顺序\ xe2\x80\x94 换句话说,我可以安装一个昨天是一年前的版本,我不需要知道它已经一年了,我只想知道我昨天安装了它!
  6. \n
\n

到目前为止我学到了什么

\n

虽然我不知道如何检索该信息,但我确信它就那里,因为brew info ... 给出正确的日期浇注特定的公式。因此,一种可能的解决方案是捕获所有信息brew info,然后grep对其进行处理;因此,类似的东西brew info | grep Poured应该给我我想要的东西。不用说,这需要 …

macos homebrew jq

3
推荐指数
1
解决办法
4088
查看次数

如何在不安装 Apache 2 的情况下卸载 php7.2-fpm(在 LEMP 机器上)

这听起来很蠢,但我奇怪的配置似乎迫使一个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)

php ubuntu apache2 fpm php-7.2

1
推荐指数
1
解决办法
2607
查看次数

标签 统计

apache2 ×1

c ×1

daemon ×1

fpm ×1

homebrew ×1

jq ×1

macos ×1

php ×1

php-7.2 ×1

signals ×1

systemd ×1

ubuntu ×1