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
    • 最新
    • 标签
主页 / user-152418

ChennyStar's questions

Martin Hope
ChennyStar
Asked: 2024-03-17 18:25:20 +0800 CST

为什么 7-zip 比 Linux 中的其他 LZMA 实现快得多?

  • 6

到目前为止,我曾经使用tarLZMA 压缩选项之一(--lzma、--xz或--lzip)来备份数据

我最近注意到 7-Zip 已于 2021 年移植到 Linux(https://www.xda-developers.com/7-zip-linux-official-release/)。我不是在谈论旧的 P7Zip ( https://p7zip.sourceforge.net/ ),它似乎不再被维护,而是在谈论官方的 7-Zip。

因此,我对其进行了测试,并且非常惊讶地发现,对于相同的压缩比,它比所有其他 Linux LZMA 实现要快得多。

以下是我的测试(Debian 11)。请注意,我在每次测试之间清空了 RAM 缓存 ( sync && echo 3 > /proc/sys/vm/drop_caches)

我正在处理一个163M的文件夹,包含几种类型的文件,PDF,文本,开放办公室等等......

$ du -hs TEST/
163M    TEST/

使用 7-Zip,它可以在 15 秒内压缩成 127M 的文件:

$ time tar c -hp TEST/ | 7zz a -si test.tar.7z
real    0m14,565s
(...)

$ ll test.tar.7z
(...) 127M (...) test.tar.7z

而对于 LZMA 的所有其他实现,对于相同的存档大小,它花费的时间几乎是 5 倍(大约 1'13")!

$ time tar -chp --lzma -f test.tar.lzma TEST/
real    1m13,159s

$ time tar -chp --xz -f test.tar.xz TEST/
real    1m12,889s

$ time tar -chp --lzip -f test.tar.lz TEST/
real    1m12,525s

$ ll test.tar.{7z,lz*,xz}
(...) 127M (...) test.tar.7z
(...) 127M (...) test.tar.lz
(...) 127M (...) test.tar.lzma
(...) 127M (...) test.tar.xz

为了确保 没有任何问题tar,我做了相同的测试,但tar将 的输出通过管道传输到lzma|xz|lzip, 而不是使用--lzma,--xz和--lzip开关。结果相同。

所以,基本上,7-Zip 的 Linux 版本让所有其他 LZMA 实现看起来相当黯淡。我认为 7-Zip 不支持 Linux 所有者和权限,但这在压缩文件时无关紧要.tar。

那么,有人知道为什么 7-Zip 的 Linux 版本比其他 LZMA 实现快得多吗?

performance
  • 2 个回答
  • 131 Views
Martin Hope
ChennyStar
Asked: 2024-03-16 21:35:13 +0800 CST

是否可以从 gpg 中 grep 这个输出

  • 9

采取以下命令(真实示例):

~$ gpg --edit-key [email protected] showpref quit
(...)
[ultimate] (1). Foo Bar <[email protected]>
     Cipher: AES256, AES192, AES, CAST5, 3DES
     AEAD: 
     Digest: SHA256, SHA1, SHA384, SHA512, SHA224
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
     Features: MDC, AEAD, Keyserver no-modify
     Preferred keyserver: ldap://keyserver.pgp.com
~$

将输出通过管道输送到 a 中| grep不起作用:

~$ gpg --edit-key [email protected] showpref quit | grep Compression
(...)
[ultimate] (1). Foo Bar <[email protected]>
     Cipher: AES256, AES192, AES, CAST5, 3DES
     AEAD: 
     Digest: SHA256, SHA1, SHA384, SHA512, SHA224
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
     Features: MDC, AEAD, Keyserver no-modify
     Preferred keyserver: ldap://keyserver.pgp.com
~$

有办法让它发挥作用吗?例如,我想得到的结果是:

~$ gpg --edit-key [email protected] showpref quit | grep Compression
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
~$

[编辑:到目前为止我尝试过的]:

@steeldriver,@RomeoNinov:我认为重定向不会stderr解决问题。gpg看起来 的输出并没有转到stderr.

基本上,gpg是一个交互式命令,但启动gpg ... cmd1 cmd2使其成为非交互式命令(例如,与在's shell中gpg ... showpref quit交互式执行相同)。showprefquitgpg

@钢铁司机:

~$ gpg --edit-key [email protected] showpref quit 2> >(grep Compression)
(...)
[ultimate] (1). Foo Bar <[email protected]>
     Cipher: AES256, AES192, AES, CAST5, 3DES
     AEAD: 
     Digest: SHA256, SHA1, SHA384, SHA512, SHA224
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
     Features: MDC, AEAD, Keyserver no-modify
     Preferred keyserver: ldap://keyserver.pgp.com
~$

@罗密欧尼诺夫:

~$ gpg --edit-key [email protected] showpref quit 2>&1| grep Compression
(...)
[ultimate] (1). Foo Bar <[email protected]>
     Cipher: AES256, AES192, AES, CAST5, 3DES
     AEAD: 
     Digest: SHA256, SHA1, SHA384, SHA512, SHA224
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
     Features: MDC, AEAD, Keyserver no-modify
     Preferred keyserver: ldap://keyserver.pgp.com
~$
grep
  • 1 个回答
  • 188 Views
Martin Hope
ChennyStar
Asked: 2024-02-23 13:36:51 +0800 CST

GRUB 2.12 现在支持分离标头吗?

  • 6

在FOSDEM 2022 上的 GRUB 项目状态更新中,他们讨论了在 GRUB 2.12 中添加分离标头支持(用于解密):

添加加密磁盘分离标头和密钥文件支持,Denis 'GNUtoo' Carikli、Glenn Washburn、Patrick Steinhardt

GRUB 2.12 于 2023 年 12 月发布,但我在其NEWS文件中找不到任何提及该功能的内容。

有谁知道 2.12 现在是否支持分离标头(如最初计划的那样)?

grub
  • 2 个回答
  • 36 Views
Martin Hope
ChennyStar
Asked: 2024-02-19 18:42:39 +0800 CST

对于 RAM 使用(存在交换),应用程序是否优先于 tmpfs?

  • 5

太长了;如果 /tmp 作为 tmpfs 挂载,在存在交换的情况下,交换时是否有任何优先级?tmpfs 是否在应用程序之前开始交换?

全文

我有一台 32G RAM (Debian) 和 32G 交换空间的笔记本电脑。我打算用 tmpfs 挂载 /tmp。

但我担心系统需要交换时的行为:首先交换什么?我猜(并且我希望)应用程序的 RAM 使用优先级高于 tmpfs(例如,我猜 tmpfs 将首先交换)。但我找不到任何证实这一点的信息。

更广泛地说,是否存在将 /tmp 安装为 tmpfs 会降低系统速度的情况?

swap
  • 1 个回答
  • 22 Views
Martin Hope
ChennyStar
Asked: 2024-01-12 13:56:06 +0800 CST

EXT4 对于非常大(>1GB)的文件:增加块大小,使用块簇,或两者兼而有之?

  • 7

我想使用 EXT4格式化 12 TB HDD(不是 SSD) ,以存储大型视频文件(每个文件大小至少为 1 GiB)。

我正在使用 x86-64(又名 x64 或 amd64)处理器。

当然可以选择-T largefile4,mkfs.ext4但是还有其他可以进行的优化吗?

我特别想知道:

  • 我应该将块大小增加到最大值(64K,-b 65536)吗?
  • 或者我应该使用块簇,并将簇大小设置为其最大值(256M,-C 268 435 456)
  • 或者我应该两者都做?

就磁盘空间和性能优化而言,最佳参数是什么?

ext4
  • 3 个回答
  • 93 Views
Martin Hope
ChennyStar
Asked: 2024-01-08 17:23:08 +0800 CST

启用 EXT4 的“内联数据”功能有缺点吗?

  • 8

我刚刚读到了EXT4 中的“内联数据”功能,更具体地说是关于如何启用它的答案。

EXT4 中默认未启用此功能的原因是什么?我想这是为了让 FS 与旧内核兼容,但旧内核还不支持此功能。还有其他原因吗?

如果我知道我永远不会使用较旧的内核,那么在使用 EXT4 格式化分区时是否有任何理由不始终启用此功能?

ext4
  • 1 个回答
  • 83 Views
Martin Hope
ChennyStar
Asked: 2023-11-22 16:34:15 +0800 CST

从技术上讲,LUKS2 分离接头可以用于多个驱动器吗?

  • 6

首先,我知道类似的问题已经得到回答。答案是肯定的,但我想要第二个意见,因为:

  • 该问题未指定是 LUKS1 还是 LUKS2
  • 我在维基百科上读到的一些内容让我产生了疑问。

所以,问题是:从技术上讲,LUKS2 分离接头可以用于多个驱动器吗?我知道从安全角度来看不建议这样做(请参阅前面提到的帖子的答案),但在这里我只对问题的技术方面感兴趣。

让我产生疑问的是维基百科的声明,即 LUKS2 标头在其 JSON 区域中包含描述磁盘上加密区域的段。这意味着 LUKS2 标头绑定到特定驱动器,因此不能重新用于其他驱动器:

紧接着二进制头之后的是 JSON 区域,其中包含对象配置(配置)、键槽、摘要、段(描述磁盘上的加密区域)以及包含额外元数据的令牌。

所以你怎么看 ?同一 LUKS2 分离接头可以用于多个驱动器吗?几个相同的驱动器和几个完全不同的驱动器(例如,HDD 和 USB 记忆棒)之间是否可能存在差异?

luks
  • 1 个回答
  • 36 Views
Martin Hope
ChennyStar
Asked: 2023-11-14 01:16:16 +0800 CST

将 HDD 的逻辑扇区大小设置为 4Kn 有什么好处吗?

  • 6

现代 HDD 都是“高级格式”的,例如默认情况下它们报告的逻辑/物理扇区大小为 512/4096。

默认情况下,大多数 Linux 格式化工具使用 4096 字节的块大小(至少这是 Debian/EXT4 上的默认值)。

直到今天,我还认为这是一种优化:Linux/EXT4 将 4K 数据块发送到 HDD,HDD 可以最佳地处理它们,即使其逻辑扇区大小为 512K。

但今天我读到了这篇最近(2021)的文章。该人做了一些 HDD 基准测试,以检查将 HDD 的逻辑扇区大小从 512e 切换到 4Kn 是否会提供更好的性能。他的结论是:

请记住:我的理论是文件系统使用 4k 块,并且所有内容都正确对齐,因此不应该有有意义的差异。

这成立吗?嗯,不。一点也不。(...) 使用 4kb 块...这里有一个非常大的差异。这是单线程基准测试,但在 4kb 块传输上,4k 扇区驱动器始终存在巨大领先优势。(...)

结论:使用 4k 扇区!
就我而言,这里的结论非常清楚。如果您拥有可以处理 4k 扇区的现代操作系统,并且您的驱动器支持以 512 字节或 4k 扇区运行,请在执行其他操作之前将驱动器转换为 4k 本机扇区。然后继续你的方式,让操作系统来处理它。

基本上,他的结论是,与开箱即用的 512e 相比,将 HDD 的逻辑扇区大小切换为 4Kn 后性能得到了相当大的改进:

在此输入图像描述

现在,需要注意的重要一点是:该特定基准测试是单线程的。他还做了一个 4 线程基准测试,结果显示 512e 和 4Kn 之间没有任何显着差异。

因此我的问题是:

  • 仅当您有在驱动器上读/写的单线程进程时,他的结论才成立。Linux有这样的单线程进程吗?
  • 因此,您是否建议将 HDD 的逻辑扇区大小设置为 4Kn ?
hard-disk
  • 2 个回答
  • 199 Views
Martin Hope
ChennyStar
Asked: 2023-11-12 19:07:26 +0800 CST

在EXT4中,“范围”和“块组”是同一件事吗?

  • 7

太长了;

在 EXT4 术语中,“块组”和“范围”是同一件事吗?

[编辑] 建议的“范围”功能在 Linux 的 ext4 文件系统中做什么?讨论并不能回答这个问题。虽然它清楚地解释了“范围”是什么,但它没有谈论“块组”,以及它是否是同一件事(它不是:请参阅下面的答案)。

细节

在这篇文章中,他们讨论了块组的结构:

块组

根据维基百科,范围是块的范围。

这两个概念是同一件事,只是使用不同的名称吗?

ext4
  • 1 个回答
  • 56 Views
Martin Hope
ChennyStar
Asked: 2023-10-25 22:55:01 +0800 CST

有效与真实用户 ID :为什么在我的示例中它不返回 root 作为有效 ID?

  • 8

我读了一些关于真实用户 ID 和有效用户 ID 之间的区别的文章。我以为我明白了,但我有一个疑问:根据我的理解,在下面的示例中,命令$ id -un应该返回root为有效用户,而不是jack:

$ sudo cp /usr/bin/bash /usr/bin/bashroot
$ sudo chmod u+s /usr/bin/bashroot
$ ls -l /usr/bin/bashroot 
-rwsr-xr-x 1 root root 1234376 oct.  25 15:42 /usr/bin/bashroot

$ bashroot

$ id -un
jack

$ id -unr
jack

bashroot已经 setuid 并属于root,所以根据我的理解我预计$ id -un会返回root,而不是jack。

我想念什么?

[编辑] 更具体地说,既然两者都有 setuid ,为什么/usr/bin/bashroot行为不像?/usr/bin/passwd

$ ls -l /usr/bin/passwd 
-rwsr-xr-x 1 root root 63960 févr.  7  2020 /usr/bin/passwd

$ ls -l /usr/bin/bashroot 
-rwsr-xr-x 1 root root 1234376 oct.  25 15:42 /usr/bin/bashroot

$ passwd
Changing password for jack.
Current password: 

然后,在另一个终端中:

$ bashroot

$ ps -a | grep passwd
1682362 pts/3    00:00:00 passwd
$ ps -eo pid,ruid,euid | grep 1682362
1682362  1000     0

$ ps -a | grep bashroot
1682405 pts/4    00:00:00 bashroot
$ ps -eo pid,ruid,euid | grep 1682405
1682405  1000  1000

的有效 UID 为passwd( root0),这是预期的。为什么有效 UID 是bashroot1000( jack) 而不是root?

[编辑2:操作系统]

$ cat /etc/debian_version 
11.6
$ uname -a
Linux d11work 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 (2022-12-13) x86_64 GNU/Linux
$ bash --version
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)

[EDIT3]参见斯蒂芬·基特的回答:

$ bashroot -p

# id -un
root

# id -unr
jack 
root
  • 1 个回答
  • 369 Views
Martin Hope
ChennyStar
Asked: 2023-09-13 21:15:18 +0800 CST

I/O 错误,但运行 badblocks 后一切又恢复正常:这怎么可能?

  • 7

太长了;

硬盘似乎已损坏。无法格式化分区(mkfs.ext4I/O 错误),即使使用新创建的 GPT 表也是如此。SMART 测试显示一些错误。我正想把光盘扔掉。在此之前,出于好奇,我进行了全面的badblocks测试。大惊喜:它没有检测到任何坏块!回到GParted,创建了一个GPT表+几个分区。现在一切正常!做了什么badblocks?

完整的故事

我试图弄清楚刚刚发生的事情:我正打算扔掉 HDD,因为我无法在其上创建分区,并且 SMART 显示了一些错误。在扔掉磁盘之前,我只是想玩一下badblocks,然后...大惊喜:badblocks似乎已经修复了我的磁盘!我什至不知道它可以做到这一点!所以我现在很高兴,我确实可以使用我的磁盘,它工作正常,但我仍在试图弄清楚刚刚发生了什么!

这是我已经好几年没用过的 4TB 希捷硬盘了。我将其插入 SATA ↔ USB 适配器(适配器工作正常,我将它与其他几个 HDD 一起使用)。Wirh GParted 我创建了一个新的 GPT 分区表,然后创建了一个分区。无法进行到底,出现mkfs.ext4I/O 错误:

(...)
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: 0/895
mke2fs 1.46.2 (28-Feb-2021)
mkfs.ext4: Input/output error while writing out and closing file system

我尝试了几次,使用不同的 USB 适配器、不同的 USB 电缆、不同的 USB 端口。从来没有工作过。

然后我做了一个 SMART 简短测试:

# smartctl -t short -C /dev/sde
(...)

# smartctl -a /dev/sde
(...)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short captive       Completed: read failure       90%       528         191105024
(...)

显然硬盘似乎有缺陷,对吧?所以我本来打算扔掉它,但badblocks之前做了一个测试:

# badblocks -wvs -t random -b 4096 /dev/sde
Checking for bad blocks in read-write mode
From block 0 to 976754645
Testing with random pattern: done                                                 
Reading and comparing: done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

测试持续了大约19个小时(4TB磁盘),没有出现任何错误。我很惊讶 !

回到GParted,创建了一个新的GPT表,一些分区,一切都很顺利。

我最终做了一些我习惯做的复制测试,以检查磁盘的性能,一切看起来都很正常(复制大文件时为 155MB/s R/W)。

还做了另一个 SMART 简短测试,completed without error这次是:

# smartctl -t short -C /dev/sde
(...)

# smartctl -a /dev/sde
(...)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short captive       Completed without error       00%       549         -
# 2  Short captive       Completed: read failure       90%       528         191105024
(...)

有人能理解吗?就好像运行badblocks以某种方式修复了我的硬盘一样。这怎么可能?甚至应该badblocks这样做吗?

注意:如果需要,可以提供更多信息(完整的 SMART 输出和完整的 GParted 结果)

io
  • 1 个回答
  • 18 Views
Martin Hope
ChennyStar
Asked: 2023-03-21 21:42:06 +0800 CST

如何刷新似是而非的可否认性 dm-crypt 方案的诱饵数据?

  • 7

我刚刚阅读了Linus Torvalds 和(以及其他人)Milan Broz之间的讨论,他是 dm-crypt 的维护者之一。

我对讨论的以下部分很感兴趣:

Linus Torvalds:我认为那些使用隐藏(“可否认”)东西的人实际上根本没有使用过外部文件系统,正是为了让他们可以把真正加密的东西放在那里而不用担心它。

Milan Broz:好吧,他们实际上应该不时“使用”外部系统,这样数据看起来就“最近”了,对于整个“隐藏操作系统”,他们甚至应该能够根据要求启动到外部诱饵操作系统,只是为了表明一些东西工作在那里。

从理论上讲,我同意米兰的说法,使用诱饵数据是增加可信度的好事。但你如何在实践中实现这一点?例如,如何在不冒覆盖内部卷的风险的情况下写入外部卷?

多年来,我一直在使用隐藏的 LUKS 卷,结合可拆卸的标题和数据偏移量。通常我首先创建一个小的 LUKS 加密的外部卷(比如 20 GB),我用 EXT4 格式化它,用诱饵数据填充它,然后我增加这个外部卷的大小(例如 500 GB),然后我创建例如偏移量为 25GB 的内部卷。

在那之后我按照 Linus 所说的去做,我虔诚地避免接触外部卷的诱饵数据,因为害怕损坏内部卷的数据。

有没有办法刷新外部卷的数据,而不会有损坏内部卷数据的风险?例如,是否有一种工具可以专门在外卷的前 20 个 Gigs 上写入,确保不会弄乱后面的 480 gigs?

我同时使用 HDD 和 SSD,所以这个问题对两者都适用。

partition
  • 2 个回答
  • 53 Views
Martin Hope
ChennyStar
Asked: 2022-11-01 00:03:10 +0800 CST

shell脚本没有将空格作为参数分隔符(有人可以解释一下那个小文件的区别吗?)

  • 15

短版(TL;DR)

我有 2 个小的单行文件,看似相同:

$ cat f1 f2
./cconv.sh 100 EUR USD
./cconv.sh 100 EUR USD

但它们不是,大小有 1 个字节的差异:

$ ls -l f1 f2
(...) 24 oct.  30 16:19 f1
(...) 23 oct.  30 16:19 f2

$ diff f1 f2
1c1
< ./cconv.sh 100 EUR USD
---
> ./cconv.sh 100 EUR USD

我曾经dhex计算出十六进制的差异。看起来 :

  • f1完成c2 a0 55 53 44 0a
  • f2完成 20 55 53 44 0a

有人知道这里发生了什么吗?有什么区别,更重要的是,它来自哪里?这是包含 2 个文件的 zip 文件的链接,以及dhex结果的屏幕截图。

长版(附加说明)

这 2 个文件摘自我的~/.bash_history file.

我注意到我的贝壳有一种非常奇怪的行为。采用以下非常基本的脚本:

#!/bin/sh
echo $#
echo "$1"
echo "$2"
echo "$3"
exit 0

在某些情况下(但哪些 ???),它不会将空格作为参数分隔符:

$ ./cconv.sh 100 EUR USD
2
100
EUR USD

但有时它会按预期工作:

$ ./cconv.sh 100 EUR USD
3
100
EUR
USD

它让我发疯!我花了几个小时试图弄清楚发生了什么。以下是我为缩小范围所做的一些测试:

  • 我在一台装有 Debian 11、Gnome 3.38 的笔记本电脑上工作。但我碰巧也有一台操作系统完全相同的虚拟机(D11,G3.38),在虚拟机中一切正常。所以很明显,我一定是对我的裸机笔记本电脑做了一些事情,让它表现不佳。但是什么???
  • 我注意到这个问题只发生在图形会话中。如果我打开一个 tty (Ctrl+Alt+F n ),它工作正常
  • 我怀疑我的终端模拟器。但是在不同的模拟器中行为是相同的(我试过 Gnome Terminal、Terminator 和 Konsole,结果相同)
  • 我怀疑是贝壳。但是 Bash 或 Dash 的行为是相同的
  • 我禁用了我能想到的所有自定义:
    • 我暂时删除了/etc/bashrc, /etc/profile,/etc/inputrc和/etc/rc.local
    • 我暂时删除了~/.bashrc,~/.profile并且~/.inputrc
    • 我禁用了所有 Gnome Shell 的扩展
  • 我什至怀疑是键盘,并插入了 USB 键盘。结果相同。

我真的很困惑,不知道发生了什么。我终于注意到 2 个命令之间的细微差别~/.bash_history:一个来自我的 Gnome 会话,另一个来自我的 tty 会话。显然存在差异,但究竟是什么,可能是什么原因?

shell-script
  • 1 个回答
  • 807 Views
Martin Hope
ChennyStar
Asked: 2022-06-12 01:53:39 +0800 CST

为什么 X 应用程序在 ps 的结果中显示一个问号作为 TTY?

  • 3
$ ps -ef | head -n 1 && ps -ef | grep calc
UID          PID    PPID  C STIME TTY          TIME CMD
user1     524014    5382  0 10:21 ?        00:00:01 gnome-calculator
user1     532125  510665  0 10:36 pts/4    00:00:00 grep calc

我以为只有守护进程才有?TTY,但显然 Gnome Calculator 不是守护进程。我知道它在 TTY2 上运行,这是我的 Gnome 会话使用的 TTY。那么为什么ps结果会显示?在 TTY 列中呢?

[编辑]

我知道 Gnome Calculator 没有直接附加到 TTY,因为它是通过图形外壳(Gnome Shell)启动的。我认为通过上升进程树,我会得到一个附加到 TTY2 的进程,但事实并非如此:

$ ps -f | head -n 1 && ps -ef | grep calc
UID          PID    PPID  C STIME TTY          TIME CMD
user1     524014    5382  0 10:21 ?        00:00:01 gnome-calculator
user1     578611  552619  0 11:58 pts/5    00:00:00 grep calc

$ ps -f -p 5382
UID          PID    PPID  C STIME TTY          TIME CMD
user1       5382    5131  4 juin10 ?       00:42:26 /usr/bin/gnome-shell

$ ps -f -p 5131
UID          PID    PPID  C STIME TTY          TIME CMD
user1       5131       1  0 juin10 ?       00:00:00 /lib/systemd/systemd --user

$ echo $DISPLAY 
:1

TTY2 没有任何上游进程连接到 TTY2。但显然 Gnome Calculator 当前显示在 TTY2 上。是否有命令找出给定进程当前显示在哪个 TTY 上?(或者可能在哪个$DISPLAY)?

tty ps
  • 2 个回答
  • 135 Views
Martin Hope
ChennyStar
Asked: 2022-06-07 04:22:06 +0800 CST

如何在控制台和 X 会话之间复制/粘贴?

  • 13

在非图形控制台 (<Ctrl><Alt><F...>) 和 X 会话之间复制/粘贴的最快方法是什么?

马上 :

  • 我在控制台上用鼠标选择文本(我已经安装了 gpm)
  • 然后我将文本粘贴到一个临时文件中
  • 最后我切换到 x 会话,打开临时文件,然后复制/粘贴其内容

有没有更简单的方法来做到这一点?非 X 控制台和 X 会话的主要选择可以合并吗?理想情况下,我想在控制台中选择文本,然后切换到 X 会话并粘贴它(中键单击)。这可以做到吗?

tty x11
  • 4 个回答
  • 1295 Views
Martin Hope
ChennyStar
Asked: 2022-01-24 20:53:55 +0800 CST

Shell - 负文件通配

  • 2

在 Bash 中,要进行否定文件 globbing,我有以下 2 个选择。它们之间有区别吗?两者都返回相同的结果:

$ ls
f1.txt  f2.txt  f3.txt  f4.txt

$ ls f[!24]*
f1.txt  f3.txt

$ ls f[^24]*
f1.txt  f3.txt
bash shell
  • 1 个回答
  • 172 Views
Martin Hope
ChennyStar
Asked: 2022-01-21 23:06:51 +0800 CST

使用基本名称查找 -exec 命令选项 [重复]

  • 3
这个问题在这里已经有了答案:
在 find -exec 中使用 basename? (4 个回答)
9 个月前关闭。

我有以下 JPEG 文件:

$ ls -l
-rw-r--r-- 1 user group 384065 janv. 21 12:10 CamScanner 01-10-2022 14.54.jpg
-rw-r--r-- 1 user group 200892 janv. 10 14:55 CamScanner 01-10-2022 14.55.jpg
-rw-r--r-- 1 user group 283821 janv. 21 12:10 CamScanner 01-10-2022 14.56.jpg

我$ img2pdf用来将每个图像转换为 PDF 文件。要做到这一点 :

$ find . -type f -name "*.jpg" -exec img2pdf "{}" --output $(basename {} .jpg).pdf \;

结果 :

$ ls -l *.pdf
-rw-r--r-- 1 user group 385060 janv. 21 13:06 CamScanner 01-10-2022 14.54.jpg.pdf
-rw-r--r-- 1 user group 201887 janv. 21 13:06 CamScanner 01-10-2022 14.55.jpg.pdf
-rw-r--r-- 1 user group 284816 janv. 21 13:06 CamScanner 01-10-2022 14.56.jpg.pdf

如何删除.jpgPDF 文件名的一部分?即,我想要CamScanner 01-10-2022 14.54.pdf而不是CamScanner 01-10-2022 14.54.jpg.pdf。

单独使用,$ basename filename .extension打印不带扩展名的文件名,例如:

$ basename CamScanner\ 01-10-2022\ 14.54.jpg .jpg
CamScanner 01-10-2022 14.54

$ find但似乎语法在我的命令中不起作用。知道为什么吗?

注意:如果你替换$ img2pdf它$ echo是一样的,$ basename不要去掉.jpg部分:

$ find . -type f -name "*.jpg" -exec echo $(basename {} .jpg).pdf \;
./CamScanner 01-10-2022 14.56.jpg.pdf
./CamScanner 01-10-2022 14.55.jpg.pdf
./CamScanner 01-10-2022 14.54.jpg.pdf
find options
  • 3 个回答
  • 393 Views
Martin Hope
ChennyStar
Asked: 2022-01-07 05:52:38 +0800 CST

为什么 VPN 需要直接访问公共 IP 地址(而不是通过隧道)?

  • 0

我试图从 IP 方面了解 NordVPN 的工作原理。

建立 VPN 隧道后,我的公共 IP 地址变为:

$ dig +short myip.opendns.com @resolver1.opendns.com
138.199.16.59

并创建了以下新路线:

0.0.0.0/1 via 10.8.3.7 dev tun0 
128.0.0.0/1 via 10.8.3.7 dev tun0
10.8.3.0/24 dev tun0 proto kernel scope link src 10.8.3.7
138.199.16.57 via 192.168.1.1 dev wlp2s0

138.199.16.57 via 192.168.1.1 dev wlp2s0除了最后一个( )之外,我都明白。似乎 NordVPN 需要直接(例如,不通过隧道)138.199.16.57到达与我收到的公共 IP 相同范围的公共 IP 地址()(138.199.16.59)

这条路线的目的是什么?

routing ip
  • 2 个回答
  • 54 Views
Martin Hope
ChennyStar
Asked: 2021-10-17 07:05:49 +0800 CST

pcregrep(或 pcre2grep)是否具有与 grep 的 --max-count 选项等效的功能?

  • -2

获取以下文件:

aaa
bbb
XXX
ccc
ddd
eee
XXX
fff
ggg

我想打印所有行,pcregrep直到第一行包含XXX:

aaa
bbb
XXX

有可能(使用pcregrep或pcre2grep)吗?

我做到了:

$ pcre2grep -nM '(.|\n)*?XXX' file
1:aaa
bbb
XXX
4:ccc
ddd
eee
XXX

有没有办法在第一场比赛后退出?似乎pcre2grep没有像has那样的--max-count选项。grep

注意:我知道有更好的工具来获得所需的结果(sed等等),但我不是在这里寻找替代解决方案。我的问题是关于pcregrepor pcre2grep,我想知道是否有办法模仿grep的--max-count选项。

grep pcregrep
  • 1 个回答
  • 123 Views
Martin Hope
ChennyStar
Asked: 2021-09-14 01:54:21 +0800 CST

sed :以最后一次出现的模式结束范围(贪婪范围)

  • 9

获取以下文件:

$ cat f1
stu vwx yza
uvw xyz abc
abc def ghi
def ghi jkl
ghi jkl mno
jkl mno pqr
mno pqr stu
pqr stu vwx
stu vwx yza

要打印从第一个包含abc到第一个包含mnoGNU的所有行sed:

$ sed -n '/abc/,/mno/p' f1
uvw xyz abc
abc def ghi
def ghi jkl
ghi jkl mno

我怎样才能打印所有行,直到最后一个包含mno,例如我怎样才能得到以下结果:

uvw xyz abc
abc def ghi
def ghi jkl
ghi jkl mno
jkl mno pqr
mno pqr stu

换句话说,有没有办法让 GNUsed的范围选择变得贪婪?

更新

在我的设置中:

  • 如果mno丢失,它应该打印出所有内容,直到文件结束。
  • mno不能发生在第一个之前abc。
  • 总是至少有一个abc,并且abc永远mno不会在同一条线上

编辑 我只是在开头添加了一个虚拟stu vwx yza行,以便文件不以包含的行开头abc(以避免从第一行开始的解决方案 - 它们应该从其中包含的第一行开始abc)

awk text-processing
  • 9 个回答
  • 1092 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