小编MvG*_*MvG的帖子

xdg-open 如何工作

根据手册页,xdg-open将使用用户配置的应用程序打开一个文件。但是,该应用程序实际上是如何确定的?我看不到与 关联的配置文件xdg-utils,那么我的设置存储在哪里以及如何修改它们?看到一个简单的 PNG 文件如何使用 Wine 打开 Internet Explorer,我需要更改这些设置。

desktop-environment freedesktop xdg-open

31
推荐指数
1
解决办法
7271
查看次数

FreeBSD 中 ZFS xattr 支持的状态

我正在尝试确定是否使用 ZFS 在 FreeBSD 中支持 xattrs,或者更确切地说,支持扩展到什么程度。我读过一些相互矛盾的信息。

  1. zfs get xattr将其列为on (default)//usr/var,但off (temporary)对所有其他数据集,包括上面提到的那些孩子们。
  2. 运行zfs set xattr=on zroot/usr/home我收到消息

    property 'xattr' not supported on FreeBSD: permission denied.

  3. 这符合zfs手册页

    xattrFreeBSD 目前不支持该属性。

  4. setextattrgetextattr而且lsextattr似乎工作得很好。
  5. 我还设法使用 保存和恢复设备文件节点rsync --fake-super,并且可以使用lsextattr和查看其数据getextattr
  6. 维基百科在xattr 讨论页中有一些讨论。显然,曾经有人声称 ZFS 从 FreeBSD 8 开始就支持 xattr,但后来参考手册页(参见 3.)将其删除。

目前,我的印象是 zfs 上的扩展属性在实践中起作用,但是xattr控制它们使用的属性不像在其他 zfs 发行版中那样起作用。但在我相信大量备份数据可以rsync --fake-super …

freebsd zfs bsd xattr

16
推荐指数
1
解决办法
1885
查看次数

是什么让 rsync 的一侧如此忙碌?

我的局域网上有一台 Debian 机器作为其他机器的备份服务器。它有四个硬盘驱动器组合成一个软件 RAID 5 md 设备,在那个 LVM 上,在那个 btrfs 上。使用 rsync 进行备份,对于大型文件系统需要一个多小时。很长一段时间以来,我一直认为我对此无能为力。

然而,最近我注意到传输两端的硬盘活动非常不同。虽然发送端运行 Gentoo 并且主要使用 ext4,几乎没有任何磁盘 IO,但接收端一直很忙。由于大多数数据不会在传输之间发生变化,我认为元数据读取应该构成大部分数据。但是,如果在 btrfs 中读取 inode 比在 ext4 中读取索引节点的工作量大,我会感到非常惊讶。

iotop 确认接收端的磁盘读取速度约为 1-4 MB/s,而发送端只有偶尔的 0.5 MB/s 突发。

我的问题是,谁能解释一下这里发生了什么?如果可能的话,最好有一些如何解决问题的指示。

也许我可以使用一些 btrfs 调整标志或类似的东西。我在备份服务器上需要一个具有快照功能的 FS,而我尝试使用 FreeBSD 和 ZFS 很快就会导致 FS 不一致,所以我目前看不到 btrfs 的替代品。因此,告诉我使用 ext4 或 zfs 的答案可能会收到赞成票但没有复选标记。


根据cjm 的要求,正在使用的 Rsync 选项:

--rsync-path='rsync --fake-super'
--archive               # -rlptgoD
--hard-links            # detect and preserve these
--acls
--xattrs
--sparse
--noatime               # based on patch from samba #7249c1 …
Run Code Online (Sandbox Code Playgroud)

performance io mdadm rsync btrfs

11
推荐指数
1
解决办法
2967
查看次数

如果目标存在,则使 cp 返回错误值

cp如果目标文件已经存在,有没有办法让(来自 Linux 上的 GNU coreutils)返回一个非零值?
或者是否有任何其他常用的小实用程序并提供此功能?

这在 shell 脚本中很有用,可以自动复制文件而不会意外丢失任何内容,也无需用户交互。通过将副本与原件进行比较可以获得类似的结果,但我希望有一个更简单的解决方案。

cp shell-script coreutils

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

清除 GPT 磁盘标签的所有痕迹

我有一个 USB 笔式驱动器,我想把它变成一个可启动的 MBR 设备。但是,在其历史上的某个时刻,该设备上有 GPT,我似乎无法摆脱它。即使我跑mklabel dos进去partedgrub-install仍然抱怨

Attempting to install GRUB to a disk with multiple partition labels.  This is not supported yet..
Run Code Online (Sandbox Code Playgroud)

我不想保留任何数据。我只想清除以前 GTP 的所有痕迹,最好使用一些比 add if=/dev/zero of=…将整个驱动器清零更快的机制。我更喜欢基于终端(命令行或诅咒)的方法,但一些常见且免费的图形工具也可以。

parted gpt mbr disk gdisk

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

传输块设备的内容

出于备份的目的,我想通过 ssh 链接传输(几个)整个磁盘分区。源是块特殊设备,目标应该是常规文件。但是,常用工具似乎不适合于此:

  • scp 会抱怨 not a regular file
  • tar 将尝试在目标端重新创建设备 inode
  • rsyncskipping non-regular file

我目前最好的选择是nc通过端口转发,或cat在每个分区的远程端调用一次,这意味着每个分区输入一个密码,除非设置公钥。有没有更优雅的解决方案?

环境可以是任何合理的Linux live系统。目前我碰巧有一个 Debian wheezy,但它不应该具体。

linux ssh backup block-device disk-image

