每次我运行apt upgrade
并实际升级时,我创建的服务都会重新启动。通常,我会收到此消息
┌────┤ Daemons using outdated libraries ├─────┐
│ │
│ │
│ Which services should be restarted? │
│ │
│ [ ] unattended-upgrades.service │
│ [*] wildfly.service │
│ │
│ │
│ <Ok> <Cancel>
这似乎与 needrestart 有关,请参见下面的输出:
$sudo needrestart -u NeedRestart::UI::stdio -r l
Scanning processes...
Scanning candidates...
Scanning linux images...
Running kernel seems to be up-to-date.
Services to be restarted:
systemctl restart wildfly.service
这是服务配置:
[Unit]
Description=WildFly Application Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=wildfly
Group=wildfly
StandardOutput=null
ExecStart=/opt/wildfly/wildfly-26.1.1.Final/bin/standalone.sh
ExecReload=/opt/wildfly/wildfly-26.1.1.Final/bin/jboss-cli.sh --connect --commands="reload"
ExecStop=/opt/wildfly/wildfly-26.1.1.Final/bin/jboss-cli.sh --connect --commands="shutdown"
[Install]
WantedBy=multi-user.target
我需要做哪些更改以便该服务将来不会不必要地重新启动?
答案1
这是由于 wildfly 临时部署文件夹中的 java 存档 (jar) 文件造成的。可以通过在详细模式下运行 needrestart 来查看:
sudo needrestart -b -v
由于我的自定义服务不需要在升级时重新启动,因此我通过创建一个wildfly.conf
文件来添加例外/etc/needrestart/conf.d/
:
$nrconf{blacklist_rc} = [
q(^wildfly) ,
];
注:我的想法来自Tomcat 中的相关问题。