今天我不得不从一个 800MB 的混合文本/二进制文件中删除前 1131 个字节,我正在为一个新的存储库进行过滤的颠覆转储。做到这一点的最佳方法是什么?
首先我试过
dd bs=1 skip=1131 if=filtered.dump of=trimmed.dump
Run Code Online (Sandbox Code Playgroud)
但是在跳过之后,它一次一个字节地复制文件的其余部分,即非常慢。最后我计算出我需要 405 个字节来将其四舍五入为三个 512 块,我可以跳过
dd if=/dev/zero of=405zeros bs=1 count=405
cat 405zeros filtered.dump | dd bs=512 skip=3 of=trimmed.dump
Run Code Online (Sandbox Code Playgroud)
哪个完成得相当快,但一定有更简单/更好的方法?有没有我忘记的另一个工具?
我正在测试一个 systemd 计时器并尝试覆盖其默认超时,但没有成功。我想知道是否有办法让 systemd 告诉我们接下来要运行该服务的时间。
普通文件 ( /lib/systemd/system/snapbackend.timer
):
# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.timer.html
[Unit]
Description=Run the snapbackend service once every 5 minutes.
[Timer]
# You must have an OnBootSec (or OnStartupSec) otherwise it does not auto-start
OnBootSec=5min
OnUnitActiveSec=5min
# The default accuracy is 1 minute. I'm not too sure that either way
# will affect us. I am thinking that since our computers will be
# permanently running, it probably won't be that inaccurate anyway.
# See also: …
Run Code Online (Sandbox Code Playgroud) 我需要知道具有给定 PID 的进程是否在不使用外部命令的情况下打开了一个端口。然后我必须使用/proc
文件系统。/proc/$PID/net/tcp
例如,我可以读取文件并获取有关进程打开的 TCP 端口的信息。但是,在多线程进程上,该/proc/$PID/task/$TID
目录还将包含一个net/tcp
文件。我的问题是:
我需要查看所有线程net/tcp
文件,还是将线程打开的端口写入进程net/tcp
文件。
我在 RAID 1 中有一个带有 3 个 SSD 驱动器的专用服务器。输出cat /proc/mdstat
:
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md4 : active raid1 sdc4[2] sdb4[1] sda4[0]
106738624 blocks [3/3] [UUU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md2 : active raid1 sdc2[2] sda2[0] sdb2[1]
5497792 blocks [3/3] [UUU]
md1 : active raid1 sda1[0] sdc1[2] sdb1[1]
259008 blocks [3/3] [UUU]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
¿如何在不丢失任何数据的情况下安全地从软突袭中删除驱动器?我想从阵列中删除一个驱动器,以便重新格式化它并独立使用它,同时保持最重要的数据镜像。
在哪些情况下进程使用的端口不会显示在netstat -a
输出中?
我jenkins
在我的机器上运行。它正在侦听端口 8080。我正在尝试启动另一个尝试在同一端口上绑定的进程,但失败并显示端口已在使用中的错误。
现在,当我这样做时netstat -a | grep 8080
,它不会出现在输出中。停止jenkins
我的进程成功绑定到 8080 后。任何线索发生了什么?
我正在运行 CentOS。
我正在将我的一些数据从我的旧服务器安装到我的新服务器。
因为我的旧服务器已经使用了很长时间,所以我有大量的遗留数据,当然还有遗留的用户名和组名。
提取时,tar 会尽力按名称匹配用户和组信息,并将标识符用作后备或将当前用户用作最后的手段。
我想做的是在提取之前确保所有用户和组都存在。这样所有文件都会获得正确的ID。
为此,我能想到的最好方法是列出在 tar 文件中找到的所有用户名和组名。我知道我可以使用该tar tvf backup.tar
命令列出所有文件,但是我必须想出一种方法来提取正确的两个名称。
我想知道是否有比使用该tv
选项更简单的方法。一些仅提取用户名和组名的工具或命令行选项,我可以sort -u
用来将列表减少到唯一条目。
有人知道这样的功能吗?
我过去曾尝试使用 linuxdiff
命令,但没有太多运气或耐心。我通常最终会使用像 DiffMerge 或 Kdiff 这样的 GUI 实用程序。
最近我开始diff
再次尝试通过 ssh 来比较远程系统上的文件,我发现这个-y / --side-by-side
选项非常有用,但我仍然觉得我没有充分利用这个实用程序。
所以我很好奇如何实现以下目标:
另外,我在谷歌搜索时没有找到很多好的例子,所以如果你有一些 linux-fu 的秘密来充分利用 diff,你能分享一下吗?我将主要比较基于文本的配置文件,但任何技巧和技巧都会很棒。
供参考- DiffMerge 实用程序可以轻松地通过颜色突出显示并排显示更改。顶部的图标允许您在“显示全部”、“显示差异”和“显示与上下文的差异”视图之间切换。在命令提示符下会喜欢这些功能。
ps:我还应该指出,我认为非常有用的另一个选项是我--suppress-common-lines
在这篇简洁易读的博客文章中了解到的。
有什么我可以放在我的exrc
文件中以防止vi
转到我上次打开文件时所在的最后一行并且默认情况下将光标设置在顶部?
我认为它是特定于发行版的——它在 Solaris 上的行为与在 RHEL 上的行为不同。
我有一堆服务(比如C0
,C1
…… C9
),它们应该只在服务S
完成初始化并完全运行并准备好用于其他服务后启动。我如何用 systemd 安排它?
在systemd 中使用路径激活和目标对服务S
进行排序时,假设服务具有写出某种标志文件的机制。相比之下,这里假设我可以完全控制服务S
运行的程序,并且可以在需要时向其中添加 systemd 机制。
我有一个关于 docker 容器和套接字的问题。今天我发现,主机系统上具有映射端口(或其他端口)的 docker 容器在我使用或时-p 80:80
不会显示(也尝试过,没有机会)。然后我尝试测试,打开一个侦听器端口80 ,但没有机会,它拒绝连接端口80,尽管这个端口没有显示由某个进程打开。netstat
ss
lsof -i
sudo
sudo nc -l -p 80
我认为这个问题是由于容器化或网络命名空间造成的,但是应该有一些命令可以按低级别、内核级别列出已使用的套接字?
ps:当我尝试在端口映射(-p 172.17.0.1:80:80
)上使用 docker 主机网络接口 ip 地址时,它使用上述命令显示。
ps-2:lsof | grep -w 80
输出:
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
Xorg 718 root 37u CHR 13,80 0t0 10891 /dev/input/event16
Xorg 718 749 Xorg:disk root 37u CHR 13,80 0t0 10891 /dev/input/event16
Xorg 718 778 Xorg:disk root 37u CHR 13,80 0t0 10891 /dev/input/event16
Xorg …
Run Code Online (Sandbox Code Playgroud)