8
推荐指数
2
解决办法
3608
查看次数

按路径而不是文件模式位的权限

我经常发现 unix 处理文件权限的方法很强大,尤其是与 ACL 结合使用时,但处理起来却很困难。为每个创建的文件正确设置文件模式、组所有权和扩展属性很快就会变得乏味。

是否有任何方法可以用更简单的方法替换这个概念(可能是每个安装),默认情况下文件从其包含的目录继承权限?

我知道这可能会违反许多 POSIX 期望,但另一方面,像 quiet vfat mouts 之类的东西已经无视模式和一些权限更改,因此不应阻止开发新想法。

举个例子,我正在寻找一些我可以确定的东西,只要用户将他的文件放在某个目录中,它就会被给定的组写入和删除,并且只能被世界其他地方读取, 无论用户的 umask 和当前组。

到目前为止我所知道的似乎还不够的原因:

  • 限制目录中的许可文件:将 umask 更改为 0777,将目录的模式更改为 0770,您可以在组内授予读写访问权限并锁定世界的其余部分。目录还必须设置 sgid 位,以便其文件获得正确的组而不是用户的主要组。但是 0777 的 umask 有在不受这种方式限制的地方打开大洞的风险,如果人们开始使用例如 mv 移动东西,umask 就没有多大意义。
  • ACL 默认值:使用 setfacl 可以为给定目录中新创建的文件设置默认值。这比上面的要好,但它只适用于新创建的文件。如果人们开始移动文件,这将不起作用,并且在 umask 过于严格的情况下也不起作用。

filesystems acl permissions directory

5
推荐指数
1
解决办法
779
查看次数

SSD 作为频繁读取数据的读取缓存

我正在寻找利用 SSD 来加速我的系统的方法。在“ Linux 相当于 ReadyBoost?”(以及为我触发的研究)我了解了bcachedm-cacheEnhanceIO。所有这三个似乎都能够在 SSD 上缓存读取数据。

但是,除非我遗漏了什么,否则所有三个似乎都在第一次读取时将文件/块/范围/任何内容存储在缓存中。大型顺序读取可能是一个例外,但除此之外,似乎每次读取缓存未命中都会导致某些内容被缓存。我希望缓存能够缓存我经常使用的那些读取。我担心搜索我的所有 maildir 文件的正文或某个大目录中的递归 grep 可能会驱逐我经常阅读的大部分内容。

有没有什么技术可以缓存经常读取的文件,而不是最近读取的文件?建立某种形式的活动集或诸如此类的东西?我想自适应替换可能是一个描述我所追求的术语。

缺少这一点,我想知道将 LVM 用作底层并在其上构建多个支持 bcache 的设备是否有意义。这个想法是,例如邮件读取不会驱逐缓存/usr之类的。每个挂载的文件系统都会有自己的固定大小的缓存,或者根本没有。有没有人有在 lvm 之上使用 bcache 的经验?是否有理由反对这种方法?

也欢迎任何其他建议。但是请注意,我正在寻找可以在 Linux 上用于生产的东西。我觉得 ZFS 及其 L2ARC 功能不属于该类别(目前),尽管如果您确信相反,欢迎您提出这一点。使用 LVM 的原因是我希望能够根据需要调整为各种文件系统分配的空间大小,使用静态分区很痛苦。因此,提议的解决方案也应该提供这种灵活性。


编辑 1:一些说明。

我主要关心的是启动时间。我想看到用于每次启动的所有文件都可以在该 SSD 上轻松访问。而且我宁愿不必担心保持 SSD 同步,例如在软件包升级之后(这在我的 Gentoo 测试中经常发生)。如果我在启动期间不使用的常用数据也最终出现在缓存中,那是一个额外的好处。我目前的工作项目例如将是一个不错的候选人。但我猜我每天使用的文件中有 90% 会在按下电源按钮后的前 5 分钟内使用。这个目标的一个结果是在启动后擦除缓存的方法,就像 ZFS L2ARC 显然所做的那样,不是一个可行的解决方案。

金发姑娘的回答将焦点从缓存插入转移到缓存驱逐。但这并没有改变问题的根本性质。除非缓存跟踪某个项目的使用频率或频率,否则内容可能仍会过早地从缓存中退出。特别是因为我希望这些文件从启动到关闭一直驻留在 RAM 缓存中,因此每次启动时它们只会从磁盘读取一次。我为 bcache 和 dm-cache 找到的缓存驱逐策略,即 LRU 和 FIFO,都会优先驱逐那些启动时文件,而不是在同一工作日读取的其他文件。因此我的担忧。

linux cache ssd lvm bcache

5
推荐指数
1
解决办法
2994
查看次数

半关闭netcat连接

如果 netcat 连接的输入达到 EOF,如何让其终止 TCP 连接的发送部分?

我有一个(非标准)TCP 服务,它读取所有输入(即直到客户端发送 FIN),然后才开始处理数据并发回回复。我想用来nc与此服务进行交互。但目前回复没有到达控制台nc,并且使用 Wireshark 我可以看到,nc只有在连接退出时才终止连接的发送端(例如,由于超时)。我发现没有命令行选项可以改变这种行为。

pipe tcp netcat

5
推荐指数
1
解决办法
1721
查看次数

提示确认每个命令

我正在为某些事情编写一个非常特别的安装脚本。没有太多的控制结构,基本上只是一个命令列表。我希望用户在执行每个命令之前对其进行确认。有没有办法让 bash 做到这一点,而无需在每个命令前加上 shell 函数名称?

bash prompt shell-script interactive

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