小编Phi*_*ßen的帖子

顶部的人类可读内存大小?

是否可以选择top以人类可读的格式显示内存大小?

例子:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                            
3960 phil      20   0 1347280 383112  30316 S   0.0  9.5   6:59.45 firefox
Run Code Online (Sandbox Code Playgroud)

将 RES 显示为 374m(而不是 383112)会更好。

我目前正在使用 Arch Linux。Ubuntu 似乎默认使用人类可读的表示。

(我试过了,man top但找不到选项。也许我错过了。)

arch-linux top

169
推荐指数
1
解决办法
14万
查看次数

Linux LXC vs FreeBSD jail

在安全性、稳定性和性能方面,LXC(Linux 容器)FreeBSD 的监狱之间有什么显着区别吗?

乍一看,这两种方法看起来非常相似。

linux freebsd jails virtualization lxc

71
推荐指数
1
解决办法
6万
查看次数

理解“serial8250: too much work for irq4”内核消息

dmesg 显示来自serial8250的大量消息:

$ dmesg | grep -i serial
[    0.884481] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    6.584431] systemd[1]: Created slice system-serial\x2dgetty.slice.
[633232.317222] serial8250: too much work for irq4
[633232.453355] serial8250: too much work for irq4
[633248.378343] serial8250: too much work for irq4
...
Run Code Online (Sandbox Code Playgroud)

我以前没有看到过这条消息。一般是什么意思?我应该担心吗?

(根据我的研究,它不是特定于发行版的,但如果相关,我会在运行 Ubuntu 16.04 的 EC2 实例上看到消息。)

kernel dmesg

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

为什么“cp -R --reflink=always”在 btrfs 文件系统上执行标准复制?

Btrfs 支持写时复制。我尝试使用该功能来克隆一个目录:

cp -R --reflink=always foo_directory foo_directory.mirror
Run Code Online (Sandbox Code Playgroud)

我希望该命令几乎立即完成(如 a btrfs subvolume snapshot),但该cp命令似乎执行缓慢的标准副本。

根据手册页,我希望--reflink=always强制执行 Copy-On-Write:

当指定 --reflink[=always] 时,执行轻量级复制,其中数据块仅在修改时复制。如果这不可能,则复制失败,或者如果指定了 --reflink=auto,则回退到标准副本。

问题:

  • 你知道为什么--reflink=always不起作用吗?
  • 我应该使用哪些选项(或其他命令)?

cp btrfs

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

最近升级到 systemd 后没有核心转储?

当我执行我正在处理的程序时,它失败并显示以下消息:

...
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

但是,不会创建核心转储。核心转储是以前写的,我不记得我改变了任何与它相关的东西。

当我跑ulimit -a回来时,

$ ulimit -a
core file size          (blocks, -c) unlimited
...
Run Code Online (Sandbox Code Playgroud)

其他点,

  • 我验证了我的用户可以在当前目录中创建文件。
  • 我读到了/proc/sys/fs/suid_dumpable。目前,它在我的机器上设置为 0。我试图将其更改为 1 或 2,但没有区别。
  • 我还尝试以 root 身份执行该程序,但这也没有任何区别。

不幸的是,我不记得我什么时候可以生成最后一次成功的核心转储。

core-dump systemd

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

cryptsetup:从文件读取密码时,luksOpen 中的验证是不确定的

我正在调试 cryptsetup 的奇怪行为:

假设文件中存储了正确的密码pw。我现在预计,--test-passphrase如果它作为标准输入传入,那么总是会成功(即不打印输出)。但事实证明它随机失败:

# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
No key available with this passphrase.
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
No key available with this passphrase.
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
No key available with this passphrase.
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 < pw
# cryptsetup luksOpen --test-passphrase /dev/nvme0n1p2 …
Run Code Online (Sandbox Code Playgroud)

luks cryptsetup

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

CentOS:避免 ALT-F4 切换到控制台

至少我使用过的每个 Linux 系统都使用惯例通过Ctrl- Alt- F1Ctrl- Alt-F2等方式切换到非图形控制台。

最近,我在一台机器上安装了 CentOS 6.3。安装是非定制的,使用 Gnome 2。

令我惊讶的是Alt-F4切换到控制台。Alt-F1然后将您带回 XServer。如何将键绑定更改为Ctrl-Alt而不是简单的Alt

它似乎也绕过了 Gnome 的键绑定。在 Gnome 中,我尝试将Alt-定义F4为关闭窗口,但它不起作用但仍切换到控制台。

xorg keyboard-shortcuts centos

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

迁移到 systemd 后不再有核心转储

生成 coredumps 过去工作正常,但切换到 systemd 后,我只看到消息

Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

但没有core生成文件。和systemd有关系吗?

(背景:我的原始问题可以在这里找到。感谢 schaiba 找到解决方案。我提供了这个问答,所以如果其他人已经知道这是一个系统问题,他们可以更容易地找到解决方案。)

core-dump systemd

9
推荐指数
2
解决办法
1万
查看次数

btfs:Zstd 与 lzo

Linux 4.14 添加了对Zstandard(或 Zstd)压缩的支持。以下是来自 Facebook项目网站的算法摘要:

Zstandard是一种实时压缩算法,提供高压缩比。它提供了非常广泛的压缩/速度权衡,同时得到非常快的解码器的支持(请参阅基准测试)。它还为小数据提供了一种特殊模式,称为字典压缩,并且可以从任何样本集创建字典。Zstandard 库作为使用 BSD 许可证的开源软件提供。

