Unix & Linux

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

2
命令末尾的“&”如何使脚本如此快?
在在线解决CTF挑战时,遇到了需要暴力破解服务器的情况。这是我写的代码: #!/bin/bash for i in {0..9}{0..9}{0..9}{0..9} do echo "Now trying code.." echo $i echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt done 这是令人难以置信的,痛苦的缓慢。我需要尝试从1000到9999的组合,每10次尝试大约需要5秒钟。然后,按照建议,在此行的末尾添加一个“&”: echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt & 并且,它在几秒钟内尝试了数百种组合。我很惊讶。有人可以向我解释逻辑吗?“&”是做什么的?

4
如何在Linux上搜索整个手册页?
有时我需要在所有手册页中查找某些单词。我知道apropos,但是,如果我了解其手册权利,它将搜索仅限于描述。 每个手册页中都有简短说明。apropos在描述中搜索关键字的实例。 例如,如果我查找“ viminfo”之类的词,我将一无所获... $ apropos viminfo viminfo: nothing appropriate. ...尽管该词存在于Vim手册的第二部分(已安装在我的系统中)。 -i {viminfo} When using the viminfo file is enabled, this option sets the filename to use, instead of the default "~/.vim‐ info". This can also be used to skip the use of the .viminfo file, by giving the name …

3
一旦Jessie成为稳定版本,Debian Wheezy(稳定版)会自动升级到Jessie吗?
我正在使用Debian Wheezy(稳定),并通过基本的例程定期更新我的系统: sudo apt-get update sudo apt-get dist-upgrade 将来,一旦Jessie成为稳定版本,我想知道Wheezy是否会继续做下去自动成为Jessie dist-upgrade。 是否需要采取任何手动步骤来确保始终使用当前的稳定版本(未来几年,例如Jessie之后的Sid),还是我要按原样进行? 例如,我是否必须以某种方式修改我的sources.list文件,以确保Jessie可以在没有任何手动步骤的情况下简单地闲逛,还是需要一些“大”更新(“ dist-upgrade”)为我做这一切并在知道的情况下wheezy将所有实例更改jessie为? (我的sources.list中的每一行都有wheezy。也许我只需要wheezy从中删除?) 我是新手(从OS X和Windows之前的版本),所以不确定在Debian上如何自动在同一频道上进行“发行升级”-OS X只是通过其自动更新来提供,完全升级到了下一个(稳定/就绪)版本,不需要进行手动检查,也无需复杂的步骤即可进行正常系统更新检查。

4
邮件:无法发送消息:进程以非零状态退出
我有一个cronjob工作了大约两个星期,没有任何问题。然后昨晚我检查了我没有收到的电子邮件。我去终端尝试给自己发送电子邮件,出现以下错误: 邮件:无法发送消息:进程以非零状态退出 我的ssmtp cfg文件没有任何更改。它只是停止工作,当我检查并重新检查所有内容时,代码,ssmtp一切都很完美。 我每天两次通过cronjob发送电子邮件。crontab也没有受到干扰。我真的不知道为什么它将停止工作。 系统通过gmail发送电子邮件-我进入了gmail帐户并发送了测试电子邮件,它们的发送和接收没有任何问题。 此外,我已经检查了整个Google,论坛,网站,但没有发现任何错误。这是有道理的,因为24小时前一切正常,现在就停止了。 问:是否有任何诊断和故障排除方法来解决此类问题?
18 cron  email  ssmtp 

3
有写Unicode字符的通用方法吗?
有时我想在各种程序(例如vim,Chrome(就像现在!)或LibreOffice)中编写特殊的Unicode字符,例如破折号(-)。 在LibreOffice中,我可以通过“插入”菜单下的专用对话框来实现此目的。其他程序似乎没有内置的方式。在这种情况下,我的解决方案是在Wikipedia上查找字符,将其复制并粘贴。 是否有一种通用方法可以在任何接受Linux中文本输入的程序中编写Unicode字符,而不必从已经打印的位置进行复制和粘贴?

