Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答


2
Grep字边界
根据GNU文档: ‘\<’ Match the empty string at the beginning of word. ‘\>’ Match the empty string at the end of word. 我的/ etc / fstab看起来像这样: /dev/sdb1 /media/fresh ext2 defaults 0 0 我希望grep为/ media / fresh的存在返回TRUE / FALSE。我尝试使用\<,\>但是没有用。为什么? egrep '\</media/fresh\>' /etc/fstab 解决方法: egrep '[[:blank:]]/media/fresh[[:blank:]]' /etc/fstab 但是看起来很丑。 我的grep是2.5.1

3
如何透明地缓存任何目录或装入的文件系统以进行读取和回写?
假设我使用的FUSE客户端挂载了一些云存储(在我的情况下为Amazon Cloud Drive)/mnt/cloud。但是,由于直接读写文件的/mnt/cloud速度很慢,因为它必须通过Internet进行传输,因此我想缓存正在读取并写入云存储的文件。由于我可能一次写入大量数据,因此缓存应位于磁盘上而不是RAM中。但是我不想在磁盘上复制整个云存储,因为磁盘可能太小。 因此,我想将缓存视图装入/mnt/cloud挂载在/mnt/cloud_cache,该视图使用另一条路径,例如/var/cache/cloud作为缓存位置。 如果我现在阅读/mnt/cloud_cache/file,我希望发生以下情况: 检查是否file在缓存/var/cache/cloud/file。 如果已缓存:file通过从中获取modtime和/或校验和,来检入缓存是最新的/mnt/cloud。如果是最新版本,请从缓存中提供文件,否则转到2。 如果未缓存或缓存已过期:复制/mnt/cloud/file到/var/cache/cloud/file缓存并从缓存中提供。 当我写信给时/mnt/cloud_cache/file,我希望发生这种情况: 写入/var/cache/cloud/file并记录在file需要回写的日记中/mnt/cloud 等待写入/var/cache/cloud/file完成和/或之前的回写操作/mnt/cloud完成 复制/var/cache/cloud/file到/mnt/cloud 我有以下要求和约束: 免费和开源 能够将缓存设置为任意缓存位置 能够缓存任意位置(可能是一些FUSE挂载点) 透明缓存,即使用/mnt/cloud_cache对缓存机制是透明的,并且像任何其他已挂载文件系统一样工作 记录需要回写的内容(缓存可能会在几天内将很多数据需要回写到原始存储位置) 自动删除已写回或一段时间未访问的缓存文件 一致性(即反映对的外部更改/mnt/cloud)并不是非常重要,因为我一次可能只有一个客户端访问/mnt/cloud,但是拥有它会很好。 我花了很多时间寻找现有的解决方案,但还没有找到令人满意的解决方案。 FS-Cache和CacheFS(https://www.kernel.org/doc/Documentation/filesystems/caching/fscache.txt)似乎仅适用于nfs或afs文件系统,我不知道如何使它缓存另一个FUSE文件系统或任何常规目录。 bcache(https://bcache.evilpiepirate.org/)似乎仅适用于块设备,即无法缓存另一个FUSE文件系统 gcsfuse(https://github.com/GoogleCloudPlatform/gcsfuse)我认为这完全符合我的要求,但已与Google Cloud Storage集成在一起。为了使其正常工作,我将不得不对其进行破解,并将对GCS的所有访问更改为给定安装点中的本地文件访问或对Amazon Cloud Drive的访问。
22 cache  fuse  cloud 

6
是否可以在不需要HDMI显示器的情况下在Raspberry Pi上安装Linux?
我最近购买了Raspberry Pi 2,B型。我打算主要通过本地计算机上的SSH连接通过本地WLAN或以太网进行连接。 但是,现在我有一个Raspberry Pi,它尚未安装任何软件。到目前为止,我在网上找到关于设置Raspberry Pi的指南都是从将机器连接到HDMI显示器开始的。目前,这里没有带HDMI连接的显示器。 是否可以在Raspberry Pi上安装Linux(任何版本,但可能首选raspbian)而无需将其连接到HDMI显示器?

1
完成cd OLD NEW的第一个参数
在中zsh,cd命令具有两个参数的形式:cd OLD NEW更改为${PWD/OLD/NEW}。使用新式的完成系统,zsh能够完成NEW:第二个参数根据OLD可以替换为现有目录的内容完成。但是第一个参数仅在现有目录中完成。 OLD除了完成现有目录之外,zsh如何让zsh提供可能的值? 例如,如果当前目录是,/path/to/foo并且还有目录/also/to/foo和/path/to/foo/prime,则cd pTab完成p到prime。如果我打算运行,cd path also那么我希望zsh也可以path作为补充。怎么样? 使用第二个参数的已经输入的值来限制第一个参数的可能性是一个加号,但是独立完成第一个参数也可以。

7
激活点击以点击触摸板?
我在Powerbook G4 15“ 1.67GHz上使用Debian 8.6 LXDE,并且想启用点击以在触摸板上单击。它已经是两次滚动,但是点击可以帮助保存老化的鼠标按钮。两指点击可以左击会锦上添花吗,这可能吗?


5
如何减少Linux上一个进程的所有线程(和子线程)?
Linux没有(还)遵循POSIX.1标准,它说的是一renice对过程的影响“的过程中所有的系统范围线程”,因为根据并行线程(7)DOC “线程不共用一个很好的价值。” 但是,有时,renice与给定进程相关的“一切” 可能很方便(一个示例是Apache子进程及其所有线程)。所以, 我怎么能renice全部线程属于给定进程? 我如何才能将renice所有子进程都属于给定进程? 我正在寻找一个相当简单的解决方案。 我知道流程组有时会有所帮助,但是,它们并不总是与我想做的事情相匹配:它们可以包含更广泛或不同的流程集。 使用cgroupManaged by systemd可能也有帮助,但是即使我有兴趣了解它,我也大多在寻找“标准”解决方案。 编辑:还说man (7) pthreads:“一个进程中的所有线程都放在同一线程组中;线程组的所有成员共享相同的PID”。那么,甚至renice没有它自己的PID的东西也可能吗?
22 linux  process  nice  thread 

1
每个bash命令后如何调用脚本
在此示例中,可以调用hey.sh每个bash命令命名的脚本吗? 例如,您键入lshit enter并运行ls,然后hey.sh运行。 然后,您键入cd .. (或任何其他命令),然后hey.sh运行cd,然后运行,依此类推。
22 bash 


1
Kali Linux 2.0 mini和Light之间的区别
最近,Kali Linux 2.0发行了,他们发行了Normal,Minimal和Light ISO安装。最小化Kali Linux安装会包含必要的软件包和其他动机。其中一些列在这里。但是什么是Light安装?
22 kali-linux 

3
什么脚本可以允许普通用户使用网络名称空间?
我有一个使用网络名称空间(netns)的体系结构。我想允许普通用户在这些netns中进行一些操作。 我可以编写一个netns-exec.sh受本文启发的脚本,由执行sudo,包含: ip netns exec $1 su $USER -c "$2" 并添加到我的sudoer文件中: user ALL=(ALL) /path/to/netns-exec.sh 但是我发现它是如此丑陋,我完全可以做噩梦。有没有更好的解决方案,允许普通用户使用名称空间?是否可以将用户分成一些有用的组?我搜索了一下,但一无所获。

2
Bash正则表达式捕获组
我正在尝试从字符串中匹配多个字母数字值(此数字可能有所不同),并将它们保存到bash捕获组数组中。但是,我只有第一场比赛: mystring1='<link rel="self" href="/unix//api/clouds/1/instances/1BBBBBB"/> dsf <link rel="self" href="/unix//api/clouds/1/instances/2AAAAAAA"/>' regex='/instances/([A-Z0-9]+)' [[ $mystring1 =~ $regex ]] echo ${BASH_REMATCH[1]} 1BBBBBB echo ${BASH_REMATCH[2]} 如您所见-它与我要查找的第一个值匹配,但与第二个值不匹配。


1
dpkg替换FAT文件系统上的文件
升级或重新安装软件包时dpkg(最终使用该软件包的任何东西,如apt-get等),它都会通过在替换之前创建指向该文件的硬链接来备份现有文件。这样,如果解压缩失败,它可以轻松地放回现有文件。很好,因为它可以保护操作系统免受Bad Things™的影响。 除非...仅在文件系统支持硬链接时才有效。并非所有文件系统都可以-例如FAT文件系统。 我正在为特定的嵌入式ARM平台开发Debian发行版,并且引导环境要求某些文件(包括内核)位于FAT文件系统上,以便引导代码能够找到并加载它们。 当您升级内核软件包(或该FAT分区中具有文件的任何其他软件包)时,安装失败并显示以下信息: dpkg: error processing archive linux-image3.18.11+_3.18.11.2.armadillian_armhf.deb (--install): unable to make backup link of `./boot/vmlinuz-3.18.11+' before installing new version: Operation not permitted 整个升级失败。 我已经在网上搜索过,唯一可以找到的参考是在进行特定升级时遇到特定问题的特定人员,答案通常是“删除/boot/vmlinuz-3.18.11+,然后重试”,是的,解决该特定问题。 但这不是我的答案。我是OS发行商,而不是OS用户,因此我需要一种解决此问题的方法,该方法不涉及最终用户在升级之前手动删除其内核文件。我需要一种方法来告诉dpkg对/ boot上的文件(或我所关心的所有文件进行“复制,而不是硬链接”),尽管这样会稍微降低升级操作的速度),或者更好的方法是“如果硬链接失败,不要抱怨,只需复制它即可。” 我已经尝试了诸如--force-unsafe-io和甚至--force-all标志to之类的事情dpkg,但是没有任何效果。
22 dpkg  hard-link  fat 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.