Linux 中的支持相当新,因此可能存在隐藏的错误。但除此之外,根据基准测试,该算法在压缩比方面似乎优于lzo ,而在速度方面却没有牺牲太多。

为了在速度和压缩比之间取得良好的权衡,compress=lzo通常建议使用 btrfs。该建议是否应该更改为compress=zstd

linux filesystems compression btrfs linux-kernel

9
推荐指数
0
解决办法
1万
查看次数

将 pacman 包转换为 deb 或 rpm?

给定一个 pacman 包(.pkg.tar.xz),是否有工具将其转换为 deb 或 rpm 包?

换句话说,我正在寻找与alien等效的东西。到目前为止,我的印象是这样的工具不存在。

编辑:有关 .pkg.tar.xz pacman 包的一些背景(来源:Arch Wiki“创建包”文章):

Arch 包只不过是使用 xz 压缩的 tar 存档或“tarball”,其中包含由 makepkg 生成的以下文件:

The binary files to install.
.PKGINFO: contains all the metadata needed by pacman to deal with packages, dependencies, etc.
.MTREE: contains hashes and timestamps of the files, which are included in the local database so that pacman can verify the integrity of the package.
.INSTALL: an optional file used to execute commands after the …
Run Code Online (Sandbox Code Playgroud)

rpm arch-linux pacman package-management deb

6
推荐指数
0
解决办法
6252
查看次数

一旦在重负载下达到交换空间,机器就会冻结

我的机器遇到了几次崩溃。同时,当我启动一个填满所有内存的程序时,我可以重现它。一旦系统开始写入交换文件,系统就会冻结,我必须重新启动。

在日志中,我没有看到崩溃前有用的日志信息,例如:

Mar 23 19:12:01 classen systemd[1]: Starting Cleanup of Temporary Directories...
Mar 23 19:12:01 classen systemd[1]: Started Cleanup of Temporary Directories.
Mar 23 19:12:08 classen wpa_supplicant[757]: wlp3s0: WPA: Group rekeying completed with ...
-- Reboot --
Mar 23 19:17:03 classen systemd-journald[380]: Runtime journal (/run/log/journal/) is 8.0M, max 796.6M, 788.6M free.
Run Code Online (Sandbox Code Playgroud)

实际上,我不知道如何解决问题。我希望有人看到过类似的东西,并能指出我正确的方向。奇怪的是,工作一段时间后,我的系统能够在一定程度上交换(至少,top表明一些交换空间被占用)。只有在交换文件负载过重的情况下才会发生冻结。


这是我的设置:

$ lsblk

NAME                    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                       8:0    0 238.5G  0 disk  
??sda1                    8:1    0   512M  0 part  /boot
??sda2                    8:2    0 …
Run Code Online (Sandbox Code Playgroud)

swap troubleshooting freeze

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

systemd:如何在系统关闭时定期和一次运行作业?

我想定期(例如,每 5 分钟)运行一次作业,最后在系统关闭时运行一次。

Systemd 支持计时器,可用于定期运行作业。它还支持通过使用如下ExecStop钩子在系统关闭时运行作业:

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=<some command to run at system shutdown>
Run Code Online (Sandbox Code Playgroud)

但我很难将这两种方法结合起来。我能想到的唯一选择是编写两个独立的服务:

  1. 由计时器任务触发的一项服务
  2. 另一个使用ExecStop在系统关闭时执行的技巧的服务

我认为它应该有效,但这种方法有两个问题:

  1. 有很多关于安全设置的代码重复
  2. systemd 没有针对并行运行作业的保护。例如,如果在刚刚执行周期性作业时触发关闭,则两个作业将并行运行。

题:

  • 在系统关闭时定期和一次运行作业的最佳方法是什么?
  • 是否可以避免有两个(大部分是重复的)服务文件?

为了获得我对代码重复的理解,这些是我在运行作业时使用的一些安全设置:

User=foo
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
NoNewPrivileges=yes
PrivateDevices=yes
PrivateUsers=yes
CapabilityBoundingSet=
AmbientCapabilities=
SystemCallFilter=~@clock @module @mount @obsolete @raw-io ptrace
ReadOnlyPaths=-/some/path
Run Code Online (Sandbox Code Playgroud)

在我的草图方法中,我需要复制此代码(每个服务一个副本)。

systemd systemd-timer

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

“systemctl list-timers”显示远在未来的最后执行日期

当我运行时systemctl list-timers,上次执行的日期很远。例如,这是输出的一部分:

$ systemctl list-timers
NEXT                          LEFT                    LAST                          PASSED                  UNIT                         ACTIVATES
Sat 2017-08-19 02:29:16 CEST  6h left                 Wed 2017-08-16 02:50:57 CEST  2 days ago              systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Sun 2092-06-29 22:30:00 CEST  74 years 10 months left Sun 2092-06-29 00:22:17 CEST  74 years 10 months left rsnapshot-daily.timer        rsnapshot@daily.service
Mon 2092-06-30 00:00:00 CEST  74 years 10 months left Sun 2092-06-29 00:22:17 CEST  74 years 10 months left fstrim.timer                 fstrim.service
Mon 2092-06-30 00:00:00 CEST  74 years 10 months left Sun 2092-06-29 00:22:17 …
Run Code Online (Sandbox Code Playgroud)

systemd systemd-timer

4
推荐指数
2
解决办法
2348
查看次数