Unix & Linux

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

2
如何说服tar(等)归档块设备内容?
我有六个Linux逻辑卷,它们一起支持一个虚拟机。虚拟机当前已关闭,因此易于为它们拍摄一致的图像。 我想将所有六个图像打包到一个档案中。琐碎地,我可以做这样的事情: cp /dev/Zia/vm_lvraid_* /tmp/somedir tar c /tmp/somedir | whatever 但这当然会创建一个额外的副本。我想避免多余的副本。 显而易见的方法: tar c /dev/Zia/vm_lvraid_* | whatever 之所以不起作用,是因为tar可以识别特殊的文件(在这种情况下为符号链接),并且基本上将其存储ln -s在档案中。或者,使用--dereference或直接指向/dev/dm-X,它将其识别为特殊文件(设备文件),并将其基本上存储mknod在存档中。 我搜索了tar的命令行选项以覆盖此行为,但找不到任何。我也尝试过cpio,同样的问题,也找不到任何替代它的选项。我也尝试过7z(同上)。与相同pax。我什至尝试过zip,这让自己感到困惑。 编辑:查看GNU tar和GNU cpio的源代码,看来他们两个都无法做到这一点。至少,并非没有严重的欺骗手段(不能禁用对设备文件的特殊处理)。因此,建议您使用严重的欺骗手段或使用其他实用程序。 TLDR:是否有一些存档程序可以将多个磁盘映像打包在一起(从原始设备中获取)并流输出输出,而无需进行额外的磁盘副本?我的偏好将以通用格式输出,例如POSIX或GNU tar。
13 tar  disk-image  cpio 

3
使用vim命令自动执行Bash
在bash中,当发出vim比路径深两个目录的命令时,路径的自动补全最近已停止工作(它按预期与其他命令(如ls和cd)一起正常工作。 例如,如果我键入ls .config/btsync/bt然后按TAB键,它将展开为ls .config/btsync/btsync.conf。 如果我键入vim .config/bt然后按TAB键,它将展开为vim .config/btsync/。 但是,如果我键入vim .config/btsync/bt然后按TAB键,则什么也不会发生(我希望它会扩展为vim .config/btsync/btsync.conf,如上ls例所示)。 当以我自己的用户身份运行和以su身份运行时,我遇到相同的问题。 我读了这篇文章,其中提到较早版本的bash-completion有问题,但我正在运行2.1-5。 更新:经过一些额外的测试,我发现根本问题是bash 仅会完成目录名称,而不会完成文件名。 更新:事实证明,这bash-completion是总体原因。请参阅我对已接受答案的第二条评论。 如有任何关于此行为潜在原因的建议,我们将不胜感激!

1
按第一列然后第二列对文件进行排序
如何通过按第二列的第一个元素排序来处理两列制表符分隔的文本文件(仅当第一列元素相同时)? 范例: 输入文件1 A 1-2 A 6-8 A 3-4 B 7-10 B 5-9 预期输出:文件2 A 1-2 A 3-4 A 6-8 B 5-9 B 7-10
13 sort 


1
让tmux等到我SSH进入,以完成其余的Tmuxinator脚本
在最近发现tmux和Tmuxinator之后,我一直在尝试建立要使用的开发环境。 根据协议,我们不允许将密码/密码存储在脚本中。因此,我要寻找的是等待tmux等待SSH隧道建立(提供密码,按输入并登录)。 我知道在tmux 1.8+中有一个“ wait-for”命令。我正在通过Cygwin运行1.9a。但是,即使我已经阅读了文档,也很难理解它。 tmux new-session -s development -n editor -d tmux split-window -v tmux split-window -v "Need to send to all panes. tmux send-keys -t development 'ssh user@example.com' C-m 因此,这是我所拥有的非常简单的版本。 有什么想法吗?我知道我可以同步会话,但是我仍然在解决这个问题。 编辑:查找命令,然后从窗格中将变量从同步窗格拉到命令。在我弄清楚如何让TMUX提示我输入用户信息之前,这可能是一种“更好”的方法。 可能会发出功能请求。
13 linux  ssh  tmux 

5
无法检索存储库的metalink:fedora / 20 / i386
我使用liveOS安装了Fedora 20。 在进行更新时,我得到以下结果: [root@localhost bioinfo]# yum update Loaded plugins: langpacks, refresh-packagekit Error: Cannot retrieve metalink for repository: fedora/20/i386. Please verify its path and try again 如何解决此错误?
13 fedora  yum 

1
为什么驱动器的大小有两个不同的值,以及如何与device-mapper和LVM协调它们?
我有一个通过USB连接的1 TB驱动器。它包含一个LVM 物理卷,它填充了整个设备(没有任何分区表)。当我尝试通过使用整个PV 扩展逻辑卷时,设备映射器开始抱怨LVM在PV上分配的部分大于设备。来自设备映射器的错误消息(如所示dmesg)报告的大小为1953320367 [dm]扇区: device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367 但是LVM创建了具有238467个物理范围的PV ,这是1953521664 [lvm]个扇区(大约多了100 MB): $ pvdisplay /dev/sdf --- Physical volume --- PV Name /dev/sdf VG Name apu-vg1 PV Size 931.51 GiB / not usable 1.71 MiB Allocatable yes PE Size 4.00 MiB Total PE …

4
奇怪的SSH问题,ssh与-t一起使用,但在没有它的情况下冻结
当我ssh进入其中一台服务器时,它似乎已登录,但是在提示我(message debug2: shell request accepted on channel 0 is the last log entry)之前挂起。 尽管奇怪的是,ssh -t "/bin/bash"什么时候ssh没有起作用。 到目前为止我发现了什么 我可以正常从相同地理位置的服务器正常登录 如果ssh -t '/bin/bash'可以-我可以从任何位置完美登录。 如果我使用rsync 到服务器,它似乎工作,然后锁 如果我rsync 从服务器上使用,它可以正常工作 我尝试过的 删除或更改所有登录选项.profile,.bashrc /etc/profile 从运行正常的同一台服务器上将ssh_config and和(或) 更改sshd_config为一个 我检查了路由 我有一位网络专家进行了检查tcpdump,但无济于事(尽管确实有很多重新传输) 我真的想不到 除了狡猾的网卡驱动程序/固件。
13 shell  ssh  login 

1
ULOG和NFLog有什么区别?
许多地方建议使用ULOG或NFLOG代替LOG来获取专用的netfilter日志记录(例如,请参见此处或此处)。 从man iptables看那两个看起来很相似。除了NFLOG讨论某些“ nfnetlink_log后端”,而ULOG不讨论任何后端。 有什么不同? 是否有使用其中一种的典型情况?
13 linux  iptables  logs 

1
ionice是否可以与截止时间计划程序一起使用?
我的Debian Wheezy系统使用deadline调度程序。我习惯于ionice在繁忙的时间重新安排磁盘密集型作业的I / O优先级,而且这似乎有所帮助(但我没有确凿的证据)。 该ionice手册页,核心文件和本文件的OpenSUSE都表明,只有cfq调度考虑ionice干预措施。他们没有明确声明其他调度程序会忽略它,但是他们提到的唯一一个是cfq。 特别是其他调度程序是否deadline与之合作ionice?

1
通过openvpn隧道路由公共ipv6流量
我正在尝试通过vpn隧道路由IPv6流量。这样,我应该能够在不支持IPv6的网络中使用IPv6。 我有一个分配了IPv6块的VPS。我想用于openvpn客户端的部分代码块。我想到的范围是2001:db8::111:800:0/112(前缀是匿名的),因为openvpn仅支持/ 64和/ 112作为子网。 通过隧道的IPv6已经可以正常工作了,我可以从客户端ping服务器(2001:db8::111:800:1),也可以在服务器(2001:db8::111:100:100和2001:db8:216:3dfa:f1d4:81c0)上进行接口。 但是,当尝试从客户端ping google.com时,我没有响应(ping超时)。为了调试此问题,我使用tcpdump捕获了服务器上的流量,并且可以看到ping数据包发出了,但是没有回信。将日志规则添加到ip6tables可以看到相同的数据包,但是没有任何结果。 我使用了一个在线traceroute工具,该工具从服务器获取超时。我还尝试直接在接口上设置ip,这确实导致ip(2001:db8::111:800:1001)可以访问,因此我认为这是路由问题。 我已通过启用了ipv6转发/proc/sys/net/ipv6/conf/all/forwarding。ip6tables具有允许所有链条使用的策略。 我的问题是,Linux究竟需要什么来接受未分配给接口的ip的数据包并进一步路由它?仅存在的一条路线似乎还不够。 这是我的客户端和服务器的设置。如果需要更多信息,请告知。 客户 # ip -6 addresses 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100 inet6 2001:db8::111:800:1001/112 scope global valid_lft forever preferred_lft forever # ip -6 routes 2001:db8::111:800:0/112 dev tun0 proto kernel metric 256 2000::/3 dev tun0 metric 1024 服务器 # ip …
13 routing  openvpn  ipv6 

5
用于字符串替换的非面向行工具?
我最近问了一个问题,如果换行符出现在另一个特定字符之后,该如何删除。 Unix文本处理工具非常强大,但是几乎所有工具都处理文本行,这在输入适合可用内存的大多数情况下都是可以的。 但是,如果我希望在不包含换行符的巨大文件中替换文本序列,该怎么办? 例如替换<foobar>为\n<foobar>而不逐行读取输入?(因为只有一行,而且长度为2.5G个字符)。



4
如何在保持空行的同时用awk删除重复的行?
下面的awk命令删除所有重复的行,如下所示: awk '!seen[$0]++' 如果文本包含空行,则将删除除一个空行以外的所有行。 如何仅使用保留所有空行,同时删除所有非空重复行awk?请也提供简短的说明。
13 awk 

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.