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 / 问题

全部问题(unix)

Martin Hope
Mihir
Asked: 2025-04-17 07:36:15 +0800 CST

在 Bash 中合并两个 YAML 文件的值

  • 7

bash 命令:

$(System.DefaultWorkingDirectory)/yq_linux_amd64 '. *= load("${{ parameters.HELM_CHART_PATH }}/values/DEV/${{ parameters.COMPONENT }}.yaml")' ${{ parameters.HELM_CHART_PATH }}/values/global-values.yaml > $(System.DefaultWorkingDirectory)/deployment-values.yaml

正在合并两个 YAML 文件中的值,并将合并后的输出发送到单个文件。我无法理解从第一个单引号到输出重定向的语法。有人能帮我理解一下这是什么意思吗?

为什么两个操作数都在运算符后面,也就是*=?.是当前目录,但是 ? 之前是什么意思呢*=?

另外,为什么只有第一个操作数介于之间load (),其含义是什么?

bash
  • 2 个回答
  • 94 Views
Martin Hope
Liric Ramer
Asked: 2025-04-16 21:59:49 +0800 CST

使用用户命名空间将两个用户映射到主机

  • 7

我想了解是否可以将用户命名空间中的两个用户映射到主机上的两个不同用户。

目标是在rootfs(ubuntu 基础,因为我正在尝试从头开始构建一个容器)内复制我在主机上拥有的相同权限。

例如:

  • 之下的一切/都应属于root。
  • /home/user应该属于常规的user。

为了实现这一点,我考虑在用户命名空间中使用 UID 映射,如下所示:

UID in user namespace      ---> UID on host
      1000 (admin)         ->       0 (root)
      1001 (bob)           ->    1001 (bob)

这种映射可能吗?

以下是我已经尝试过的方法:

  • 运行echo -e "1000 0 1\n1001 1001 1" > /proc/[PID]/uid_map以定义映射,但出现错误。
  • 尝试为每个用户手动修改/proc/[PID]/uid_map使用。newuidmap

但是,我从来无法映射多个用户,而且我似乎根本无法映射 UID 0(根)。

更新:

我已阅读手册页并遵循其中提到的限制,但仍然收到错误消息。

例如:

# terminal 1

unshare --user bash
echo $$ # 11591
# terminal 2 as user 'alex' (uid = 1000)

newuidmap 11591 0 0 1
# newuidmap: uid range [0-1) -> [0-1) not allowed

newuidmap 11591 1001 1001 1
# newuidmap: uid range [1001-1002) -> [1001-1002) not allowed

即使使用 运行,这些命令也会失败sudo。

我也尝试映射到我声明的 subuid,但它仍然不起作用:

cat /etc/subuid

alex:100000:65536
root:200000:65536
self:300000:65536

cat /etc/subgid

alex:100000:65536
root:200000:65536
self:300000:65536
filesystems
  • 1 个回答
  • 67 Views
Martin Hope
Isidro Arias
Asked: 2025-04-16 18:02:44 +0800 CST

为什么 `tail -c 4097 /dev/zero` 会立即退出而不是阻塞?

  • 14

我观察到,在 Ubuntu 24.04.2coreutils版本上9.4-3ubuntu6运行:

$ tail -c 4097 /dev/zero
$ echo $?
0

立即退出,状态码为 0。我预计该命令将无限期阻塞,因为 /dev/zero 是一个无休止的流。

相反,以下命令的行为符合预期(即,它们会阻塞直到被中断):

$ tail -c 4096 /dev/zero
^C
$ echo $?
130
$ cat /dev/zero | tail -c 4097
^C
$ echo $?
130

调试尝试

strace 输出显示了两次调用之间的差异:

