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-2972

Ole Tange's questions

Martin Hope
Ole Tange
Asked: 2024-12-30 03:53:08 +0800 CST

为什么我不能拦截`seq`中的`write`?

  • 7

根据限制文件 IO 速度,我构建了https://git.data.coop/tange/tangetools/src/branch/master/iothrottle

它适用于某些程序:

iothrottle -i 10M cat foo > bar # Yes, here you could just use pv
iothrottle -o 1M ffmpeg -i foo.mp3 foo.wav
iothrottle -o 1M cp -a foodir /other/fs/foodir

这不会:

iothrottle -o 1M cp -a foodir /same/fs/foodir

因为在同一个文件系统上每个文件cp使用一次调用copy_file_range。

我可以接受这个限制。

它对 也不起作用seq。当我运行时,strace seq 100000我得到:

write(1, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14"..., 8192) = 8192
write(1, "\n1861\n1862\n1863\n1864\n1865\n1866\n1"..., 4096) = 4096
write(1, "2680\n2681\n2682\n2683\n2684\n2685\n26"..., 4096) = 4096
write(1, "499\n3500\n3501\n3502\n3503\n3504\n350"..., 4096) = 4096
write(1, "18\n4319\n4320\n4321\n4322\n4323\n4324"..., 4096) = 4096
write(1, "7\n5138\n5139\n5140\n5141\n5142\n5143\n"..., 4096) = 4096
write(1, "\n5957\n5958\n5959\n5960\n5961\n5962\n5"..., 4096) = 4096
write(1, "6776\n6777\n6778\n6779\n6780\n6781\n67"..., 4096) = 4096
write(1, "595\n7596\n7597\n7598\n7599\n7600\n760"..., 4096) = 4096
write(1, "14\n8415\n8416\n8417\n8418\n8419\n8420"..., 4096) = 4096
write(1, "3\n9234\n9235\n9236\n9237\n9238\n9239\n"..., 3838) = 3838

因此它似乎在调用write(而不是某些mmap或其他魔法),因此应该起作用。

但是当我运行时:IOTHROTTLE_DEBUG=1 iothrottle -o 1M seq 10000 >/dev/null我得到:

init called: default read_limit=0, write_limit=0
IOTHROTTLE_READ=0
IOTHROTTLE_WRITE=1048576
Final read_limit=0, write_limit=1048576
allowed: 608 written: 0
allowed: 617 written: 0

这告诉我iothrottle仅拦截了 2 次调用write。

我错过了什么?

shared-library
  • 1 个回答
  • 38 Views
Martin Hope
Ole Tange
Asked: 2024-10-08 05:18:04 +0800 CST

限制文件 IO 速度

  • 17

我正在寻找类似于ionice和trickle和pv -L和tc- 的命令,但它对文件的 IO 进行了限制。

ionice查看本地机器上的块设备。我希望它能用于一般的文件 I/O。如果它不适用于 NFS 上安装的 encfs,那么它对我来说就毫无用处了。

trickle塑造网络 I/O - 而不是文件系统 I/O。因此,如果我的程序访问 encfs 上的文件,它将不知道该文件是安装在 NFS 还是本地目录上。

tc类似于trickle:它塑造网络 I/O - 而不是文件系统 I/O。

pv -L仅适用于管道。我需要它对程序打开的所有文件起作用。想想 Firefox:它以多个线程打开文件进行读写。

我想要这个:

thecommand --read 5M --write 1M firefox

限制firefox以 5 MB/s 的速度读取文件并以 1 MB/s 的速度写入文件。

firefox只是一个例子:我希望它适用于任何打开不同文件进行读写的程序。

我希望无论是firefox访问本地文件还是 NFS/tmpfs/encfs/SSHFS/RandomFS 上的文件,限制都能起作用。

如果它只对动态链接程序起作用则是可以的(即,如果它执行一些 LD_PRELOAD 魔法则是可以的)。

有这样的野兽吗?

nfs
  • 4 个回答
  • 1277 Views
Martin Hope
Ole Tange
Asked: 2024-06-16 19:09:16 +0800 CST

从 USB 启动 - 重定向至 SSD

  • 5

我使用 Ubuntu 24.04 重新安装了旧的 HP ProBook 6460b。

它不再在 SSD 上启动(同一问题https://askubuntu.com/questions/1490970/my-hp-does-not-boot-after-fresh-ubuntu-22-04-install)。

这不是 BIOS 启动顺序问题:硬盘在 USB 之后立即列出,并且之前可以正常工作。因此,Ubuntu 安装过程中的某些问题导致了此问题。

如果我将磁盘移至 USB 适配器电缆,那么我就可以从 SSD 正常启动。

因此只要通过 USB,机器就可以从磁盘正常启动。

我如何构建一个具有足够信息以将启动过程引导至 SSD 的微型 USB 磁盘?(按老话说,我考虑的是根设备 = 内部 SSD /dev/sda 的 GRUB)。

HP 6460b 已对 UEFI 进行了实验性支持。无论启用还是禁用 UEFI,都可以从 USB 启动。

boot
  • 1 个回答
  • 49 Views
Martin Hope
Ole Tange
Asked: 2024-04-26 01:47:57 +0800 CST

Turris Omnia(结解析器):t.co 无法解析。twitter.com 确实如此

  • 4

我的 Turris Omnia 无法解析 t.co,但与其他域(例如 twitter.com 或 x.co)没有问题。本地名称 (hpdisk.lan) 也可以使用:

root@turris:~# ping t.co
ping: t.co: Name does not resolve

root@turris:~# ping twitter.com
PING twitter.com (104.244.42.193) 56(84) bytes of data.
64 bytes from 104.244.42.193 (104.244.42.193): icmp_seq=1 ttl=58 time=11.5 ms

tange@turris:~$ ping x.co
PING x.co (148.72.51.157) 56(84) bytes of data.
64 bytes from 157.51.72.148.host.secureserver.net (148.72.51.157): icmp_seq=1 ttl=42 time=139 ms

tange@turris:~$ ping hpdisk.lan
PING hpdisk.lan (192.168.1.30) 56(84) bytes of data.
64 bytes from 192.168.1.30 (192.168.1.30): icmp_seq=1 ttl=64 time=0.374 ms

路由器查询身份验证名称服务器没有问题,因此不是由某些网络过滤或路由问题引起的:

root@turris:/tmp/log# dig @a.r06.twtrdns.net. t.co

; <<>> DiG 9.18.24 <<>> @a.r06.twtrdns.net. t.co
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13597
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;t.co.                          IN      A

;; ANSWER SECTION:
t.co.                   300     IN      A       104.244.42.197

查找 u.co 会导致此流量(与 [as,uz].co 非常相似):

14:36:00.469554 IP 100.100.246.190.51757 > 156.154.105.25.53: 20216% [1au] A? U.CO. (33)
14:36:00.484396 IP 156.154.105.25.53 > 100.100.246.190.51757: 20216- 0/6/1 (639)
14:36:00.485495 IP 100.100.246.190.55245 > 193.108.91.245.53: 25634% [1au] A? Ns50.DoMAInCoNtROL.COm. (51)
14:36:00.500380 IP 193.108.91.245.53 > 100.100.246.190.55245: 25634*- 1/0/1 A 173.201.72.25 (67)
14:36:00.500659 IP 100.100.246.190.60650 > 173.201.72.25.53: 49104% [1au] A? U.Co. (33)
14:36:00.513975 IP 173.201.72.25.53 > 100.100.246.190.60650: 49104*- 2/2/1 A 15.197.142.173, A 3.33.152.147 (120)

查找 t.co 不会导致任何流量。闻起来好像 Knot Resolver 认为它是 t.co 的授权

我已尝试重新启动路由器。这并没有解决问题。

root@turris:~# uname -a
Linux turris 5.15.148 #0 SMP Tue Apr 2 01:04:13 2024 armv7l GNU/Linux
root@turris:~# kresd --version
Knot Resolver, version 5.7.1
root@turris:~# netstat -anp |grep 0:53
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      18768/kresd
udp        0      0 0.0.0.0:53              0.0.0.0:*                           18768/kresd
tange@turris:~$ cat /etc/resolv.conf 
search lan
nameserver 127.0.0.1
nameserver ::1
root@turris:/tmp/log# cat /var/log/resolver 
Apr 27 11:52:30 turris kresd[8728]: [system] warning: hard limit for number of file-descriptors is only 4096 but recommended value is 524288
Apr 27 11:52:50 turris kresd[12702]: [system] warning: hard limit for number of file-descriptors is only 4096 but recommended value is 524288
dns
  • 1 个回答
  • 26 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
Ole Tange
Asked: 2023-04-02 00:10:46 +0800 CST

哪个进程在 KDE 中拦截 ALT-TAB?

  • 6

我经历过 KDE 突然停止响应 ALT-TAB(和 CTRL-F1/CTRL-F2)。

我必须重新启动哪个进程才能使其再次运行?

不关闭所有窗口是否可以完成?

我试过:

$ kquitapp5 plasm
"Application plasm could not be found using service org.kde.plasm and path /MainApplication."
$ kquitapp5 plasma-desktop
"Application plasma-desktop could not be found using service org.kde.plasma-desktop and path /MainApplication."
$ kquitapp5 plasmashell
"Application plasmashell could not be found using service org.kde.plasmashell and path /MainApplication."
$ plasmashell --replace &
kde
  • 1 个回答
  • 35 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
Ole Tange
Asked: 2023-02-27 03:47:24 +0800 CST

FreeBSD11:证书验证失败

  • 6

我的 FreeBSD 11 提供:

[root@freebsd11 ~]# pkg install perl
Updating FreeBSD repository catalogue...
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
pkg: https://pkg.freebsd.org/FreeBSD:11:amd64/latest/meta.txz: Authentication error
repository FreeBSD has no meta file, using default settings
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
pkg: https://pkg.freebsd.org/FreeBSD:11:amd64/latest/packagesite.pkg: Authentication error
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
pkg: https://pkg.freebsd.org/FreeBSD:11:amd64/latest/packagesite.txz: Authentication error
Unable to update repository FreeBSD
Error updating repositories!

我认为这是由过期的证书引起的,但我不知道如何修复它。

freebsd
  • 2 个回答
  • 39 Views
Martin Hope
Ole Tange
Asked: 2022-11-22 14:46:37 +0800 CST

调试段错误竞争条件

  • 9

我可以引发竞争条件,输出类似于以下内容dmesg:

[ 5432.541379] perl[408327]: segfault at 22 ip 0000564eb8af9cc2 sp 00007ffec318cea0 error 6 in perl[564eb8af7000+1a1000]
[ 5432.541402] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.541638] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660093] perl[408400]: segfault at 22 ip 00005654e7ec3cc2 sp 00007ffe47312cc0 error 6
[ 5432.660106] perl[408415]: segfault at 22 ip 000055b15d088cc2 sp 00007ffe67124210 error 6
[ 5432.660119]  in perl[5654e7ec1000+1a1000]
[ 5432.660131]  in perl[55b15d086000+1a1000]
[ 5432.660133] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.660142] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.660221] sleep[408436]: segfault at 0 ip 00007f18c67150b2 sp 00007ffdaf402820 error 4 in ld-linux-x86-64.so.2[7f18c66fa000+2a000]
[ 5432.660248] Code: 00 00 00 00 00 0f 1f 00 41 55 48 8d 05 50 1e 01 00 49 89 f5 49 89 c9 41 54 49 89 d4 48 89 c2 48 81 ec 18 04 00 00 85 ff 75 53 <41> 80 7d 00 00 48 8d 0d 2b 1e 01 00 4c 8d 05 d4 11 01 00 4c 0f 44
[ 5432.660417] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660480] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660543] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660593] perl[408406]: segfault at 22 ip 000055d5887c3cc2 sp 00007ffcf1af5220 error 6 in perl[55d5887c1000+1a1000]
[ 5432.660629] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.660888] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.661682] perl[408391]: segfault at 22 ip 00005645d25a8cc2 sp 00007ffc836eb8b0 error 6 in perl[5645d25a6000+1a1000]
[ 5432.661718] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.661969] Core dump to |/usr/share/apport/apport pipe failed
[ 5433.228271] perl[408513]: segfault at 22 ip 000055bc88f1bcc2 sp 00007ffc31bb1ab0 error 6 in perl[55bc88f19000+1a1000]
[ 5433.228302] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5433.306971] perl[408642]: segfault at 22 ip 000055e76e66dcc2 sp 00007ffd37469c20 error 6 in perl[55e76e66b000+1a1000]
[ 5433.306999] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5433.307203] Core dump to |/usr/share/apport/apport pipe failed
[ 5433.820922] perl[408816]: segfault at 20 ip 0000557b90fb3463 sp 00007ffcd78bb6f0 error 4 in perl[557b90f88000+1a1000]
[ 5433.820953] Code: 89 df e8 60 9a 0e 00 48 8b 83 e0 00 00 00 48 8b 40 10 48 8b 13 48 85 c0 0f 85 79 ff ff ff e8 44 fc 06 00 48 8b 83 e0 00 00 00 <83> 78 20 00 79 2d 83 7b 30 00 7f 1b 48 8b bb f8 02 00 00 48 83 3f
[ 5433.821219] Core dump to |/usr/share/apport/apport pipe failed

