我在这里读到,小条带大小对于 Linux 中的软件(也可能是硬件)RAID 5 和 6 不利。我看到的罕见基准完全同意这一点。
但大家给出的解释是这会引起更多的头部运动。我只是不明白小条纹如何导致更多的头部运动。
假设我们有一个包含 4 个本地 SAS 驱动器的 RAID 6 设置。
情况 1:我们写入 1 Gb 的顺序数据
程序要求内核写入数据,然后内核将其划分以匹配条带大小并计算要写入每个磁盘的每个块(数据和/或奇偶校验)。
内核能够同时写入 4 个磁盘(使用适当的磁盘控制器)。
如果写入的数据未与条带完全对齐,则内核只需在计算结果数据之前读取第一个和最后一个条带。所有其他条带只会被覆盖,而不关心以前的数据。
由于此计算的完成速度比磁盘吞吐量快得多,因此每个块都会直接写入每个磁盘上前一个块的旁边,而不会暂停。所以这基本上是对 4 个磁盘的顺序写入。
小的条带大小如何减慢这一速度?
情况 2:我们在随机位置写入 1,000,000 x 1 kb 的数据
1 kb 小于条带大小(常见条带大小当前为 512 kb)
程序要求内核写入一些数据,然后写入一些其他数据,然后再写入一些其他数据等等。对于每次写入,内核必须读取磁盘上的当前数据,计算新内容,然后将其写回磁盘。然后头部移动到其他地方,并且该操作会重复 999,999 次。
条带大小越小,读取/计算/写入数据的速度就越快。理想情况下,4 kb 的条带大小对于现代磁盘来说是最佳的(如果正确对齐)。
那么再一次,小条带大小如何减慢这一速度呢?
我有一个正在运行的任务会阻止 pm-hibernate(在 Linux 4.0.7-2 上)。当我尝试 pm-hibernate 时,出现错误消息“任务冻结在 20.002 秒后失败(1 个任务拒绝冻结,wq_busy=0):”并显示任务。
这个过程是一个死的过程,几个小时前就被杀死了。为什么root不能从内核中删除它?我感觉就像在Windows下!
我看过相关的问题,比如如何杀死一个不重启就不能被杀死的进程?但似乎没有令人满意的答案。
一些信息(31207
是pid):
# cat /proc/31207/syscall
11 0x7fe482a47000 0x25fce 0x7fe481d4eb78 0x1 0x7fe482a6e700 0x25f2d30 0x7ffca8d8c278 0x7fe481a95ae7
# ps -l -p 31207
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 D 1001 31207 1 0 80 0 - 5035 lock_e pts/9 00:00:00 a.out
# ps -lnp 31207
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD …
Run Code Online (Sandbox Code Playgroud) 假设变量numbers=$@
,其中$@
来自用户的输入。用户输入,./script.sh 901.32.02
我想获取第一个数字9
并存储在另一个变量中。我怎样才能做到这一点?我被告知要做
for n in `seq 1 $count`
do var=${numbers[0]}
done
Run Code Online (Sandbox Code Playgroud)
但是如果 Iecho $var
而不是仅打印出整个输入9
。
我在本地没有root权限的机器上。X 转发被禁用。
远程我正在一台没有屏幕的机器上运行一个进程,使用Xvfb
虚拟帧缓冲区模拟 X 服务器但丢弃任何显示的图像。这相当有效。
现在,有些东西不起作用,我需要通过查看 X 屏幕进行调试。我确实拍了一张截图Xvfb
,xwd -display :99 -root -out /tmp/screenshot.xwdump
但按顺序查看其中许多是相当复杂的。
有没有办法从我的客户端连接到服务器,然后连接到帧缓冲区以便在本地显示远程 X 窗口?
这可能是第二个ssh
渠道。理想情况下,X 程序应该在断开连接后继续运行,如果可能的话,我希望能够在第二次连接之前启动它(想想spice
)。
我只有到服务器的传出连接,并且只有端口 22。在两台机器上都没有 root 权限。
PS:这个问题类似于通过 ssh 运行程序,但我的要求是不能像root
在客户端或服务器上那样安装任何程序,这似乎排除了xpra
(那里给出的答案),除非我找到一种简单的方法来使用它。
我有一些文件/文件夹名称不是 7 位干净的,并且它们在我的 openSUSE 系统中无法正确显示。
\n\n文件夹 /music/Gabriel_Faur\xc3\xa9 的示例:
\n\n# ls -1d /music/Gabriel_Faur?\n/music/Gabriel_Faur??\n
Run Code Online (Sandbox Code Playgroud)\n\n也许区域设置LC_CTYPE
未设置为某个 UTF-8 值?
# locale\nlocale: Cannot set LC_ALL to default locale: No such file or directory\nLANG=en_US.UTF-8\nLC_CTYPE=en_US.UTF-8\nLC_NUMERIC=en_US.UTF-8\nLC_TIME=en_GB.UTF-8\nLC_COLLATE="en_US.UTF-8"\nLC_MONETARY=en_GB.UTF-8\nLC_MESSAGES=en_US.UTF-8\nLC_PAPER=a4\nLC_NAME=en_US.UTF-8\nLC_ADDRESS=en_US.UTF-8\nLC_TELEPHONE=en_US.UTF-8\nLC_MEASUREMENT=en_US.UTF-8\nLC_IDENTIFICATION=en_US.UTF-8\nLC_ALL=\n
Run Code Online (Sandbox Code Playgroud)\n\nLC_CTYPE
嗯,我认为这对于 Unicode 来说是件好事!错误消息说什么?
有趣的是,设置LC_ALL
为精确的值LC_CTYPE
就可以了:
# setenv LC_ALL en_US.UTF-8\n# ls -1d /music/Gabriel_Faur?\n/music/Gabriel_Faur\xc3\xa9\n
Run Code Online (Sandbox Code Playgroud)\n\n但是,我不想将 LC_ALL 设置为 en_US.UTF-8 (或其他任何内容,真的),因为它会弄乱其他一些设置!这无法解决问题,但对我来说只是一个糟糕的解决方法。
\n\n/bin/ls
另外,为什么在将字符打印到屏幕时LC_CTYPE 被和/或我的 shell 忽略?
在 Arch Linux 中,我会检查是否生成了语言环境,但在 openSUSE 中我没有找到任何关于该主题的信息。此外,该语言环境似乎确实存在。
\n\n编辑:
\n\n# ls -1d …
Run Code Online (Sandbox Code Playgroud) 虚拟机中的CPU只是虚拟的,所以我假设不需要加载制造商的微代码。这对于 GPU 来说可能同样有效。
它是否正确?在 KVM/QEMU VM 中使用或不使用它是否有任何风险或缺点?
我说的是在 Linux VM 启动过程早期发生的微代码更新。
主机和虚拟机的 CPU 是相同的。主机在启动时会加载最新的微代码。
带有参考文献的回复将不胜感激,因为我自己已经做了一个有根据的猜测。
我通常使用脚本禁用 Caps Lock 和相应的修饰符,使用xmodmap
. 一切都很好。
但有时,由于某种未知原因,大写锁定键处于活动状态。由于没有绑定任何键Caps_Lock
,也没有绑定切换Lock
修改器的键,我无法关闭大写锁定,除非我重置键盘映射,按下该键,然后将其重新映射到我所需的配置。
那么:如何在不重新映射按键并且没有绑定按键来完成这项工作的情况下禁用大写锁定(当前处于活动状态)?
也许命令行工具可以设置状态?
对于任何感兴趣的人,以下是我的脚本如何禁用按键意外激活 Caps Lock 的方法(我从不故意启用它):
#!/bin/sh
# I never want to use Caps_Lock. Make Caps_Lock another Control_L...
xmodmap -e "remove Lock = Caps_Lock" 2> /dev/null
xmodmap -e "keysym Caps_Lock = Control_L" 2> /dev/null
xmodmap -e "add Control = Control_L" 2> /dev/null
Run Code Online (Sandbox Code Playgroud) 当我尝试去做时sudo pacman -Syu
,它给了我error: config file /etc/pacman.d/mirrorlist could not be read: No such file or directory
。
我该怎么办?
格式化字符%s
品牌stat
打印以字节为单位的文件大小
# stat -c'%A %h %U %G %s %n' /bin/foo
-rw-r--r-- 1 root root 45112 /bin/foo
Run Code Online (Sandbox Code Playgroud)
ls
可以配置为使用“千分隔符”打印字节大小数字,即45,112
代替通常的45112
.
# BLOCK_SIZE="'1" ls -lA
-rw-r--r-- 1 root root 45,112 Nov 15 2014
Run Code Online (Sandbox Code Playgroud)
我可以类似地格式化 stat 的输出,以便文件大小有千位分隔符吗?
我stat
首先使用的原因是,我需要输出 like ls
,但没有时间,因此-c'%A %h %U %G %s %n'
.
或者有没有其他方法可以在ls
没有时间的情况下打印类似输出?
我尝试重新启动我的 CentOS 7 服务器,但它给出了荒谬的错误消息。
作为 root(当然):
# systemctl reboot
Authorization not available. Check if polkit service is running or see debug message for more information.
Failed to start reboot.target: Connection timed out
See system logs and 'systemctl status reboot.target' for details.
Exit 1
Run Code Online (Sandbox Code Playgroud)
是否polkit
需要检查是否root
有重启机器的权利???如果是这样,为什么?
# systemctl status reboot.target
? reboot.target - Reboot
Loaded: loaded (/usr/lib/systemd/system/reboot.target; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd.special(7)
Exit 3
Run Code Online (Sandbox Code Playgroud)
我需要启用reboot
目标吗?为什么默认情况下会禁用此功能?
也许这会奏效?
# systemctl start reboot.target
Authorization not …
Run Code Online (Sandbox Code Playgroud) 所以我经常对运行cat
二进制文件的可执行文件感到内疚,我的终端通常会发出一些奇怪的噪音并且不高兴。是否有一些公认的命名约定来为二进制/可执行编码文件提供扩展名?
我有一个可执行文件(go build -o /tmp/api.exe .
我刚才提到的和我的输出我只是将它命名为 .exe 但我想知道是否有办法在我发现它之前检查文件以查看它是 utf8 还是什么。
我有一个ext4
格式化的磁盘,里面有数以千计的文件,这些文件是自动生成的并且是需要的。其中几千个只有一个字节长,有的两个字节。两组小文件中的所有文件都是相同的。
通过定位这些(比如 1000 个)长度为 1 个字节的文件,删除每个文件并硬链接到单个代表性文件,我可以节省多少空间?
像这样:
# ls -l
-rw-r----- 1 john john 1 Feb 25 10:29 a
-rw-r----- 1 john john 1 Feb 25 10:29 b
-rw-r----- 1 john john 1 Feb 25 10:29 c
# du -kcs ?
4 a
4 b
4 c
12 total
Run Code Online (Sandbox Code Playgroud)
尝试巩固:
# rm b c
# ln a b
# ln a c
ll
total 12
-rw-r----- 3 john john 1 Feb 25 10:29 a
-rw-r----- 3 john john …
Run Code Online (Sandbox Code Playgroud) files ×2
arch-linux ×1
bash ×1
capslock ×1
cat ×1
command-line ×1
coreutils ×1
cpu ×1
disk-usage ×1
ext4 ×1
firmware ×1
framebuffer ×1
hex ×1
inode ×1
kill ×1
kvm ×1
locale ×1
ls ×1
opensuse ×1
pacman ×1
polkit ×1
process ×1
qemu ×1
raid ×1
read ×1
reboot ×1
scripting ×1
shell ×1
stat ×1
systemctl ×1
systemd ×1
unicode ×1
x11 ×1
xmodmap ×1
xvfb ×1