小编Ale*_*lke的帖子

从文件开头删除字节的最佳方法?

今天我不得不从一个 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)

哪个完成得相当快,但一定有更简单/更好的方法?有没有我忘记的另一个工具?

dd

76
推荐指数
4
解决办法
9万
查看次数

有没有办法知道下一个 systemd 计时器何时运行?

我正在测试一个 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)

systemd systemd-timer

25
推荐指数
2
解决办法
2万
查看次数

读取“/proc”以了解进程是否已打开端口

我需要知道具有给定 PID 的进程是否在不使用外部命令的情况下打开了一个端口。然后我必须使用/proc文件系统。/proc/$PID/net/tcp例如,我可以读取文件并获取有关进程打开的 TCP 端口的信息。但是,在多线程进程上,该/proc/$PID/task/$TID目录还将包含一个net/tcp文件。我的问题是:

我需要查看所有线程net/tcp文件,还是将线程打开的端口写入进程net/tcp文件。

linux open-files tcp proc

21
推荐指数
2
解决办法
3万
查看次数

从软 RAID 中移除驱动器

我在 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)

¿如何在不丢失任何数据的情况下安全地从软突袭中删除驱动器?我想从阵列中删除一个驱动器,以便重新格式化它并独立使用它,同时保持最重要的数据镜像。

raid raid1

18
推荐指数
1
解决办法
4万
查看次数

正在使用的端口未显示在 netstat 输出中

在哪些情况下进程使用的端口不会显示在netstat -a输出中?

jenkins在我的机器上运行。它正在侦听端口 8080。我正在尝试启动另一个尝试在同一端口上绑定的进程,但失败并显示端口已在使用中的错误。

现在,当我这样做时netstat -a | grep 8080,它不会出现在输出中。停止jenkins我的进程成功绑定到 8080 后。任何线索发生了什么?

我正在运行 CentOS。

centos netstat

14
推荐指数
2
解决办法
3万
查看次数

列出在 tarball 中找到的所有 user:group 的最简单方法是什么?

我正在将我的一些数据从我的旧服务器安装到我的新服务器。

因为我的旧服务器已经使用了很长时间,所以我有大量的遗留数据,当然还有遗留的用户名和组名。

提取时,tar 会尽力按名称匹配用户和组信息,并将标识符用作后备或将当前用户用作最后的手段。

我想做的是在提取之前确保所有用户和组都存在。这样所有文件都会获得正确的ID。

为此,我能想到的最好方法是列出在 tar 文件中找到的所有用户名和组名。我知道我可以使用该tar tvf backup.tar命令列出所有文件,但是我必须想出一种方法来提取正确的两个名称。

我想知道是否有比使用该tv选项更简单的方法。一些仅提取用户名和组名的工具或命令行选项,我可以sort -u用来将列表减少到唯一条目。

有人知道这样的功能吗?

users tar group

10
推荐指数
2
解决办法
808
查看次数

如何使用“diff”命令获得最大收益?

我过去曾尝试使用 linuxdiff命令,但没有太多运气或耐心。我通常最终会使用像 DiffMerge 或 Kdiff 这样的 GUI 实用程序。

最近我开始diff再次尝试通过 ssh 来比较远程系统上的文件,我发现这个-y / --side-by-side选项非常有用,但我仍然觉得我没有充分利用这个实用程序。

所以我很好奇如何实现以下目标:

  1. 突出显示更改或使用颜色编码使输出更具可读性
  2. 合并 - 选择有差异的行并将更改影响到文件之一

另外,我在谷歌搜索时没有找到很多好的例子,所以如果你有一些 linux-fu 的秘密来充分利用 diff,你能分享一下吗?我将主要比较基于文本的配置文件,但任何技巧和技巧都会很棒。

供参考- DiffMerge 实用程序可以轻松地通过颜色突出显示并排显示更改。顶部的图标允许您在“显示全部”、“显示差异”和“显示与上下文的差异”视图之间切换。在命令提示符下会喜欢这些功能。

ps:我还应该指出,我认为非常有用的另一个选项是我--suppress-common-lines在这篇简洁易读的博客文章中了解到

command-line diff

9
推荐指数
2
解决办法
3067
查看次数

打开文件时禁止 vi 转到最后访问的行

有什么我可以放在我的exrc文件中以防止vi转到我上次打开文件时所在的最后一行并且默认情况下将光标设置在顶部?

我认为它是特定于发行版的——它在 Solaris 上的行为与在 RHEL 上的行为不同。

vim vi

9
推荐指数
2
解决办法
2568
查看次数

systemd 服务如何标记它已准备好,以便其他服务可以在启动之前等待它准备好?

我有一堆服务(比如C0C1…… C9),它们应该只在服务S完成初始化并完全运行并准备好用于其他服务后启动。我如何用 systemd 安排它?

systemd 中使用路径激活和目标对服务S进行排序时,假设服务具有写出某种标志文件的机制。相比之下,这里假设我可以完全控制服务S运行的程序,并且可以在需要时向其中添加 systemd 机制。

systemd

9
推荐指数
1
解决办法
6275
查看次数

Docker 映射的端口未显示在“netstat”、“ss”和“lsof”上

我有一个关于 docker 容器和套接字的问题。今天我发现,主机系统上具有映射端口(或其他端口)的 docker 容器在我使用或时-p 80:80不会显示(也尝试过,没有机会)。然后我尝试测试,打开一个侦听器端口80 ,但没有机会,它拒绝连接端口80,尽管这个端口没有显示由某个进程打开。netstatsslsof -isudosudo 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)

networking linux-kernel namespace docker network-namespaces

9
推荐指数
1
解决办法
4237
查看次数