1
在部分读取时,unix流辅助数据会发生什么?
因此,我已经阅读了很多有关unix流辅助数据的信息,但是所有文档中缺少的一件事是,如果部分读取,该怎么办? 假设我正在24字节缓冲区中接收以下消息 msg1 [20 byes] (no ancillary data) msg2 [7 bytes] (2 file descriptors) msg3 [7 bytes] (1 file descriptor) msg4 [10 bytes] (no ancillary data) msg5 [7 bytes] (5 file descriptors) 第一次调用recvmsg时,我会收到所有msg1(以及部分msg2?操作系统会这样做吗?)如果我获得了msg2的一部分,我是否会立即获取辅助数据,并需要保存以备下次读取当我知道消息实际上告诉我如何处理数据时?如果我从msg1释放20个字节,然后再次调用recvmsg,它将同时提供msg3和msg4吗?来自msg3和msg4的辅助数据是否在控制消息结构中串联在一起? 虽然我可以编写测试程序来通过实验找到答案,但我正在寻找有关辅助数据在流上下文中的行为的文档。我找不到任何官方材料,这似乎很奇怪。 我将在这里添加我的实验结果,这是我从该测试程序获得的: https://github.com/nrdvana/daemonproxy/blob/master/src/ancillary_test.c Linux 3.2.59、3.17.6 看起来,只要在调用recvmsg的过程中不需要传递先前的辅助有效负载,Linux就会将部分辅助消息附加到其他消息的末尾。一旦传递了一条消息的辅助数据,它将返回短读,而不是开始下一条辅助数据消息。因此,在上面的示例中,我得到的读数是: recv1: [24 bytes] (msg1 + partial msg2 with msg2's 2 file …

6
使用GNU Parallel的Parallelise rsync
我一直在使用rsync脚本来将一台主机上的数据与另一台主机上的数据同步。数据中包含许多小型文件,这些文件几乎占了1.2TB。 为了同步这些文件,我一直使用rsync如下命令: rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/ proj.lst的内容如下: + proj1 + proj1/* + proj1/*/* + proj1/*/*/*.tar + proj1/*/*/*.pdf + proj2 + proj2/* + proj2/*/* + proj2/*/*/*.tar + proj2/*/*/*.pdf ... ... ... - * 作为测试,我选择了其中两个项目(8.5GB数据),并执行了上面的命令。作为一个顺序过程,它需要14分58秒才能完成。因此,对于1.2TB的数据,将需要几个小时。 如果我能多rsync在并行处理(使用&,xargs或parallel),这将节省我的时间。 我尝试使用下面的命令parallel(cd进入源目录后),花了12分37秒执行: parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: …

4
使用#!/ bin / sh或#!/ bin / bash以获得Ubuntu-OSX兼容性以及易用性和POSIX
我知道我可以用作第一行脚本来调用所需的shell。 将#!/bin/sh被推荐,如果所有的UNIX系统的兼容性是一个绝对的要求? 就我而言,我唯一关心的OS是Ubuntu(Debian)和OSX。鉴于此,我是否可以使用#!/bin/bash并确保它在两个系统上都可以工作? 这还会使使用更现代,更清晰的命令语法的脚本更容易使用吗?使用是否#!/bin/sh还与使用POSIX有关?
18 bash  shell  ubuntu  osx  posix 

2
EL5和EL6在包装方面意味着什么?
我将CentOS与Citrix XenServer一起使用。 [root@xen01 shm]# uname -a Linux xen01 2.6.32.43-0.4.1.xs1.8.0.855.170800xen #1 SMP Mon Jul 21 05:12:35 EDT 2014 i686 i686 i386 GNU/Linux [root@xen01 shm]# lsb_release -a LSB Version: :core-4.0-ia32:core-4.0-noarch Distributor ID: XenServer Description: XenServer release 6.2.0-70446c (xenenterprise) Release: 6.2.0-70446c Codename: xenenterprise 我从http://sourceforge.net/projects/apcupsd/files/rpms%20-%20Stable/3.14.10/apcupsd-3.14.10-1.el5.i386.rpm/download安装了apcupsd软件包 但是过去一年有一个新版本,并且RPM似乎没有更新为3.14.12。 我找到了这个版本:https : //admin.fedoraproject.org/updates/FEDORA-EPEL-2014-4191/apcupsd-3.14.12-1.el6 我想知道EL5和EL6在包装方面究竟意味着什么。后者由于依赖关系而失败,但是我可以安装EL6软件包吗?

