我最近从 Kubuntu 17.10 切换到 Kubuntu 18.04(全新安装)。问题是该进程systemd-udevd不断运行并消耗 90-100% 的 CPU 负载。在修补了所有设备后,我发现这是因为 WiFi!一旦我打开 WiFi 进程开始运行,CPU 负载上升到 100%。但是每当我关闭 WiFi 时,它就会降为零!这是打开topWiFi 时的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
338 root 20 0 94336 51744 3120 S 44.7 0.6 0:35.50 systemd-udevd
24957 root 20 0 67936 25248 2860 R 40.4 0.3 0:23.85 systemd-udevd
328 root 19 -1 150720 53068 52264 S 4.3 0.7 0:07.61 systemd-journal
Run Code Online (Sandbox Code Playgroud)
并运行:strace -p 338重复执行以下输出:
strace: Process 338 attached
strace: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Bionic 上创建和安装一对自定义的 systemd 计时器和服务单元,用于定期运行命令。我知道应该将文件放入/etc/systemd/system然后我应该运行systemctl daemon-reload,但是我不清楚是否需要启用或启动任何东西才能完全安装和“运行”计时器,以及我可以的几篇文章发现地址这一点都给出了不同的信息。
我的.timer文件是:
[Unit]
Description=Run custom command periodically
[Timer]
Unit=my-custom-command.service
OnCalendar=*-*-* 0/8:00:00
[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)
我的.service文件是:
[Unit]
Description=Run a custom command
OnFailure=mail-systemd-failure@%n.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/custom-command
User=dedicated-user
Group=dedicated-user
Run Code Online (Sandbox Code Playgroud)
我读过的相互矛盾的文章是:
这篇文章说运行:
systemctl daemon-reload
systemctl enable $NAME.timer
systemctl start $NAME
Run Code Online (Sandbox Code Playgroud)
据我了解,后一个命令与 相同systemctl start $NAME.service,我希望立即运行服务定义的命令,这不是我想要做的。
这个要点说只是运行:
systemctl daemon-reload
systemctl start $NAME.timer
Run Code Online (Sandbox Code Playgroud)这篇文章说运行:
systemctl enable $NAME.timer
systemctl start $NAME.timer
Run Code Online (Sandbox Code Playgroud)那么我是否启用和/或启动计时器(或其服务?),两者之间究竟有什么区别?根据单元文件是新安装还是在编辑后重新加载,我需要运行的命令是否会发生变化?
我想了解什么是屏蔽服务以及如何在需要时取消屏蔽它。
我一直在尝试使用以下命令在 Ubuntu 16.04-LTS 上启动 PostgreSQL
systemctl start postgresql.service.
Run Code Online (Sandbox Code Playgroud)
分别作为具有管理权限的用户和 root 用户。
不幸的是,我得到了
Failed to start postgresql.service: Unit postgresql.service is masked.
Run Code Online (Sandbox Code Playgroud)
在两种情况下打印。
它减慢了我的系统启动时间。
我可以禁用它吗?
如果我在启动时禁用它会发生什么?
我正在使用 Ubuntu 18.04 版。
我最近将我的 Xubuntu 从 16.10 升级到 17.04。
除了 systemd-resolv 之外,一切都运行良好。有时它会使 cpu 使用率过高,我不知道为什么会发生这个问题。
这是top命令输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1114 systemd+ 20 0 51532 6744 4504 R 100 0.0 9:51.67 systemd-resolve
1152 dnsmasq 20 0 64360 2892 2480 R 38.9 0.0 4:05.53 dnsmasq
1245 root 20 0 376644 89644 64436 S 1.7 0.5 0:35.69 Xorg
1624 asus 20 0 370160 45820 28488 S 0.7 0.3 0:00.90 python2
2238 asus 20 0 2562816 553112 …Run Code Online (Sandbox Code Playgroud) Ubuntu 15.04 带来的更大变化是从 upstart 切换到 systemd 作为管理引导和系统服务启动的默认设置。
任何人都可以向非技术用户充分解释这如何以及是否会影响我们?为什么它很重要?
18.04在新的 Lenovo x1c6 上全新安装 Ubuntu ,从挂起状态恢复后有时会收到此错误。
可能是相关的:我的电池寿命是 4-5 小时,而其他 Ubuntu 用户报告这个联想有 10+ 小时。查看相关线程
该线程中的答案建议运行以下命令:
? ~ journalctl
-- Logs begin at Fri 2018-05-18 13:10:19 CEST, end at Tue 2018-05-22 19:25:25 CEST. --
May 18 13:10:19 goldy-ThinkPad-X1-Carbon-6th kernel: Linux version 4.15.0-20-generic (buildd@lgw01-amd64-039) (gcc version 7.3.0 (Ubu
May 18 13:10:19 goldy-ThinkPad-X1-Carbon-6th kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-20-generic root=UUID=2da2702a-fc2a
May 18 13:10:19 goldy-ThinkPad-X1-Carbon-6th kernel: KERNEL supported cpus:
May 18 13:10:19 goldy-ThinkPad-X1-Carbon-6th kernel: Intel GenuineIntel
May 18 13:10:19 goldy-ThinkPad-X1-Carbon-6th kernel: …Run Code Online (Sandbox Code Playgroud) 刚刚从 14.04 升级了我的系统。LTS 到 16.04.1 LTS,postgresql 不在 systemd 上启动:
/etc/init.d/postgresql start
[ ok ] Starting postgresql (via systemctl): postgresql.service
# /etc/init.d/postgresql status
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since ?? 2016-08-09 13:40:51 MSK; 3min 23s ago
Process: 23142 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 23142 (code=exited, status=0/SUCCESS)Seems that
Run Code Online (Sandbox Code Playgroud)
似乎 systemd 脚本包含错误的数据:
# cat /lib/systemd/system/postgresql.service
# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd …Run Code Online (Sandbox Code Playgroud) 我已经成为 Ubuntu 用户有一段时间了,在工作中我们有许多 Ubuntu VM服务器,所有这些服务器都运行Ubuntu 14.04 LTS以部署我们的 Web 应用程序、数据库和其他工具。
我目前正在学习Ubuntu 16.04 LTS台式机和服务器,以便能够在不久的将来升级我们的生产服务器而不会造成问题。
对于Ubuntu 15.04,init并upstart通过已被替换Systemd,所以我学习Systemd了。
我注意到我的运行 Ubuntu 16.04 桌面版的开发计算机graphical.target作为默认的 systemd 目标,这是合乎逻辑的。
但后来我注意到运行 Ubuntu 16.04 服务器版的测试服务器也graphical.target用作默认的 systemd 目标。
$ systemctl get-default
graphical.target
Run Code Online (Sandbox Code Playgroud)
所以我很困惑。服务器没有任何图形层,那么默认目标是graphical.target怎么回事?
就像 Rinzwind 在评论中建议的那样,我查看了目标以查看它是否处于活动状态...
答案是肯定的:
admin@server1604:~$ systemctl get-default
graphical.target
admin@server1604:~$ systemctl status graphical.target
? graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static; vendor preset: enabled)
Active: active since …Run Code Online (Sandbox Code Playgroud)