是否可以选择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但找不到选项。也许我错过了。)
在安全性、稳定性和性能方面,LXC(Linux 容器)和FreeBSD 的监狱之间有什么显着区别吗?
乍一看,这两种方法看起来非常相似。
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 实例上看到消息。)
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不起作用吗?当我执行我正在处理的程序时,它失败并显示以下消息:
...
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,但没有区别。不幸的是,我不记得我什么时候可以生成最后一次成功的核心转储。
我正在调试 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) 至少我使用过的每个 Linux 系统都使用惯例通过Ctrl- Alt- F1、Ctrl- Alt-F2等方式切换到非图形控制台。
最近,我在一台机器上安装了 CentOS 6.3。安装是非定制的,使用 Gnome 2。
令我惊讶的是Alt-F4切换到控制台。Alt-F1然后将您带回 XServer。如何将键绑定更改为Ctrl-Alt而不是简单的Alt?
它似乎也绕过了 Gnome 的键绑定。在 Gnome 中,我尝试将Alt-定义F4为关闭窗口,但它不起作用但仍切换到控制台。
生成 coredumps 过去工作正常,但切换到 systemd 后,我只看到消息
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
但没有core生成文件。和systemd有关系吗?
(背景:我的原始问题可以在这里找到。感谢 schaiba 找到解决方案。我提供了这个问答,所以如果其他人已经知道这是一个系统问题,他们可以更容易地找到解决方案。)
Linux 4.14 添加了对Zstandard(或 Zstd)压缩的支持。以下是来自 Facebook项目网站的算法摘要:
Zstandard是一种实时压缩算法,提供高压缩比。它提供了非常广泛的压缩/速度权衡,同时得到非常快的解码器的支持(请参阅基准测试)。它还为小数据提供了一种特殊模式,称为字典压缩,并且可以从任何样本集创建字典。Zstandard 库作为使用 BSD 许可证的开源软件提供。
Linux 中的支持相当新,因此可能存在隐藏的错误。但除此之外,根据基准测试,该算法在压缩比方面似乎优于lzo ,而在速度方面却没有牺牲太多。
为了在速度和压缩比之间取得良好的权衡,compress=lzo通常建议使用 btrfs。该建议是否应该更改为compress=zstd?
给定一个 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) 我的机器遇到了几次崩溃。同时,当我启动一个填满所有内存的程序时,我可以重现它。一旦系统开始写入交换文件,系统就会冻结,我必须重新启动。
在日志中,我没有看到崩溃前有用的日志信息,例如:
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) 我想定期(例如,每 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)
但我很难将这两种方法结合起来。我能想到的唯一选择是编写两个独立的服务:
ExecStop在系统关闭时执行的技巧的服务我认为它应该有效,但这种方法有两个问题:
题:
为了获得我对代码重复的理解,这些是我在运行作业时使用的一些安全设置:
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)
在我的草图方法中,我需要复制此代码(每个服务一个副本)。
当我运行时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 ×4
arch-linux ×2
btrfs ×2
core-dump ×2
linux ×2
centos ×1
compression ×1
cp ×1
cryptsetup ×1
deb ×1
dmesg ×1
filesystems ×1
freebsd ×1
freeze ×1
jails ×1
kernel ×1
linux-kernel ×1
luks ×1
lxc ×1
pacman ×1
rpm ×1
swap ×1
top ×1
xorg ×1