3
如何列出所有shell变量?
阅读有关此问题的信息:在zsh中如何列出所有环境变量?,我想知道如何列出所有shell变量? 另外,shell变量和环境变量之间的区别是否适用于zsh以外的其他shell? 我主要对Bash和Zsh感兴趣,但是很高兴知道如何在其他主流Shell中做到这一点。

2
如何添加ipv6默认路由
我有以下设置 Linux 1 Linux 0 eth1 eth0-------------------eth0 14.14.14.80 19.19.19.20 19.19.19.10 2005::5/64 2004::3/64 2001::3/64 从Linux0,我能够ping通14.14.14.80 or 19.19.19.20(19.19.19.20加入作为默认GW),也对Linux1,ipv4启用转发。为此ipv6,我无法2004::3/64在上将其添加为默认的ipv6网关Linux0。我试过了 ip -6 route add default via 2004::3 和 ip -6 route add default via 2004:: 但是我得到了错误 RTNETLINK answers: No route to host 我在这里想念什么?
18 ipv6  route 

1
为什么命名管道和写入文件一样慢?
我试图了解命名管道的工作原理,以便简化单向进程间通信。我预计会由于将数据复制到循环缓冲区而产生一些开销,我本以为它存储在RAM中,因此我希望管道比写入文件快得多(因为RAM比磁盘快几个数量级)。 相反,我发现命名管道(或匿名管道)与文件的速度大致相同。这是在运行普通Linux并具有普通磁盘驱动器(非固态)的3 GHz桌面上。这是Python中的简化测试程序: import sys import time import random megabyte = "".join(random.choice("abcdefghijklmnopqrstuvwxyz") for x in range(1024**2)) while True: before = time.time() sys.stdout.write(megabyte) after = time.time() sys.stderr.write("{} microseconds\n".format(1e6 * (after - before))) 管道直达/dev/null: python test.py > /dev/null 每兆字节产生2.1微秒(恒定)。 管道到文件: python test.py > /tmp/testout.txt 在500微秒和930微秒之间跳转(随着文件变大,这个值越来越普遍-大概是在寻找磁盘空间)。 然后是命名管道: mkfifo testpipe cat testpipe > /dev/null …
18 fifo 

4
“ inode大小”和“每个inode的字节数”之间有什么区别
下面的信息取自手册页,我想知道字节数/ inode和inode-size之间的区别吗? -i bytes-per-inode 指定字节/索引节点比率。mke2fs为磁盘上每个字节的每个索引字节空间创建一个索引节点。每inode的字节数比率越大,将创建的inode越少。该值通常不应小于文件系统的块大小,因为这样会导致过多的inode。请注意,创建文件系统后无法扩展inode的数量,因此请谨慎选择正确的值。此参数的值。 -I inode-size 指定每个inode的大小(以字节为单位)。mke2fs默认情况下会创建256字节的inode。在2.6.10之后的内核以及一些更早的供应商内核中,可以使用大于128字节的索引节点来存储扩展属性以提高性能。索引节点大小值必须是2的幂或大于128的幂。 -增大索引节点表将占用的空间,这会减少文件系统中的可用空间,并且还会对性能产生负面影响。存储在大型索引节点中的扩展属性在较旧的内核中不可见,并且此类文件系统无法在2.4内核中安装完全没有。创建文件系统后无法更改此值。
18 linux  ext2  mkfs 


2
密钥的<主要>是什么?
我刚刚在dconf-editor中看到了一个奇怪的快捷方式: &lt;Primary&gt;&lt;Alt&gt;KP_End 什么&lt;Primary&gt;啊 我也看到了一把Above-Tab钥匙。我完全理解这是指什么,但是这些键名是否已定义?

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.