strace tail -c 4096 /dev/zero strace tail -c 4097 /dev/zero
… …
关闭(3)= 0 关闭(3)= 0
openat(AT_FDCWD, “/dev/zero”, O_RDONLY) = 3 openat(AT_FDCWD, “/dev/zero”, O_RDONLY) = 3
fstat(3,{st_mode=S_IFCHR|0666,st_rdev=makedev(0x1, 0x5),…}) = 0 fstat(3,{st_mode=S_IFCHR|0666,st_rdev=makedev(0x1, 0x5),…}) = 0
lseek(3,-4096,SEEK_END) = 0 lseek(3,-4097,SEEK_END) = 0
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 读取(3,“\0\0\0\0\0\0\0\0\0\0\…,4097)= 4097
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 fstat(1,{st_mode=S_IFIFO|0600,st_size=0,…}) = 0
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 写入(1,“\0\0\0\0\0\0\0\0\0\0\…,4096
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 关闭(3)= 0
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 写入(1,“\0”,1)= 1
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 关闭(1)= 0
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 关闭(2)= 0
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 退出组(0)=?
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192 ~~+~~ 以 0 退出 ~~+~~
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192
读取(3,“\0\0\0\0\0\0\0\0\0\00”…,8192)= 8192
…
linux
  • 1 个回答
  • 211 Views
Martin Hope
BrandonStudio
Asked: 2025-04-16 12:26:14 +0800 CST

btrfs:无法识别的挂载选项“errors=continue”

  • 5

btrfs 不支持吗errors=continue?

dmesg日志

mount
  • 1 个回答
  • 27 Views
Martin Hope
SuperAl
Asked: 2025-04-16 06:11:11 +0800 CST

当类型设置为 MX 时,nslookup 超时

  • 5

为了从 PHP 网站向自己发送 2FA 电子邮件,我设置了 MX 记录覆盖并创建了允许访问目标域的邮件服务器的防火墙规则,但是当我尝试发送时,sendmail在其日志中写入电子邮件已被接受但从未发送。

为了测试 DNS 名称解析,我运行nslookup并输入type=MX命令,但它总是打印:

;; communications error to 10.0.0.1#53: timed out
;; communications error to 10.0.0.1#53: timed out
;; communications error to 10.0.0.1#53: timed out
;; no servers could be reached

当我ping、telnet或curl等操作时,该 DNS 服务器的名称解析工作正常。例如,它可以从 Debian 仓库安装软件包。

sendmail从我所能吸收的关于 的少量信息来看,听起来它需要传递到 的只是一个指向 的[email protected]MX 记录。如果我错了,请纠正我。所有这些项目似乎都已到位:在我的 DNS 服务器上有一个 MX 记录;它指向也有一个 A 记录;我正在发送到;有一条防火墙规则允许带有的 Linux 计算机使用 DNS 服务器解析名称;有一条防火墙规则允许带有的 Linux 计算机向 发送电子邮件。所有这些都存在于我的 LAN 中,不需要访问外部 Internet。example.comsmtp.example.comexample.comsmtp.example.com[email protected]sendmailsendmailsmtp.example.com

在这种情况下我应该如何排除邮件发送故障?

编辑:

同时,我发现了失败的根本原因sendmail:它会在命令行上使用的电子邮件地址前面加上当前登录的用户名(不考虑su),即如果我的用户名是myusername,那么它会在第一次尝试和第二次尝试时更改me@mydomain为。myusername@me@mydomainmyusername@mydomain

缺少了一些东西sendmail.mc,但是它是什么呢?

debian
  • 1 个回答
  • 21 Views
Martin Hope
rdong8
Asked: 2025-04-15 16:19:59 +0800 CST

我的 GNOME 状态栏中瞬间出现的图标(灰色曲线上的点)是什么?

  • 14

GNOME 状态栏图标的屏幕截图

最左边的图标(thunderbolt-获取-symbolic.svg)就是有问题的图标。

具体来说,我有一对多点蓝牙耳机,同时连接到我的 iPhone 和 Linux 笔记本电脑。当我用手机听音乐时,即使我没有播放任何音频,也会定期看到这个图标出现在笔记本电脑上。这个图标通常会在几秒钟内消失,但我的音乐会暂时听不见(但手机上仍在播放)。然后就会恢复正常。

shell
  • 2 个回答
  • 1401 Views
Martin Hope
Stewart
Asked: 2025-04-15 15:34:48 +0800 CST

在原始文件上使用 dos 行尾应用 debian quilt 补丁

  • 6

我在一个源码包中有一个带有 DOS 风格行尾的文件*.orig.tar.xz,我需要在构建 Debian 软件包之前先给它打补丁3.0 (quilt)。我的补丁目前是 Unix 风格的行尾。

我们可以检查文件,发现补丁有 29 个 unix 风格的行尾,而源文件有 5000 个 dos 风格的行尾。

$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
       0      29       0  no_bom    text    debian/patches/model_icd
    5000       0       0  no_bom    text    CONFIG/model_config_file.txt

构建结果:

$ dpkg-buildpackage
...
 dpkg-source --before-build .
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying model_icd
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'model_icd' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: info: restoring quilt backup files for model_icd
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/model_icd/ --reject-file=- < debian/patches/model_icd subprocess returned exit status 1
dpkg-buildpackage: error: dpkg-source --before-build . subprocess returned exit status 2

我尝试过的事情:

首先,我只是修改了我的补丁,使用 dos 风格的行尾,但 quilt 删除了它,我得到了相同的结果

$ unix2dos debian/patches/model_icd
$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
      29       0       0  no_bom    text    debian/patches/model_icd
    5000       0       0  no_bom    text    CONFIG/model_config_file.txt
$ dpkg-buildpackage
...
dpkg-source: info: applying model_icd
(Stripping trailing CRs from patch; use --binary to disable.)
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
...

如果我直接测试quilt,我可以让它与该选项一起工作--binary:

$ quilt push -a --binary
Applying patch model_icd
patching file CONFIG/model_config_file.txt

Now at patch model_icd

为了让它更自动地工作,我尝试设置QUILT_PATCH_OPTS=:

$ QUILT_PATCH_OPTS="--binary" quilt push -a
Applying patch model_icd
patching file CONFIG/model_config_file.txt

Now at patch model_icd

接下来,我尝试将其设置为debian/rules:

export QUILT_PATCH_OPTS="--binary"
%:
        dh $@

但这不会被直接dpkg-source使用patch,而不是quilt

接下来,我尝试通过在文件中设置此标志来欺骗它patches/series。 dpkg-source(1)建议不要这样做,这表明这是可能的。

# debian/patches/series
model_icd --binary

但这仍然不起作用。

我尝试寻找source/options一些东西,并且我一直在阅读维护者指南,但我没有在任何地方看到这方面的内容。

debian
  • 1 个回答
  • 25 Views
Martin Hope
jsx97
Asked: 2025-04-15 04:03:18 +0800 CST

为什么我的 UTF-8 文件名总是与 Perl 中的正则表达式括号表达式匹配?

  • 9

这是一个脚本,用于修复文件从 Windows 移动到 Mac 时损坏的西里尔文文件名(基于对使用不同编码后文件名被乱码后的恢复文件名的回答)

#!/bin/zsh

# Usage: <script> <target directory>
# Requires Perl::Rename

find "$1" -mindepth 1 -print0 |
  rename -0 -d -e '
    use Unicode::Normalize qw(NFC);
    use Encode qw(:all);

    if ($_ =~ /[†°Ґ£§•¶І®©™Ђђ≠]/) {
      my $check = DIE_ON_ERR | LEAVE_SRC;
      my $new = eval {encode("UTF-8",
                      decode("cp866",
                      encode("mac-cyrillic",
                      NFC(decode("UTF-8", $_, $check)), $check), $check))
                     };
      if ($new) {$_ = $new;} else {warn $@;}
    }'

我希望它仅重命名目标目录中文件名中至少包含以下字符之一的文件:†°Ґ£§•¶І®©™Ђђ≠。但由于某种原因,脚本会重命名那里的所有文件:例如,正确的文件名срочно.txt更改为无意义的ёЁюўэю.txt。我做错了什么?

我的测试文件夹的路径很简单/Users/john/scripts/test:没有空格,也没有西里尔字母或特殊字符。

该脚本在 macOS 和 BSD 版本上使用find。

问题得到解答两天后的更新:Stéphane 的 Chazelas 和 Choroba 的版本对我来说很好用。Terdon 的版本对我来说还不行。

perl
  • 4 个回答
  • 1238 Views
Martin Hope
arslivinski
Asked: 2025-04-14 23:41:35 +0800 CST

使用物理按钮进行身份验证

  • 6

我身边有一台 Raspberry PI Pico,我正在考虑创建一个设备,当我需要在 Linux 上验证自己的身份时,我只需单击焊接到 Pico 上的按钮,它就会向计算机发送一条消息来验证自己的身份。

该设备将连接到安全的计算机,所以没有问题。

问题是,我该怎么做?我没有 Linux 编程经验,所以不知道有没有现成的服务或库可以实现这个功能。我知道 YubiKey 有带按钮的设备可以实现类似的功能,但我也看到过它们需要网络连接才能工作,这显然不行。

linux
  • 3 个回答
  • 62 Views
Martin Hope
drjeep
Asked: 2025-04-14 23:10:21 +0800 CST

繁忙的 SFTP 服务器上的 systemd-logind 和 d-bus 问题

  • 6

我们最近将运行的大容量 CentOS 7 SFTP 服务器升级openssh/internal-sftp到 Rocky Linux 8。

然而,升级后,服务器运行1-2小时后,我们遇到了登录超时的问题。这似乎与打开的SFTP会话和/或systemd --user进程数量有关。

1-2 小时后,新的 SFTP 登录变得非常慢,我们开始在日志中看到这些消息

Apr 14 12:16:58 sftp sshd[330585]: pam_systemd(sshd:session): Failed to create session: Connection timed out

有时,如果足够多的 SFTP 会话关闭得足够快,问题就会解决,但更多时候我们必须重新启动服务器才能恢复正常服务。

是否建议禁用它systemd-logind,因为 SSH 似乎不需要它?

更新
不确定这是否相关,但systemctl list-units --state=abandoned返回了 100 个被放弃的会话。

更新 2
禁用后pam_systemd.so系统恢复正常运行。这实际上禁用了systemd-logindSSH 会话。

系统负载减少 80% 表明使用时性能会受到巨大损失systemd-logind。

这正常吗?!

linux
  • 1 个回答
  • 36 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