自从几天前从 14.10 升级到 15.04 以来,grub OS 屏幕到登录屏幕的启动时间从 12 秒增加到大约 40 秒。这是我的systemd-analyze 关键链输出:
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
graphical.target @37.433s
??multi-user.target @37.433s
??getty.target @37.432s
??getty@tty1.service @37.432s
??systemd-user-sessions.service @35.906s +9ms
??remote-fs.target @35.904s
??media-XalnasStorage.mount @35.849s +53ms
??network-online.target @35.846s
??network.target @11.636s
??NetworkManager.service @11.502s +132ms
??basic.target @11.487s
??sockets.target @11.487s
??avahi-daemon.socket @11.487s
??sysinit.target @11.485s
??networking.service @11.333s +65ms
??apparmor.service @11.269s +63ms
??local-fs.target …Run Code Online (Sandbox Code Playgroud) 我正在尝试打包一个单声道应用程序以作为 systemd 服务运行。
我已按照此处的说明进行操作:https : //wiki.debian.org/Teams/pkg-systemd/Packaging
我已将 dh-systemd (>= 1.5) 添加到我的 debian 控制文件构建依赖项中。
我已将 --with=systemd 添加到我的规则文件中,如下所示:
%:
dh $@ --with=cli --with=systemd
Run Code Online (Sandbox Code Playgroud)
我已将我的服务文件添加到名为 mypackage.service 的 debian 文件夹中,其中包含以下内容:
[Unit]
Description=My Service Description
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/mono /usr/lib/mypackage/myservice.exe
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
但是,构建会给出以下 lintian 警告和错误:
Now running lintian...
E: mypackage: postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/mypackage
W: mypackage: init.d-script-not-marked-as-conffile etc/init.d/mypackage
E: mypackage: init.d-script-not-included-in-package etc/init.d/mypackage
Run Code Online (Sandbox Code Playgroud)
由于几个原因,这让我感到困惑
更新
生成的postrm文件如下:
#!/bin/sh
set -e
# Automatically added by dh_systemd_start
if [ …Run Code Online (Sandbox Code Playgroud) 例如,在我的系统 (16.04) 上,有文件/lib/systemd/system/network-manager.service和/etc/init.d/network-manager。
我不明白这是如何(以及为什么)工作的。我总是通过sudo service network-manager restart. 这不应该以某种方式弄乱 systemd 吗?它似乎仍然有效。
为什么要service --status-all列出各种服务?16.04 不应该使用 systemd 而不是 Upstart 吗?
有人请解释这种共存是如何工作的。
我有个问题。有这样的消息
Mar 1 15:52:34 ubuntu systemd[1]: Time has been changed
Mar 1 15:52:34 ubuntu systemd[1]: snapd.refresh.timer: Adding 1h 16min 25.978183s random time.
Mar 1 15:52:34 ubuntu systemd[1]: apt-daily.timer: Adding 8h 21min 914.167ms random time.
Mar 1 15:52:34 ubuntu systemd[6041]: Time has been changed
Run Code Online (Sandbox Code Playgroud)
在 /var/log/syslog 中每 5 秒一次。似乎有什么东西在不断地改变着时间。这真的很烦人,我明白出了什么问题并想修复它。RTC 时间也不正确。
关于我的系统的一些信息:
timedatectl:
Local time: ?? 2017-03-01 16:05:03 MSK
Universal time: ?? 2017-03-01 13:05:03 UTC
RTC time: ?? 2017-03-03 11:33:10
Time zone: Europe/Moscow (MSK, +0300)
Network …Run Code Online (Sandbox Code Playgroud) 我有一个 systemd 服务,它调用一个tmux在启动时创建会话的 PHP 脚本。
在全球范围内,我拥有最新tmux的发行版 (V>=2.5)。
脚本的USER有$HOME/bin/tmux2.0
我需要的是systemd使用tmux用户 $HOME 中的二进制文件。
我已经在 systemd 服务文件中设置了 USER & GROUP 变量,但它似乎调用了全局安装的二进制文件。
是否可以显式设置应为此服务调用调用的二进制文件?
如果可能,我宁愿不开始对 PHP 文件本身的路径进行硬编码。
非常感谢。
是否有用于在 Ubuntu 18.04 (Bionic Beaver) 上管理 systemd 的 GUI 工具?
我希望能够看到服务和/或单元(和/或任何其他系统调用它们)的状态。
理想情况下,我还可以进行过滤以仅显示正在运行的服务。还可以过滤以仅显示启用的服务。
显然,Ubuntu 16.04 有systemd-ui,我从未使用过。
这从2011年的文章中提到,存在很久以前在各种Linux发行版其他一些工具。
如果没有GUI工具,是否有curses工具?
我希望能够快速查看正在运行和启用的服务列表,并尽可能少地按下按键,停止和禁用我不想要的服务/单元。
谢谢!
系统是否使用systemd读取和执行脚本/etc/pm/sleep.d/?
我开始得出结论,答案是systemd忽略这些脚本。如果这是真的,替代品是什么?
更新:man systemd-sleep状态脚本可以添加到/lib/systemd/system-sleep/. 细节对我来说不够,但我尝试修改Arch wiki 示例并创建/lib/systemd/system-sleep/root-resume.service.
[Unit]
Description=Local system resume actions
After=suspend.target
[Service]
Type=simple
ExecStart=/bin/systemctl restart network-manager.service
[Install]
WantedBy=suspend.target
Run Code Online (Sandbox Code Playgroud)
我的目的是在恢复后重新启动网络管理器,因为它偶尔不起作用。
这似乎不是我想要的。
其他问题中公认的解决方案,即:
echo manual > /etc/init/cups.override
echo manual > /etc/init/cups-browsed.override
reboot
Run Code Online (Sandbox Code Playgroud)
不要在 16.04 中工作。我不想卸载,cups因为我偶尔会需要它,但我不希望服务在启动时自动启动。
我怎样才能在 16.04 中实现这一目标?
journalctl -p err -b例如,当您使用该命令时,您会得到一个以“END”结尾的答案。我用什么命令来结束这个并有机会输入下一个命令而不必关闭窗口并打开一个新窗口?
erik@server ~ $ journalctl -p err -b
-- Logs begin at sön 2019-09-22 20:17:42 CEST, end at sön 2019-09-22 20:20:01 CE
sep 22 20:17:51 server iscsid[1289]: iSCSI daemon with pid=1290 started!
lines 1-2/2 (END)
Run Code Online (Sandbox Code Playgroud)
我绝对不喜欢 Linux 系统管理(我是一名软件开发人员),我有以下关于服务的问题。
在Ubuntu 18.04.2 LTS机器上安装了一个软件即服务。我的意思是我可以在 shell 中执行这个语句来运行它:
sudo service wso2ei start
Run Code Online (Sandbox Code Playgroud)
我将服务配置文件放入:
/etc/systemd/system/wso2ei.service
Run Code Online (Sandbox Code Playgroud)
包含这样的内容:
[Unit]
Description=WSO2EI
After=syslog.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/lib/wso2/wso2ei/6.4.0
User=root
Group=nogroup
Environment=JAVA_HOME=/usr/lib/wso2/wso2ei/6.4.0/jdk/jdk1.8.0_192
Environment=CARBON_HOME=/usr/lib/wso2/wso2ei/6.4.0
StandardOutput=syslog
StandardError=syslog
ExecStart=/usr/lib/wso2/wso2ei/6.4.0/bin/integrator.sh
ExecStop=/usr/lib/wso2/wso2ei/6.4.0/integrator.sh stop
#TimeoutSec=130
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
它工作正常,我可以通过以下语句启动和停止服务:
sudo service wso2ei start
Run Code Online (Sandbox Code Playgroud)
和
sudo service wso2ei stopt
Run Code Online (Sandbox Code Playgroud)
所以这项服务工作正常......但是......我试图通过这个stament列出所有服务:
service --status-all
Run Code Online (Sandbox Code Playgroud)
我希望在输出列表中找到我的wso2ei服务,但没有!!!
这是我的输出:
$ sudo service --status-all
[ - ] acpid
[ + ] apparmor
[ + ] apport
[ + ] atd
[ + ] cntlm
[ - ] …Run Code Online (Sandbox Code Playgroud)