我正在寻找一种简单的方法(一个命令或一系列命令,可能涉及find
)在两个目录中查找重复文件,并将一个目录中的文件替换为另一个目录中文件的硬链接。
情况是这样的:这是一个文件服务器,多人在上面存储音频文件,每个用户都有自己的文件夹。有时,多人拥有完全相同的音频文件的副本。现在,这些都是重复的。我想让它们成为硬链接,以节省硬盘空间。
我有一个目录树,它有一堆指向文件的符号链接/home
......但是,我已经转移/home
到/mnt/home
并且需要一种方法来“重新链接”所有符号链接。是否存在此类功能,或者我是否需要编写脚本来执行此操作?
例如,我有以下内容:
[root@trees ~]# ls -l /mnt/home/someone/something
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/e
/mnt/home/someone/something/subdir:
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/subdir/a
lrwxrwxrwx 1 …
Run Code Online (Sandbox Code Playgroud) 所以,我以为我对此有一个很好的理解,但只是进行了一个测试(以回应我不同意某人的对话)并发现我的理解有缺陷......
尽可能详细地说明当我在 shell 中执行文件时到底发生了什么?我的意思是,如果我输入:./somefile some arguments
进入我的 shell 并按回车键(并且somefile
存在于 cwd 中,并且我有读取+执行权限somefile
),那么引擎盖下会发生什么?
我以为答案是:
exec
,将路径传递给somefile
somefile
并查看文件的幻数,以确定它是否是处理器可以处理的格式somefile
被读取/映射到内存。创建堆栈并执行跳转到代码的入口点somefile
,并ARGV
初始化为参数数组 (a char**
, ["some","arguments"]
)exec()
如上所述生成一个新进程,但使用的可执行文件是shebang(例如/bin/bash
或/bin/perl
)引用的解释器并somefile
传递给STDIN
但是有人告诉我,如果文件是纯文本,那么 shell 会尝试执行命令(就像我输入了bash somefile
)。我不相信这一点,但我只是尝试了一下,结果是正确的。所以我显然对这里实际发生的事情有一些误解,并想了解机制。
当我在我的 shell 中执行一个文件时到底发生了什么?(尽可能多的细节是合理的......)
我正在尝试将室外温度(以度为单位)放入电子邮件中。在我的 Mac 上,度数符号 ( °
) 是Option+ Shift+ 8。但是我在 Ubuntu 10.10 上用 Thunderbird 编写电子邮件,使用默认的美国英语键盘布局。我使用什么组合键来获得 X11 下的度数符号?
编辑: Gert 成功地回答了这个问题……但是,比他的回答中的更容易使用的击键的奖励积分!
当我第一次接触 Linux 时,2000 年在 Cisco Systems 工作,我被教导了该sync
命令的优点,用于将缓冲区刷新到磁盘以防止文件系统损坏/数据丢失。不仅那里的同事告诉我,大学里的朋友也告诉我总是跑sync
“几次”或“一堆”,也就是说,也许 5-10 次,而不是一次。
从那以后我一直保持这个习惯,但是,这有什么好处吗?有没有其他人听说过这个?最重要的是,任何人都可以为/反对您需要sync
多次运行才能有效的想法提供良好的基本原理/经验证据吗?
我想为我们的内部 VMware 测试服务器定价一些新 RAM。(这是我们用来在业务 VM 上测试和运行我们的软件的消费者盒子)。我忘记了它有什么样的 RAM,我宁愿不重启机器并启动 memtest86+ 只是为了获得 RAM 的规格。有什么方法可以让我知道在不关闭 linux 并让每个人都离开的情况下购买哪种 RAM?EG 是某处的信息/proc
?
我们有一个在我们的 Web 服务器上运行的脚本,由客户操作触发,它启动一个 unix 进程来生成一些缓存文件。由于此进程对我们客户提供的文件起作用,因此它有时会出现行为不端,运行时间过长以致生成它的 PHP 进程超时或使用太多 CPU 时间以致系统管理员将其杀死。
是否有任何我可以运行的命令会限制进程的 CPU 时间/运行时间?我正在寻找类似的命令/usr/bin/time
,我可以在其中运行该命令并将其传递给我希望它运行和限制的命令行。
与StackOverflow上的这个问题相关,我想知道是否有办法刷新 NFS 缓存/强制 Linux 查看 NFS 共享上文件的最新副本。
我有一种情况,四台 Apache 服务器通过 NFS 挂载同一目录,当一台服务器更改文件时,其他服务器需要大约 5 - 10 秒才能看到该更改。如果在此窗口中对该文件进行了第二次更改,它可能会覆盖第一次更改。
fstab
文件系统的条目是:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
Run Code Online (Sandbox Code Playgroud)
是否有命令可以强制 Linux 刷新 NFS 共享上一个文件的缓存?
我当前的screen
会话有 12 个打开的窗口。它已经运行了数周......我知道我上周某个时候convert
在这 12 个屏幕窗口之一中执行了 ImageMagick命令......有什么方法可以轻松搜索所有 12 个实例的 Bash 历史记录,而无需关闭它们或运行它们history | grep convert
在所有 12 个屏幕中?
我正在寻找一种无需使用计算器即可获得 LVM 物理卷上的可用空间的方法。
我知道该pvdisplay
命令将显示 PE 大小以及可用 PE 的大小,因此通过将 PE 大小乘以可用 PE,我知道可用空间(以 KB 为单位)。但我想要一个命令,它告诉我以兆字节、千兆字节等为单位的可用空间。
的输出pvdisplay
是:
[root@df02 mysql]# pvdisplay
/dev/cdrom: open failed: No medium found
--- Physical volume ---
PV Name /dev/sda2
VG Name MMB
PV Size 29.71 GB / not usable 19.77 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 950
Free PE 221
Allocated PE 729
PV UUID QfZGfn-a3VV-IRkw-bV9g-6iqm-zXjN-y5e6gr
Run Code Online (Sandbox Code Playgroud)
因此,本例中的可用空间为 32768 KByte * 221 Free PE = 7241728 KiB,即 6.90625 GiB。但是,如果没有计算器,就需要做很多数学运算;-)
是否有命令可以为我提供 LVM 物理卷上的可用空间(以兆字节/千兆字节为单位)?