Unix & Linux

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

7
将stdout重定向到您没有写权限的文件
当您尝试修改文件而没有写权限时,会出现错误: > touch /tmp/foo && sudo chown root /tmp/foo > echo test > /tmp/foo zsh: permission denied: /tmp/foo Sudoing无济于事,因为它以root身份运行命令,但是shell仍会处理重定向标准输出并以您自己的方式打开文件: > sudo echo test > /tmp/foo zsh: permission denied: /tmp/foo 除了以root用户身份打开Shell并以这种方式操作文件之外,是否有一种简单的方法可以将stdout重定向到您没有写入权限的文件? > sudo su # echo test > /tmp/foo

12
一行内的差异
我有一些SQL转储,我正在看它们之间的差异。diff显然可以向我展示两行之间的区别,但是我很努力地试图找出长逗号分隔值列表中的哪些值实际上是导致行不同的值。 我可以使用什么工具指出某些文件中两行之间的确切字符差异?
113 command-line  diff 




7
如何创建“ / dev” Linux文件?
Linux中有一些特殊文件不是真正的文件。 其中最著名,最清晰的示例在dev文件夹“文件”中,例如: /dev/null -忽略您写入文件的任何内容 /dev/random -输出随机数据而不是文件内容 /dev/tcp -通过网络将您写入的所有数据发送到此文件 首先,这些实际上是某种形式的脚本或二进制文件的“文件”的名称是什么? 第二,它们是如何创建的?这些文件是在内核级别内置到系统中的,还是有办法自己创建“魔术文件”(/dev/rickroll)?
112 linux  files  devices 


11
如何使用现有环境变量运行cron命令?
如何使用现有环境变量运行cron命令? 如果我在shell提示下可以键入echo $ORACLE_HOME并获取路径。这是我设置的环境变量之一~/.profile。但是,似乎~/.profile没有加载fron cron脚本,因此我的脚本失败了,因为$ORACLE_HOME未设置变量。 在这个问题中,作者提到创建一个~/.cronfile配置文件,该配置文件为cron设置变量,然后他采取了一种变通方法,将所有cron命令加载到他保存在~/Cron目录中的脚本中。像~/.cronfile这样的文件听起来像是个好主意,但其余的答案似乎有点麻烦,我希望有人可以告诉我一种更简单的方法来获得相同的结果。 我想在脚本开始时我可以添加类似的内容,source ~/.profile但这似乎是多余的。 那么,如何使我的cron脚本从交互式shell配置文件中加载变量?

1
是否有办法将nohup输出重定向到nohup.out以外的日志文件?
我经常使用该程序,nohup以便我的进程不受挂断的影响。因此,如果我想使程序program不受挂断的困扰,请使用以下命令 nohup program & 其中,&并将其进程在后台运行。 开始时,nohup给我消息: nohup:将输出附加到`nohup.out' 除了以外,还有什么方法可以将输出发送到文件nohup.out吗?通常,我想使用来在同一目录中运行许多进程nohup,但是如果执行此操作,则所有输出都将集中到一个nohup.out文件中。 手册页(例如here)似乎没有指定日志文件的选项。你能确认一下吗?另外,您是否对我如何解决此问题有任何想法?

6
Linux如何处理多个连续的路径分隔符(/ home ///// username //// file)?
我正在研究将文件位置传递给scp子进程的python脚本。没关系,但是我遇到的情况是我可能最终将路径与文件名连接起来,使得路径中有一个double' /。我知道bash不在乎您是否有多个文件分隔符,但是我想知道如何更正此问题。是bash去除多余的/s还是真的没有关系? 我问,因为这样可以节省我几行代码,以便/在连接时检查是否有多余的。我知道这没什么大不了的,但我也很好奇。我有一个bash脚本,其中包含该行cd //usr(而不是cd /usr),这似乎暗示/在路径中使用多个s 可能很重要

20
在两台计算机之间发送大量数据的最快方法是什么?[关闭]
我经常遇到这种情况: 我有一个内部服务器,其中有一个320GB的硬盘驱动器,以及16GB的ram(可在此处找到确切的规格,但是由于这也是我在其他计算机上经常遇到的一个问题,因此我希望答案适用于任何计算机“合理的” Linux计算机) 我有一个备份服务器,其中有几个TB的硬盘空间(具体规格在此处,请参见上面的免责声明) 我想将320GB的数据从源服务器传输到目标服务器(特别是来自的数据/dev/sda)。 两台计算机实际上彼此相邻,因此我可以在它们之间进行电缆连接。 我在局域网上,并且正在使用新型路由器,这意味着我的网络速度应该“理想地”为1000Mbit,对吗? 安全性不是问题。我在本地网络上,我信任网络上的所有计算机,包括路由器。 (可选)我不一定需要数据的签名校验和,但是应该检测基本的错误检查(例如丢包或驱动器变得不可读),而不仅仅是消失在输出中。 我在线搜索了这个问题,并测试了几个命令。最常出现的一个是: ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz 事实证明,此命令太慢(运行了一个小时,仅通过数据获得了约80GB)。1GB的测试数据包花费了大约1分22秒的时间,最终没有压缩时的速度提高了两倍。由于传输的文件小于源系统上的RAM数量,因此结果可能也有偏差。 而且(这已经在1GB的测试件上进行了测试),如果我使用gzip命令and dd,则会遇到问题。与直接管道传输相比,在目标上提取时,结果文件具有不同的校验和。我仍在尝试找出原因。

4
如何复制合并两个目录?
我在Linux中有两个目录image和images2具有这种结构: /images/ad /images/fe /images/foo ...和其他4000个文件夹 另一个像: /images2/ad /images2/fe /images2/foo ...和其他4000个文件夹 这些文件夹中的每个文件夹都包含图像,并且images和images2下的目录名称完全相同,但是它们的内容不同。然后,我想知道如何将/ images2 / ad的图像复制合并到images / ad,将/ images2 / foo的图像复制合并到images / foo,以此类推,并合并所有4000个文件夹。

5
如何仅监视日志文件的最后n行?
我有,我想显示一个不断增长的日志文件,只有最后的15行。这是我知道可以做的: tail -n 15 -F mylogfile.txt 填充日志文件后,tail将最后几行添加到显示中。 我正在寻找一种仅显示最后15行并在更新后摆脱最后15行之前的行的解决方案。你有个主意吗?
110 logs  monitoring  tail 

4
创建相对于当前目录的符号链接
我试图在我的主目录中创建一个符号链接,该符号链接指向我的外部HDD上的目录。 当我这样指定时,它可以正常工作: cd ~ ln -s /run/media/name/exhdd/Data/ Data 但是,当我尝试这样做时,它会创建错误的链接: cd /run/media/name/exhdd ln -s Data/ ~/Data 这将创建一个我无法cd进入的链接。 当我尝试时,bash抱怨: bash: cd: Data: Too many levels of symbolic links 当ls设置为显示彩色输出时,我家中的“数据”符号链接也显示为红色。 为什么会这样呢?如何以这种方式创建链接?(我想在我的工作目录中的另一个目录中创建一个指向目录的符号链接。) 编辑:根据此 StackOverflow答案,如果第二个参数(在我的情况下为〜/ Data)已经存在并且是目录,ln则会在该目录内创建指向目标的符号链接。 但是,我在遇到同样的问题: ln -s Data/ ~/
110 directory  symlink  ln 


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.