AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页

unix

Martin Hope
Miguel
Asked: 2025-04-01 19:27:27 +0800 CST

CPU 数量不等于每核线程数 X 每插槽核数 X 插槽数

  • 22

据我了解,我的计算机中的 CPU 数量应为

CPU = 每核线程数 x 每插槽核心数 x 插槽数

以下是输出的前几行lscpu:

$ lscpu | head -n18
Architecture:             x86_64
CPU op-mode(s):         32-bit, 64-bit
Address sizes:          46 bits physical, 48 bits virtual
Byte Order:             Little Endian
CPU(s):                   22
On-line CPU(s) list:    0-21
Vendor ID:                GenuineIntel
Model name:             Intel(R) Core(TM) Ultra 7 155H
CPU family:           6
Model:                170
Thread(s) per core:   2
Core(s) per socket:   16
Socket(s):            1
Stepping:             4
CPU(s) scaling MHz:   14%
CPU max MHz:          4800.0000
CPU min MHz:          400.0000
BogoMIPS:             5990.40

发生了什么事?2 × 16 = 32,而不是 22。即使运行也nproc --all显示 22。

我是否遗漏了什么?

cpu
  • 1 个回答
  • 1974 Views
Martin Hope
Mark
Asked: 2025-03-12 08:29:01 +0800 CST

使用 rsync 仅复制已更改的文件,而不复制新文件

  • 22

我有两个目录,分别称为“源”和“目标”,它们有一些共同的文件。其中一个目录中也有一些文件,而另一个目录中没有。当且仅当 (1) 两个目录中都存在同名文件,并且 (2) 文件内容不同时,我才想将文件从“源”复制到“目标”。

“内容不同”的标准很简单:rsync --checksum -av source/ dest/。但我不知道如何做“仅当两个文件中都存在同名文件时”的部分。

rsync
  • 3 个回答
  • 1233 Views
Martin Hope
user2690527
Asked: 2025-01-20 00:45:10 +0800 CST

对于 SATA SDD 来说,“支持 DRM 功能但可能无法完全访问”是什么意思?

  • 31

我正在运行内核 6.12.10,在我的 dmesg 日志的深处,我发现了这些条目:

kernel: ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
kernel: ata4.00: Model 'INTEL SSDSCKJF360A5L', rev 'LT2i', applying quirks: zeroaftertrim
kernel: ata4.00: ACPI cmd f5/00:00:00:00:00:a0(SECURITY FREEZE LOCK) filtered out
kernel: ata4.00: supports DRM functions and may not be fully accessible
kernel: ata4.00: ATA-10: INTEL SSDSCKJF360A5L, LT2i, max UDMA/133
kernel: ata4.00: 703282608 sectors, multi 0: LBA48 NCQ (depth 32), AA
kernel: ata4.00: Features: Trust Dev-Sleep
kernel: ata4.00: ACPI cmd f5/00:00:00:00:00:a0(SECURITY FREEZE LOCK) filtered out
kernel: ata4.00: supports DRM functions and may not be fully accessible
kernel: ata4.00: configured for UDMA/133
kernel: scsi 3:0:0:0: Direct-Access     ATA      INTEL SSDSCKJF36 LT2i PQ: 0 ANSI: 5
kernel: sd 3:0:0:0: Attached scsi generic sg0 type 0
kernel: sd 3:0:0:0: [sda] 703282608 512-byte logical blocks: (360 GB/335 GiB)
kernel: sd 3:0:0:0: [sda] Write Protect is off
kernel: sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00
kernel: sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
kernel: sd 3:0:0:0: [sda] Preferred minimum I/O size 512 bytes
kernel:  sda: sda1 sda2 sda3 sda4 sda5 sda6
kernel: sd 3:0:0:0: [sda] Attached SCSI disk

以下消息是什么意思?

  • supports DRM functions and may not be fully accessible
  • read cache: enabled, doesn't support DPO or FUA