sleep(所有程序怎么会出现段错误?!)

我什至不时地经历过它会关闭机器上的其他程序。

不幸的是,生成竞争条件的程序非常大:(https://git.savannah.gnu.org/cgit/parallel.git/tree/testsuite/tests-to-run/parallel-local-30s.sh)和如果竞争条件不消失,我不能让它更小。

测试总共产生了 10000 多个通信进程+perl普通 shell程序(sleep、、、、、、、sort)。md5sumbashpastewc

我已经测试过这个问题可以在我的笔记本电脑和我的 512GB 服务器上重现(所以它不是由坏 RAM、过热或内存不足引起的)。

我如何对此进行调试并将其变成相关人员的体面错误报告?(谁是相关人员?如果两者都是段错误perl,sleep也许我们在内核中采用了竞争条件?或者在 bash 中?还是在 libc 中?)

编辑

我安装了 FreeBSD12 (Vagrant)。测试在 FreeBSD12 中完美运行。这让我觉得内核是罪魁祸首。也可能是 Vagrant 以某种方式使 FreeBSD12 不会失败。

笔记本电脑和服务器都运行 Ubuntu22.04,所以接下来尝试运行不同的内核。也许是 Debian 或 CentOS。如果 Ubuntu22.04 在 Vagrant 上失败,我也应该尝试。

适用于:FreeBSD12(Vagrant)、Centos8(Vagrant)、Ubuntu20.04(Vagrant)、Ubuntu22.04(laptop t)、Ubuntu22.10(Vagrant)。

失败:Ubuntu22.04(笔记本电脑 a,服务器 r)。

我可能已经找到了罪魁祸首:

echo 2 > /proc/sys/vm/overcommit_memory

如果我这样做:

echo 0 > /proc/sys/vm/overcommit_memory

服务器 r 上的竞争条件消失了。

但到底为什么会导致这些错误呢?

编辑

Marcus 建议这可能与内存分配有关,当我看到其他进程在运行期间死亡时,通常是“xmalloc:无法分配小字节数”。

我们如何检验这个理论是否正确?

linux
  • 1 个回答
  • 46 Views
Martin Hope
Ole Tange
Asked: 2022-07-06 23:14:12 +0800 CST

Firefox 在短时间内卸载标签 - 如何调整时间?

  • 0

我之前使用过插件 Dormancy,它会在标签空闲超过 X 分钟时卸载它。

我笔记本电脑上的 Firefox 会自动执行此操作 - 无需安装 Dormancy,这很好。但我找不到我在哪里调整时间(感觉像是 5 分钟,但我需要它更像 15)。

$ uname -a
Linux travel 5.15.0-39-lowlatency #42-Ubuntu SMP PREEMPT Fri Jun 10 12:00:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Firefox: 101.0.1 (64-bit)


firefox
  • 1 个回答
  • 80 Views
Martin Hope
Ole Tange
Asked: 2022-01-27 04:08:13 +0800 CST

ssh 在不被要求的情况下读取标准输入

  • 4

这些不做同样的事情:

$ seq 1000000 | (ssh localhost sleep 1; wc -l)
675173
$ seq 1000000 | (ssh localhost sleep 1 </dev/null; wc -l)
1000000

ssh阅读标准输入的理由是什么?

ssh pipe
  • 2 个回答
  • 508 Views
Martin Hope
Ole Tange
Asked: 2020-01-09 23:04:08 +0800 CST

为什么 CPU 调速器不遵守最大 CPU 速度限制?

  • 1

我跑了:

sudo parallel cpufreq-set -c {} -u 2000MHz ::: 0 1 2 3

然而,当我给 CPU 施加压力时,cpufreq-info返回:

analyzing CPU 2:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 2
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency: 4294.55 ms.
  hardware limits: 800 MHz - 2.90 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.29 GHz.

2.29 GHz 高于 2.00 GHz。所有内核都可以看到这种行为。

就好像它完全忽略了频率限制。

为什么会这样?有没有办法避免它发生?

$ uname -a
Linux travel 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ cat /proc/cpuinfo
processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
stepping        : 7
microcode       : 0x2f
cpu MHz         : 1792.712
cache size      : 3072 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 2
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 4585.01
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
cpu-frequency
  • 1 个回答
  • 407 Views
Martin Hope
Ole Tange
Asked: 2019-12-28 22:16:22 +0800 CST

读取 STDIN 超时

  • 1

我想阅读 STDIN,但最多 5 秒。之后,我想处理我到目前为止读过的数据。

select似乎正是为此而设计的:等到有输入或超时。

如果有输入,我应该只读取那个非阻塞的。

所以我认为这会起作用:

#!/usr/bin/perl -w

use strict;
use Fcntl;

open(my $in, "<&", "STDIN") or die;
my $buf = "";
my $readsize = 10;

# Make $in non-blocking
fcntl($in, &F_SETFL, fcntl($in, &F_GETFL, 0) | &O_NONBLOCK);
while(not eof($in)) {
    my $starttime = time();
    my $rin = my $win = my $ein = '';
    vec($rin, fileno($in),  1) = 1;
    while(time() < $starttime + 5 and length $buf < $readsize) {
        # Wait up to 5 seconds for input                                                               
        select($rin, $win, $ein, $starttime + 5 - time());
        # Read everything that is available in the inputbuffer                                         
        while(read($in,$buf,$readsize,length $buf)) {}
    }
    print "B:",$buf;
    $buf = "";
}

当运行时:

(echo block1;sleep 1; echo block1; sleep 6;echo block2)|
  perl nonblockstdin.pl 

块合并在一起。它们应该是两个块,因为块 2 会在 6 秒后开始。

我究竟做错了什么?

perl
  • 2 个回答
  • 1074 Views
Martin Hope
Ole Tange
Asked: 2019-07-11 21:28:53 +0800 CST

如何告诉 GNU Parallel 不要引用替换字符串

  • 3

GNU Parallel 默认引用替换字符串,这样它们就不会被 shell 扩展。但在某些情况下,您确实希望 shell 解释替换字符串。

例如

$ cat variables.txt
--var1 0.1 --var2 0.2
--var1 0.11 --var3 0.03

在这里,我希望 GNU Parallel 运行:

myprogram --var1 0.1 --var2 0.2
myprogram --var1 0.11 --var3 0.03

这是怎么做的?

如果只解释一些替换字符串,它是如何完成的:

例如

$ ls
My file1.txt
My file2.txt

我想要这个运行:

myprogram --var1 0.1 --var2 0.2 'My file1.txt'
myprogram --var1 0.11 --var3 0.03 'My file1.txt'
myprogram --var1 0.1 --var2 0.2 'My file2.txt'
myprogram --var1 0.11 --var3 0.03 'My file2.txt'
gnu-parallel quoting
  • 1 个回答
  • 750 Views
Martin Hope
Ole Tange
Asked: 2019-06-24 12:43:26 +0800 CST

为什么打开 /proc/cpuinfo 需要 17 毫秒?

  • 2

运行这个

strace -ff -tt perl -e 'open(A,"<","/proc/cpuinfo");'

给出了这个:

22:36:10.365187 openat(AT_FDCWD, "/proc/cpuinfo", O_RDONLY) = 3
22:36:10.382061 ioctl(3, TCGETS, 0x7fffb127ea50) = -1 ENOTTY (Inappropriate ioctl for device)

/proc/cpuinfo是一个内存文件,不需要访问慢速磁盘。为什么打开需要 17 毫秒?

我在空闲系统上测试了 10 次,时间非常一致。

$ uname -a
Linux hk 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
proc
  • 1 个回答
  • 219 Views
Martin Hope
Ole Tange
Asked: 2019-05-02 11:50:06 +0800 CST

ssh 配置以“预先设置”torsocks

  • 1

我可以通过以下方式联系我的电话:

torsocks ssh myphone

如果我有这个.ssh/config:

Host myphone
  User u0_a162
  Port 2222
  HostName umqkh75wp2chf5av5esqhtyzedmw4it76dvs7ild2rikbcek6eyqfsqd.onion

我可以以某种方式调整它,.ssh/config以便我可以简单地编写它并运行它:

ssh myphone

我可以以某种方式将其torsocks移入.ssh/config- 可能使用 ProxyCommand 或类似的吗?

ssh tor
  • 1 个回答
  • 199 Views
Martin Hope
Ole Tange
Asked: 2019-02-14 14:18:54 +0800 CST

解析域名的命令只给出 IP 地址/in-addr.arpa

  • 0

我目前这是返回主机的 IP 地址或返回 in-addr.arpa 记录:

host $1 |
  perl -pe 's/.* mail is .*//; s/\n//;s/.* has address //;s/.* domain name pointer //;s/.* not found: .*/'$1'/g';

是否有更授权的工具仅提供 IP 地址/in-addr.arpa 而没有其他输出?

dns
  • 1 个回答
  • 163 Views
Martin Hope
Ole Tange
Asked: 2018-11-23 00:42:11 +0800 CST

killall 仅用于此终端

  • 2

在调试时,我经常使用killall杀死一个进程。这确实是一个坏习惯,因为系统上可能有更多同名的进程在运行。

通常,我要杀死的进程是与killall开始时相同的父(或祖父)的后代。通常我想杀死在同一个终端或另一个选项卡(在 Konsole 中)中的终端启动的程序。

有没有办法告诉killall(或另一个杀手)将范围限制为从此终端启动的进程或同一(祖)父级的后代进程?

kill
  • 1 个回答
  • 424 Views
Martin Hope
Ole Tange
Asked: 2018-10-21 01:20:58 +0800 CST

kscreenlocker_greet:禁用 VLC 控件

  • 1

当锁定我的屏幕时,我得到了锁定屏幕上正在播放的视频的 VLC 控件。

我怎样才能禁用这些控件?

kde vlc
  • 1 个回答
  • 227 Views
Martin Hope
Ole Tange
Asked: 2018-06-11 13:36:08 +0800 CST

bash 中不再显示非 ascii 字符

  • 3

更新:这不是文件系统问题。

我以前可以输入:

$ echo kødpålæg

但现在 bash/zsh 将其更改为:

bash$ echo kddddddddplg
zsh$ echo k<c3><b8>dp<c3><a5>l<c3><a6>g

我可以毫无问题地运行cat并输入“kødpålæg”:

$ cat
kødpålæg
kødpålæg

这两者都适用于这种环境:

$ locale   
LANG=C
LANGUAGE=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

在这个:

$ locale 
LANG=da_DK.utf8
LANGUAGE=da_DK.utf8
LC_CTYPE="da_DK.utf8"
LC_NUMERIC="da_DK.utf8"
LC_TIME="da_DK.utf8"
LC_COLLATE="da_DK.utf8"
LC_MONETARY="da_DK.utf8"
LC_MESSAGES="da_DK.utf8"
LC_PAPER="da_DK.utf8"
LC_NAME="da_DK.utf8"
LC_ADDRESS="da_DK.utf8"
LC_TELEPHONE="da_DK.utf8"
LC_MEASUREMENT="da_DK.utf8"
LC_IDENTIFICATION="da_DK.utf8"
LC_ALL=da_DK.utf8

csh不会改变“kødpålæg”。

如何恢复旧行为,以便输入“kødpålæg”?

运行其中任何一个都会产生旧的行为:

LC_ALL=en_GB.utf-8 luit
LC_ALL=da_DK.utf-8 luit
LC_ALL=en_GB.iso88591 luit
LC_ALL=da_DK.iso88591 luit

但仅限于那一次会议。

这个:

$ od -An -vtx1
ø

给出:

 c3 b8 0a

因此,从 Konsole 到 bash 的输入似乎是 UTF8。

$ konsole --version
QCoreApplication::arguments: Please instantiate the QApplication object first
Qt: 5.5.1
KDE Frameworks: 5.18.0
Konsole: 15.12.3

$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ zsh --version
zsh 5.1.1 (x86_64-ubuntu-linux-gnu)

$ dpkg -l csh
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version       Architecture  Description
+++-=================-=============-=============-========================================
ii  csh               20110502-2.1u amd64         Shell with C-like syntax
bash locale
  • 2 个回答
  • 1864 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