Unix & Linux

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

12
有没有比cp更快的替代方法来复制大文件(〜20 GB)?
我是一名研究生,我所在的小组维护着Linux集群。群集的每个节点都有自己的本地磁盘,但是这些本地磁盘相对较小,没有自动备份。因此,该组拥有一个具有许多TB存储空间的文件服务器。我是Linux的相对新手,所以我不确定文件服务器在速度,网络能力等方面的规格是什么。我确实从经验中知道本地磁盘在I / O方面比文件服务器快得多。大约有十几个人使用文件服务器。 使用cp〜20 GB的文件从文件服务器复制到本地磁盘之一平均需要大约11.5分钟的实时时间(根据time)。我知道此cp操作的效率不是很高,因为(1)time告诉我该副本的系统时间仅为〜45秒;并且因为(2)top在复制期间进行检查时,%CPU相当低(通过检查,平均大约为0-10%)。 使用cp将大约20 GB的文件从本地磁盘上的一个文件夹复制到同一本地磁盘上的另一个文件夹所花费的时间更少-实时约为9分钟(根据,系统时间约为51秒time)。因此,显然文件服务器比预期的要慢于本地磁盘,但可能不会慢很多。我很惊讶从本地复制到同一本地的速度不超过9分钟。 我需要将大约200个大文件(每个〜20 GB)从文件服务器复制到本地磁盘之一。因此,我的问题是:在Linux中复制大文件是否有更快的选择cp? (或者cp我可以使用任何标记来加快复制速度吗?)即使我能以某种方式节省一分钟的复制时间,也将极大地帮助您。 我确定要购买新的,速度更快的硬件磁盘,但是我无法访问这些资源。我也不是系统管理员,我只是一个(新手)用户,所以我无法访问有关磁盘负载的更多详细信息。我确实知道,虽然每天有大约十二个人使用文件服务器,但我是唯一使用此特定节点/本地磁盘的人。
40 cp  file-copy 


3
从Bash历史记录中删除最后N行
当不小心将文件粘贴到外壳中时,它会在bash历史记录中放置大量丑陋的废话。是否有清除这些条目的干净方法?显然,我可以关闭外壳并.bash_history手动编辑文件,但是也许可以使用某种API来修改当前外壳的历史记录?

2
如何记住du和df之间的区别?
du并且df做类似的事情,所以我总是发现自己打错了。 我认为,如果我知道“ du”和“ df”代表什么,它可能会更容易记住要使用的名称。 有什么方法可以区分这两者,以便让我记住哪个动作?
40 disk-usage  df 

5
如何使用保留的硬链接复制目录?
如何将具有共同文件的目录从一个分区移动到另一个分区? 假设我们已经挂载了分区,/mnt/X并且目录共享带有硬链接的文件。如何将此类目录移动到另一个分区,/mnt/Y保留这些硬链接就可以了。 为了更好地说明,“与硬链接共享文件的目录”是什么意思,下面是一个示例: # let's create three of directories and files mkdir -p a/{b,c,d}/{x,y,z} touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5} # and copy it with hardlinks cp -r -l a hardlinks_of_a 更具体地说,我们假设文件的总大小为10G,每个文件有10个硬链接。问题是如何使用10G将其移动到目的地(有人可能会说过使用100G复制它然后运行重复数据删除-这不是我要的内容)
40 files  cp  hard-link 

2
如何在bash的反向搜索中导航?
Bash提供了通过Ctrl+ 反向搜索的功能R。然后可以键入命令的一部分,它将显示历史记录中的合适条目。 假设这是我的历史: vim foo1 vim foo2 # I want to go here vim foo3 # this is where I land, how to go back? 我搜寻foo。再次点击Ctrl+将R显示下一个适合的搜索条目。我经常会想到,我太快了,无法浏览预期的结果并vim foo3显示出来,现在我想回到vim foo2。 因此,我的问题是:如何在反向搜索中导航?