在这种情况下,DRM 代表什么?(我怀疑它是指数字版权管理。)这些信息相关吗?

这些消息似乎是新的。我不记得以前见过它们。但我不知道从哪个内核版本开始它们开始出现。

disk
  • 1 个回答
  • 14647 Views
Martin Hope
ron
Asked: 2024-06-24 09:24:51 +0800 CST

编写将消息注入 /var/log/messages 的 C 代码的正确方法是什么?

  • 23

在 Linux 中,如果有必要,RHEL-8.10 或更高版本,我想编写一些 C 代码,这些代码接受各种参数,并在特定条件下发出system("init 0")关闭系统命令。在发出关闭命令之前,我想在其中放入一行消息,/var/log/messages说明系统被 ron 的代码关闭,这样我就可以记录关闭的时间。

如何正确写入/var/log/messages?

显然我可以做一个fopen("/var/log/messages, "a")和一个简单的fprintf,但这看起来有点像黑客行为。

logs
  • 1 个回答
  • 2636 Views
Martin Hope
Steve Summit
Asked: 2024-05-30 20:56:39 +0800 CST

无法将时间设置为 1970 年 1 月 1 日凌晨

  • 34

这与“为什么我不能将我的 GNU/Linux 机器的日期设置为纪元? ”相关,但我相信不是重复的。

我发现我的一个 Linux 内核拒绝将时钟设置为纪元过去六分钟内的时间的尝试:

root@beaglebone:/# date 010100061970
date: cannot set date: Invalid argument
Thu 01 Jan 1970 12:06:00 AM UTC
root@beaglebone:/# date 010100071970
Thu 01 Jan 1970 12:07:00 AM UTC

但纪元过去七分钟就可以了。

有人知道为什么会这样吗?当我有机会时,我会检查内核源代码以获取线索。

(不,这不是一个实际问题,只是好奇心,因此可能更适合 Retrocomputing.se 或其他东西。我尝试以这种方式设置时钟是错误的,内核拒绝了它,这对我来说是一个好处。但是,尽管如此,还是很奇怪。)

我从其他证据中知道拒绝不是发生在命令中date,而是发生在内核本身中。系统settimeofday调用返回 -1,errno 设置为 EINVAL。

这是在运行内核 4.19.94-ti-r42 的 Debian 10 系统上。

我还在 Debian 11 机器、内核 5.10.179-1 上尝试过它,它的行为类似,尽管“禁区”是 1970 年初的整整两个月——我似乎无法设置早于 3 月的日期1.


更新:现在不仅问题得到了解答,而且奇怪的小谜团也得到了解决,即为什么我测试它的不同机器有不同的行为。我测试的第一台机器最近刚刚重新启动,它不允许我将时间设置为小于纪元过去七分钟的值。但第二台机器已经运行了几个月,它不允许我将时间设置为三月之前的日期——也就是说,不能在该纪元过去的前两个月内。但这是有道理的,因为表述约束的一种方式是(自 1970 年以来的时间)不能小于(自启动以来的时间)。

linux
  • 1 个回答
  • 2416 Views
Martin Hope
Pila
Asked: 2024-04-01 01:37:44 +0800 CST

2024 年 3 月 30 日之后怎么可能有 1 日呢?

  • 25

我在欧盟区 +1 或DST开启时 +2。现在是 2024 年 3 月 31 日星期日。这周日早上,我们改为 DST,时间为 2→3(CET → CEST)。

我的 Linux 服务器位于不同的网络中,在每月最后一天的 23:58 报告每月的能源消耗情况。它们多年来一直完美工作。网络间的旅行间隔长达 8 小时!

每个服务器都有一个RTC并定期同步NTP 。如果有任何可疑的情况,有很多保障措施,每个网络中的三台核心服务器不断相互检查一切(包括时间)是否正常。是的,我很偏执。我不允许 (0) 个错误。我的系统可以完美稳定地运行很多年。工作了,抱歉。

昨晚,3 月 30 日 23:58,我所有的 Raspberry Pi 服务器决定 3 月 30 日之后是下个月 1 日!我验证了每个网络的 7(七)种不同且独立的方式,一切确实发生在 3 月 30 日 23:58 分钟内!确认包括 9 个忽略 DST 的独立设备,以及一个外部美国和欧盟邮件提供商。

每天 23:58,我的服务器都会进行 bash 测试,显然可能会在很多方面出错:

(( $(date -d tomorrow +"%-d") == 1 )) && ZadnjiDanMjeseca=1 || ZadnjiDanMjeseca=""

我看不出这个测试有任何出错的地方!我希望我错了。此时此刻,2024 年 3 月 31 日。一切都工作得很好,zdump 是正确的!(以下示例对我来说似乎格式错误。必须显示四个不同的行。)

hwclock; date; date -d tomorrow +"%-d"
2024-03-31 19:22:23.311664+02:00
ned, 31.03.2024.  19:22:23 CEST
1

我可以解释这个问题的唯一方法是:我使用的 Linux 发行版Raspbian不知何故有两个独立的内核函数计算时间。可悲的是,其中一个人错过了这一事实:今年是闰年!UPS!

但是,如果是这样,为什么要限制为这个 Raspberry Pi 操作系统版本和内核呢?天哪,微软没能让Excel正确计算闰年!

这个周末,我看到我国的几家机构(银行、我们的国家税务局……)都出现了与日期相关的问题,并且也关闭了商店,所以这似乎不仅限于 Raspbian。

这对我作为程序员来说是不利的,但是,我找不到其他解释。希望我错了......

在发帖之前,我从 1 日的 23:58 切换到 00:03,并且我必须在该月最后一天的 23:58 记录数据,我通过添加 300 秒进行测试,而不是要求 +1天。这些解决方案应该有效。

所以它没有被隐藏在评论中:由于我从来没有使用过这样的计算,所以我犯了一个基本错误,期望“明天”实际上意味着明天!这对我来说没有任何意义;这意味着+1天。因此,我预计这两个命令会产生相同的输出:

> date -d 'next tue'
uto,  2.04.2024.  00:00:00 CEST

> date -d 'tomorrow'
uto,  2.04.2024.  10:24:55 CEST

而不必输入:

date -d "tomorrow 0"
linux
  • 1 个回答
  • 2891 Views
Martin Hope
g0mb4
Asked: 2024-01-10 05:42:43 +0800 CST

旧 C 文件中的单个“#”

  • 42

#我开始研究旧的 C 代码(Unix v6),我想知道文件开头的单个的目的是什么.c。例如来自https://github.com/lsahn-gh/unix-v6/blob/master/sys%2Fken%2Falloc.c

#
/*
 */

#include "../param.h"
#include "../systm.h"
#include "../filsys.h"
...
c
  • 3 个回答
  • 6717 Views
Martin Hope
Ownsky
Asked: 2023-11-25 20:18:47 +0800 CST

为什么物理地址对齐 4KB 时,虚拟地址却不是 4KB 对齐?

  • 29

简而言之,我在内核中有一个物理地址0x250000000(9,932,111,872 或),它显然与 4kB(页面大小)对齐。当我使用内核__va()函数获取内核虚拟地址时,我得到了类似的内容0xf570660f(每次启动时都不同),它没有与 4kB 对齐。

我使用的是 64 位系统,因此没有 HIGHMEM,并且我认为由于线性内存模型,4kB 对齐的物理地址的虚拟地址也应该是 4kB 对齐的。我错过了什么?虚拟地址不应该是吗phys_addr + PAGE_OFFSET?或者是sparsemem的影响?但也许它也应该是 4kB 对齐的?

以下是更多详细信息:

我的工作环境是在 x86 64 位 QEMU VM 上。我正在尝试在模式下使用 PMEMDEV-DAX作为普通内存。我可以得到它的物理起始地址(0x250000000),已经确认是正确的。然后我需要将它转移到内核空间中的虚拟地址,以便我可以根据需要使用它。这是一些代码:

static long nvpc_map_whole_dev(struct dax_device *dax_dev, void **kaddr, pfn_t *pfn)
{
    // get the device
    struct dev_dax_nvpc *dax_nvpc = (struct dev_dax_nvpc *)dax_get_private(dax_dev);
    
    // get the virtual address and the pfn_t
    *kaddr = __va(dax_nvpc->phys_start);
    *pfn = phys_to_pfn_t(dax_nvpc->phys_start, PFN_MAP);
    
    pr_info("[NVPC DEBUG]: paddr %#llx kaddr %p pfn %lu\n", dax_nvpc->phys_start, *kaddr, pfn_t_to_pfn(*pfn));
    pr_info("[NVPC DEBUG]: kaddr-paddr %#llx\n", __pa(*kaddr));
    return PHYS_PFN(dax_nvpc->size);
}

这是我得到的结果:

在此输入图像描述

如图所示, 、paddr dax_nvpc->phys_start、 、pfn都是正确的。但kaddr(虚拟地址)让我感到困惑。然后,当我将其传输kaddr回物理地址(下一个输出行)时,结果是正确的。

更重要的是,我可以对内存从kaddr到进行任何操作kaddr + dax_nvpc->size,没有页面错误。

谁能告诉我为什么虚拟地址不是 4kB 对齐的?我在某个地方是不是傻瓜?此外,我可以做些什么来确保虚拟地址也与页面对齐吗?

kernel
  • 1 个回答
  • 3586 Views
Martin Hope
Ole Tange
Asked: 2023-11-05 20:38:40 +0800 CST

为什么“H”/72/0x48 是可执行文件中第二个最常见的字节?

  • 64

我跑了这个:

cat /usr/bin/* |
  perl -ne 'map {$a{$_}++} split//; END{print map { "$a{$_}\t$_\n" } keys %a}' |
  grep --text . | sort -n | plotpipe --log y {1}

并得到这个:

字节值出现的次数

(即使使用对数 y 轴,它看起来仍然是指数的!顶部和底部之间的距离超过 100 倍)

看一下数字:

:
31919597        ^H
32983719        ^B
33943030        ^O
39130281        \213
39893389        $
52237360        \211
53229196        ^A
76884442        \377
100776756       H
746405320       ^@

^@ (NUL) 是可执行文件中最常见的字节,这并不奇怪。\377 (255) 和 ^A (1) 对我来说也具有直观意义。

但是,是什么导致“H”(72)成为可执行文件中第二常见的字节——比 255 和 1 更常见呢?

x86
  • 1 个回答
  • 7277 Views
Martin Hope
Stéphane Chazelas
Asked: 2023-10-29 23:20:48 +0800 CST

为什么 unbuffer -p 会破坏其输入?

  • 23
$ seq 10 | unbuffer -p od -vtc
0000000   1  \n   2  \n   3  \n   4  \n   5  \n   6  \n   7  \n   8  \n

9去了哪里10?

$ printf '\r' | unbuffer -p od -An -w1 -vtc
  \n

为什么\r改为\n?

$ : | unbuffer -p printf '\n' | od -An -w1 -vtc
  \r
  \n
$ unbuffer -p printf '\n' | od -An -w1 -vtc
  \r
      \n

搞什么?

$ printf foo | unbuffer -p cat
$

为什么没有输出(并且延迟一秒)?

$ printf '\1\2\3foo bar\n'  | unbuffer -p od -An -w1 -vtc
$

为什么没有输出?

$ (printf '\23'; seq 10000) | unbuffer -p cat

为什么它挂起并且没有输出?

$ unbuffer -p sleep 10

为什么我看不到我输入的内容(为什么即使我sleep没有阅读它也会被丢弃)?

顺便说一下,还有:

$ echo test | unbuffer -p grep foo && echo found foo
found foo

为什么grep找到foo但没有打印包含它的行?

$ unbuffer -p ls /x 2> /dev/null
ls: cannot access '/x': No such file or directory

为什么错误没有转到/dev/null?

另请参阅取消缓冲将所有字符转换为响铃?

$ echo ${(l[10000][foo])} | unbuffer -p cat | wc -c
4095

那是:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
Codename:       trixie
$ uname -rsm
Linux 6.5.0-3-amd64 x86_64
$ expect -c 'puts "expect [package require Expect] tcl [info patchlevel]"'
expect 5.45.4 tcl 8.6.13
$ /proc/self/exe --version
zsh 5.9 (x86_64-debian-linux-gnu)

在 Ubuntu 22.04 或 FreeBSD 12.4-RELEASE-p5 上也是如此(除了od命令必须在那里进行调整,我得到 2321(那里的所有 BEL 字符)而不是上面的 4095)。

expect
  • 1 个回答
  • 1252 Views
Martin Hope
Alberto Pianon
Asked: 2023-10-26 17:06:44 +0800 CST

为什么 Linux 中的文件系统时间总是比系统时间晚一些毫秒?

  • 27

在Linux中,文件系统时间似乎总是落后系统时间几毫秒,如果您想检查文件是否在给定时间之前或之后在非常窄的时间范围(毫秒)内被修改,则会导致不一致。

在任何具有支持纳秒分辨率的文件系统的 Linux 系统中(我尝试使用具有 256 字节 inode 和 ZFS 的 ext4),如果您尝试执行以下操作:

date +%H:%M:%S.%N; echo "hello" > test1; stat -c %y test1 | cut -d" " -f 2

第二个输出值(文件修改时间)始终比第一个输出值(系统时间)晚几毫秒,例如:

17:26:42.400823099
17:26:42.395348462

而它应该是相反的,因为文件在调用命令后被test1修改。date

你可以在 python 中得到相同的结果:

import os, time

def test():
    print(time.time())
    with open("test1", "w") as f:
        f.write("hello")
        print(os.stat("test1").st_mtime)

test()
1698255477.3125281
1698255477.3070245

为什么会这样呢?有没有办法避免它,使系统时间与文件系统时间一致?到目前为止,我发现的唯一解决方法是通过创建一个虚拟临时文件并获取其修改时间来获取文件系统“时间”(无论这在实践中意味着什么),如下所示:

def get_filesystem_time():
    """
    get the current filesystem time by creating a temporary file and getting
    its modification time.
    """
    with tempfile.NamedTemporaryFile() as f:
        return os.stat(f.name).st_mtime

但我想知道是否有更清洁的解决方案。

linux
  • 2 个回答
  • 1084 Views
Martin Hope
terdon
Asked: 2023-08-17 00:08:44 +0800 CST

现在解析 GNU ls 的输出是否安全?

  • 26

过去几十年来公认的观点是,解析ls( [1] , [2] ) 的输出从来都不是一个好主意。例如,如果我想将文件的修改日期及其名称保存到 shell 变量中,则这不是正确的方法:

$ ls -l file
-rw-r--r-- 1 terdon terdon 0 Aug 15 19:16 file
$ foo=$(ls -l file | awk '{print $9,$6,$7,$8}')
$ echo "$foo"
file Aug 15 19:16

只要文件名稍有不同,该方法就会失败:

$ ls -l file*
-rw-r--r-- 1 terdon terdon 0 Aug 15 19:16 'file with spaces'
$ foo=$(ls -l file* | awk '{print $9,$6,$7,$8}')
$ echo "$foo"
file Aug 15 19:16

如果文件的修改日期与今天不接近,情况会变得更糟,因为这可能会更改时间格式:

$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Aug 15 19:21  file
-rw-r--r-- 1 terdon terdon 0 Aug 15  2018 'file with spaces'

然而,较新版本的 GNU coreutilsls有两个选项,可以组合起来设置特定的时间格式并生成 NULL 界定的输出:

      --time-style=TIME_STYLE
              time/date format with -l; see TIME_STYLE below
[...]
     --zero end each output line with NUL, not newline
[...]
       The TIME_STYLE argument can be full-iso,  long-iso,  iso,  locale,  or
       +FORMAT.   FORMAT  is  interpreted like in date(1).  If FORMAT is FOR‐
       MAT1<newline>FORMAT2, then FORMAT1 applies  to  non-recent  files  and
       FORMAT2  to recent files.  TIME_STYLE prefixed with 'posix-' takes ef‐
       fect only outside the POSIX locale.  Also the  TIME_STYLE  environment
       variable sets the default style to use.

这里再次是设置了这些选项的文件(每行输出末尾的零被替换为#换行符,以稍微提高可读性):

$ ls -l --zero --time-style=long-iso -- *
-rw-r--r--+ 1 terdon terdon 0 2023-08-16 21:35 a file with a
newline#
-rw-r--r--+ 1 terdon terdon 0 2023-08-15 19:16 file#
-rw-r--r--+ 1 terdon terdon 0 2018-08-15 12:00 file with spaces#

ls有了这些可用的选项,我可以做许多传统上有害的事情。例如:

  1. 将最近修改的文件名放入变量中:

    $ touch 'a file with a'$'\n''newline'
    $ last=$(ls -tr --zero | tail -z -n1)
    bash: warning: command substitution: ignored null byte in input
    $ printf -- 'LAST: "%s"\n' "$last"
    LAST: "a file with a 
    newline"
    
  2. 引发这个问题的例子。另一个问题,在 Ask Ubuntu 上,OP 想要打印文件名和修改日期。有人使用和 一个巧妙的技巧发布了答案,如果我们添加到,它似乎非常强大:lsawk--zerols

    $ output=$(ls -l --zero --time-style=long-iso -- * | 
               awk 'BEGIN{RS="\0"}{ t=index($0,$7); print substr($0,t+6), $6 }')
    $ printf 'Output: "%s"\n' "$output"
    Output: "a file with a
    newline 2023-08-16"
    

我找不到一个可以打破这两个例子的名字。所以,我的问题是:

  1. 是否存在上述两个示例之一会失败的情况?也许有一些奇怪的地方?
  2. 如果不是,这是否意味着现代版本的 GNUls实际上可以安全地使用任意文件名?
shell
  • 3 个回答
  • 3946 Views
Martin Hope
Evan Carroll
Asked: 2023-07-30 05:04:18 +0800 CST

什么是“霍克吉”?

  • 35

内核中有很多常量以HORKAGE,

  • ATA_HORKAGE_ZERO_AFTER_TRIM
  • ATA_HORKAGE_NODMA
  • ATA_HORKAGE_ATAPI_MOD16_DMA
  • ATA_HORKAGE_NO_DMA_LOG
  • ATA_HORKAGE_NO_ID_DEV_LO
  • ATA_HORKAGE_NO_LOG_DIR
  • ATA_HORKAGE_WD_BROKEN_LPM

然而,这些并没有真正记录在案

根据 libata.force 强制 horkage 并抱怨它。为了与链路选择保持一致,15 号设备选择连接到主机链路的第一个设备。

"horkage" 是什么意思?

linux
  • 4 个回答
  • 5564 Views
Martin Hope
Sebastian Carlos
Asked: 2023-07-06 15:17:35 +0800 CST

为什么“yes&”会使我的 Bash 会话崩溃?

  • 30

“是的,而且……”是即兴喜剧中的一个很棒的经验法则。在 UNIX 世界中则不然。

当我运行这个公认的愚蠢yes&命令时,我无法中断它。终端崩溃或陷入循环。

我希望该yes进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。

bash
  • 2 个回答
  • 4866 Views
Martin Hope
Patrick Bucher
Asked: 2023-04-05 14:45:11 +0800 CST

我应该(仍然)为我的所有服务器使用 UTC 吗?

  • 28

我的雇主位于欧洲 (CET),因此我们使用夏令时,这需要每年两次前后移动一个小时。我们的服务器在不同位置的云中运行。设置所有基础设施的员工不在了。他决定在所有服务器(目前是 Ubuntu 18.04、20.04 和 22.04)上使用 UTC 作为系统时区。

这并不理想,因为您必须在日志文件中看到的每个日期都在心理上增加 1/2 小时,具体取决于一年中的时间(夏季 +2 小时,冬季 +1 小时)。一些 cronjobs 的时间也需要每年调整两次,因为任务应该在 CET 中午运行。

是否有充分的理由(仍然)使用 UTC 作为系统的时区?或者我应该改用 CET,以便我的 cronjobs 和日志文件更好地与挂钟保持一致?

linux
  • 4 个回答
  • 4574 Views
Martin Hope
Ole Tange
Asked: 2023-03-22 06:10:14 +0800 CST

rsync 文件`a`b

  • 27

是的,我知道你在想什么:“到底是谁命名他们的文件`a`b?”

但是让我们假设您确实有一个名为`a`b(可能是由疯狂的 Mac 用户制作的 - 显然不是您制作的)的文件,并且您想要rsync那个。显而易见的解决方案:

rsync server:'./`a`b' ./.;
rsync 'server:./`a`b' ./.;

给出:

bash: line 1: a: command not found
rsync: [sender] link_stat "/home/tange/b" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1865) [Receiver=3.2.7]
rsync: [Receiver] write error: Broken pipe (32)

甚至:

$ rsync 'server:./\`a\`b' ./.;
bash: line 3: a\: command not found
rsync: [sender] link_stat "/home/tange/\b" failed: No such file or directory (2)
:

rsync我应该运行的命令是什么?

$ rsync --version
rsync  version 3.2.7  protocol version 31
rsync
  • 3 个回答
  • 1557 Views
Martin Hope
Damn Vegetables
Asked: 2023-03-20 11:31:18 +0800 CST

为什么 Gnome 分数缩放是 1.7518248558044434 而不是 1.75?

  • 26

如果我在 Gnome 设置中设置 175% 缩放比例,该值将保存1.7518248558044434为~/.config/monitors.xml:

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>1.7518248558044434</scale>
      <primary>yes</primary>
      <monitor>
        <monitor spec>
          <connector>DP-3</connector>

为什么会这样?起初,我认为这可能是由于浮点舍入误差引起的,但 1.75 是那些可以表达精确值的快乐数字之一。

侏儒韦兰 43.3

gnome
  • 2 个回答
  • 7516 Views
Martin Hope
user356126
Asked: 2022-12-22 18:15:43 +0800 CST

内核如何知道它正在从休眠中恢复,而不是引导?

  • 30

当 Linux 系统休眠并从休眠中恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?

起初,我以为GRUB(或其他引导加载程序)通过内核参数告诉内核。但是只要我查看/proc/cmdline,内核参数就和平时一样了。内核是否有任何机制知道它正在恢复?

linux-kernel
  • 1 个回答
  • 2194 Views
Martin Hope
Ian Christy
Asked: 2022-07-06 13:12:02 +0800 CST

为什么 awk -F 适用于大多数字母,但不适用于字母“t”?

  • 39
 July 2022      mac os Monterey V12.1 
   awk --version 20200816
   GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)

为什么awk -F对大多数字母有效,但对字母无效t?我有解决方案,但我想了解为什么 awk 对 letter 失败t。

# Count 'e's
% echo "tweeter" | awk -F "e" '{print NF-1}'
3

# Count 'r's
% echo "tweeter" | awk -F "r" '{print NF-1}'
1

# (Attempt to) count 't's
% echo "tweeter" | awk -F "t" '{print NF-1}'
0   <=== ????

# Use gsub()
% echo "tweeter" | awk '{print gsub(/t/, "")}'
2
awk macos
  • 2 个回答
  • 6945 Views
Martin Hope
manuel
Asked: 2022-05-28 05:12:56 +0800 CST

无法以 root 身份删除此文件 [重复]

  • 25
这个问题在这里已经有了答案:
无法删除文件,即使以 root 身份运行 3 个答案
为什么我不能以 root 身份删除此文件? (2 个回答)
5 个月前关闭。

我无法rm -rf /home/wordpress/testDomain.com从我的 Linux 机器中删除文件。Operation not permitted我得到一个错误,而不是文件被删除。我怎样才能解决这个问题?

$ cd /home/wordpress/testDomain.com/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs
$ sudo rm -f annmanagement
rm: cannot remove 'annmanagement': Operation not permitted
$ ls -al
total 3308
drwxr-xr-x 2 www-data www-data    4096 May 27 13:43 .
drwxr-xr-x 3 www-data www-data    4096 May 27 13:46 ..
-r-------- 1 root     root     3375768 Dec 27  2016 annmanagement

$ sudo find . -inum 535255 -exec rm -i {} \;**
rm: remove regular file './annmanagement'? y
rm: cannot remove './annmanagement': Operation not permitted


$ lsattr
----i---------e----- ./annmanagement

$ stat annmanagement
  File: annmanagement
  Size: 3375768         Blocks: 6600       IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 535255      Links: 1
Access: (0400/-r--------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-27 09:02:30.650849241 +0200
Modify: 2016-12-27 10:48:37.000000000 +0100
Change: 2022-03-15 07:59:42.524922372 +0100
 Birth: -

跟踪输出:

$ sudo strace rm -f annmanagement**
execve("/bin/rm", ["rm", "-f", "annmanagement"], 0x7ffc24e45690 /* 13 vars */) = 0
brk(NULL)                               = 0x55cd820a2000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffe7894d320) = -1 EINVAL (Invalid argument)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=42697, ...}) = 0
mmap(NULL, 42697, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8c5d386000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300A\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\30x\346\264ur\f|Q\226\236i\253-'o"..., 68, 880) = 68
fstat(3, {st_mode=S_IFREG|0755, st_size=2029592, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8c5d384000
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\30x\346\264ur\f|Q\226\236i\253-'o"..., 68, 880) = 68
mmap(NULL, 2037344, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8c5d192000
mmap(0x7f8c5d1b4000, 1540096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f8c5d1b4000
mmap(0x7f8c5d32c000, 319488, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19a000) = 0x7f8c5d32c000
mmap(0x7f8c5d37a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7f8c5d37a000
mmap(0x7f8c5d380000, 13920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8c5d380000
close(3)                                = 0
arch_prctl(ARCH_SET_FS, 0x7f8c5d385580) = 0
mprotect(0x7f8c5d37a000, 16384, PROT_READ) = 0
mprotect(0x55cd80c6a000, 4096, PROT_READ) = 0
mprotect(0x7f8c5d3be000, 4096, PROT_READ) = 0
munmap(0x7f8c5d386000, 42697)           = 0
brk(NULL)                               = 0x55cd820a2000
brk(0x55cd820c3000)                     = 0x55cd820c3000
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=3035952, ...}) = 0
mmap(NULL, 3035952, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8c5ceac000
close(3)                                = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
newfstatat(AT_FDCWD, "annmanagement", {st_mode=S_IFREG|0400, st_size=3375768, ...}, AT_SYMLINK_NOFOLLOW) = 0
unlinkat(AT_FDCWD, "annmanagement", 0)  = -1 EPERM (Operation not permitted)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2996, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2996
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "rm: ", 4rm: )                     = 4
write(2, "cannot remove 'annmanagement'", 29cannot remove 'annmanagement') = 29
openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, ": Operation not permitted", 25: Operation not permitted) = 25
write(2, "\n", 1
)                       = 1
lseek(0, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++
files permissions
  • 1 个回答
  • 1905 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve