我在一个目录中有几个文件:
$ ls | wc -l
9376
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么使用ls *and有这么大的时差ls?
$ time ls > /dev/null
real 0m0.118s
user 0m0.106s
sys 0m0.011s
Run Code Online (Sandbox Code Playgroud)
和
$ time ls * > /dev/null
real 1m32.602s
user 0m0.233s
sys 0m0.438s
Run Code Online (Sandbox Code Playgroud)
好吧,这是一个极端的例子,可能会有所增强,因为该目录位于通用并行文件系统 (GPFS) 上。但我也可以看到本地文件系统的显着放缓。
编辑:
$ time ls -l > /dev/null
real 0m58.772s
user 0m0.113s
sys 0m0.452s
$ time ls -l * > /dev/null
real 1m19.538s
user 0m0.252s
sys 0m0.461s
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,在我的例子中没有子目录:
$ diff <(ls) <(ls *)
$
Run Code Online (Sandbox Code Playgroud) 我正在比较以下内容
tail -n 1000000 stdout.log | grep -c '"success": true'
tail -n 1000000 stdout.log | grep -c '"success": false'
Run Code Online (Sandbox Code Playgroud)
与以下
log=$(tail -n 1000000 stdout.log)
echo "$log" | grep -c '"success": true'
echo "$log" | grep -c '"success": false'
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,第二个花费的时间几乎是第一个的 3 倍。它应该更快,不是吗?
许多新硬盘的物理扇区大小为 4096。是否可以使系统使用相同大小的逻辑扇区大小,而不是默认的 512 逻辑扇区大小?
它会加速批量读取和写入吗?哪里可以配置?
I'm trying to find the most efficient way to iterate through certain values that are a consistent number of values away from each other in a space separated list of words(I don't want to use an array). For example,
list="1 ant bat 5 cat dingo 6 emu fish 9 gecko hare 15 i j"
Run Code Online (Sandbox Code Playgroud)
So I want to be able to just iterate through list and only access 1,5,6,9 and 15.
EDIT: I should have made it clear that the …
有updatedb必要吗?我从不使用locate,我的服务器往往有数以百万计的文件,这通常会使 updateb 运行很长时间并消耗 MySQL 和/或其他软件所需的 I/O。
我可以从 cron 中删除它并期望一切正常吗?(我的意思是在服务器上找到的常用软件:linux、cpanel、mysql、apache、php 等)。
我从以下输出top:
Cpu(s): 43.8%us, 32.5%sy, 4.8%ni, 2.0%id, 15.6%wa, 0.2%hi, 1.2%si, 0.0%st
Mem: 16331504k total, 15759412k used, 572092k free, 4575980k buffers
Swap: 4194296k total, 260644k used, 3933652k free, 1588044k cached
Run Code Online (Sandbox Code Playgroud)
的输出iostat -xk 6显示如下:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 360.20 86.20 153.40 1133.60 2054.40 26.61 1.51 6.27 0.77 18.38
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 22.60 198.80 17.40 31.60 265.60 921.60 48.46 0.18 …Run Code Online (Sandbox Code Playgroud) 我有一个开发服务器,sshd有时会因为机器内存不足而停止工作。是的,我们的内存不足,升级现在不是一个可行的选择。我想要做的是告诉机器:“做任何你想做的事,但留下 20MB 和一些 CPU 给sshd!”。
那怎么办呢?
我正在考虑在我的数据驱动器上使用 btrfs,以便我可以使用snapper或类似 snapper 的东西来拍摄基于时间的快照。我相信这会让我浏览旧版本的数据。这将是我当前的异地备份的补充,因为驱动器故障会清除数据和快照。
根据我的理解,btrfs 快照不会占用太多空间(元数据和已更改的块,可能还有一些开销),因此空间似乎不是限制。
如果我有 100 万个快照(例如,两年内每分钟一个快照),假设我有足够的磁盘空间来存储数据、更改的数据和元数据,是否会造成严重破坏?
如果快照数量有实际限制,是否取决于文件数量和/或文件大小?
通常,当我的程序进行全盘扫描并检查系统中的所有文件时,它们需要很长时间才能运行。相比之下,为什么updatedb 运行得如此之快?
我可以在 Ubuntu 18.04LTS 中禁用 Spectre 和 Meltdown 缓解功能吗?
我想测试当我在 Linux 中禁用这两个功能时,我获得了多少性能,如果性能很大,则永久使用。