8
如何查找定期将哪个进程写入磁盘?
我如何找到哪个进程正在不断写入磁盘? 我希望自己的工作站接近无声,我只是用安静的风扇等来构建一个新系统(P8B75-M + Core i5 3450s-之所以因为它的最大TDP较低)而安装了Debian Wheezy 64位在上面。 而且有些事情让我紧张:我可以听到某种模式,例如硬盘正在写入或正在寻找某种东西(滴答……滴答……滴答……trrrrrr冲洗并每秒重复一次)。 过去(很多年以前),我也遇到过类似的问题,事实证明这是一些CUPS日志或类似的东西,我只是将一个(不重要)日志记录重定向到了一个(实际的)RAM磁盘。 但是在这里我不确定。 我尝试了以下方法: ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp 但那里什么都没有改变。 现在,奇怪的是,当提示我输入我的LVM解密密码的提示出现时,我也听到了模式。 可能是我刚安装的内核/系统中的某物,还是硬盘有故障? hdparm -tT /dev/sda 报告正确的HD速度(非高速缓存130 GB / s,sata 6GB),并且我已经从大型资源(Emacs)进行安装和编译而没有问题,因此我认为系统不是很糟糕。 (HD是Seagate Barracude 500GB)
40 linux  debian  logs  hard-disk 

4
将OGV视频转换为GIF动画?
我创建OGV视频与gtk-recordmydesktop抓屏程序,试图解决这个问题,在这里用暴力破解了X.我可以查看视频与VLC。 现在,任务是找到一些方法将OGV视频转换为GIF动画,以便可以在SE上显示它们。我怎样才能做到这一点?

11
除以'sed'
我正在尝试使用进行数学运算sed,但是它将继续将我的变量视为字符串。输入是这种类型的: $ echo 12 | sed 's/[0-9]*/&+3/' $ 12+3 我想有15个输出。我只需要执行一次操作并替换其数学结果,因为我将程序作为Python守护程序运行,并且我想避免诸如重定向stdout文件,打开这些文件,执行操作,提取结果,执行操作之类的操作。更换。对我来说,sed似乎最好是同时执行所有动作。 我试图以各种方式投射输入和输出 $ echo 12 | sed 's/[0-9]*/int(&+3)/' $ echo 12 | sed 's/[0-9]*/\int(&+3)/' $ echo 12 | sed 's/[0-9]*/\int(&+3)/' 但是结果始终是第二个领域的印刷。
40 sed  math 



5
如何找到所有不包含文本字符串的文件?
我可以使用什么简洁的命令来查找所有不包含文本字符串的文件? 我没有运气尝试过这个(使用-v反转grep的参数): find . -exec grep -v -l shared.php {} \; 有人说这行得通: find . ! -exec grep -l shared.php {} \; 但这似乎对我不起作用。 此页面包含以下示例: find ./logs -size +1c > t._tmp while read filename do grep -q "Process Complete" $filename if [ $? -ne 0 ] ; then echo $filename fi done …
40 grep  find  recursive 

1
使diff在并排模式下使用完整端子宽度
大多数应用程序都很聪明地使用了终端可用的全部宽度。我的外壳程序有屏幕,vim等。但是,diff在并排模式(-y)中则没有。这激怒了我。它使用126个字符的宽度,这甚至不是我的270块宽度终端的一半。 浏览手册页并没有发现有关自动调整宽度的任何细节,仅通过手动指定宽度-W。 是否可能有一项“隐藏功能” diff允许它自动扩展到终端的整个宽度?要么; -W <terminalsize>每当我运行diff命令时,最简单的方法是什么? 我假设自动将-W附加到所有内容不会有什么坏处,因为它只会意味着“使用$ x列”,这始终是我想要的,无论我处于并排模式,否则。
40 terminal  diff 

4
如何仅获得唯一结果而不必对数据进行排序?
$ cat data.txt aaaaaa aaaaaa cccccc aaaaaa aaaaaa bbbbbb $ cat data.txt | uniq aaaaaa cccccc aaaaaa bbbbbb $ cat data.txt | sort | uniq aaaaaa bbbbbb cccccc $ 我需要的结果是显示原始文件中的所有行,删除所有重复项(而不仅仅是连续的重复项),同时保持文件中语句的原始顺序。 在此示例中,我实际上正在寻找的结果是 aaaaaa cccccc bbbbbb 我uniq一般如何执行此广义操作?


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.