Unix & Linux

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

3
在Linux上“离线”运行子进程的命令(无外部网络)
我有一个程序要在脱机模式下进行测试,而又不中断我的实际网络。该程序仍然需要连接到本地套接字,包括Unix域套接字和环回。它还需要侦听回送并且对其他应用程序可见。 但是尝试连接到远程计算机应该失败。 我想有一个工具,它的工作原理是strace/ unshare/ sudo,只是运行在互联网(和LAN)隐蔽和一切仍在工作的命令: $ offline my-program-to-test 该问题的答案提示:阻止进程的网络访问? 那里有一些建议,例如以其他用户身份运行然后操纵iptables或unshare -n。但是在两种情况下,我都不知道要与主系统共享unix域套接字和环回的诱惑-该问题的答案仅告诉我如何取消共享整个网络。 我正在测试的程序仍然需要连接到我的X服务器和dbus,甚至还能够在环回侦听来自系统上其他应用程序的连接。 理想情况下,我想避免创建chroot或用户或VM等,因为它就像拔掉网络电缆一样令人讨厌。即问题的关键是我怎样才能使它简单如一个sudo。 我希望该过程能够正常运行100%,除了指定非本地地址的网络调用会失败。理想情况下,保持相同的uid,相同的homedir,相同的pwd,相同的所有内容,除了...离线。 我使用的是Fedora 18,因此无法移植的Linux回答就很好(甚至期望)。 我什至很乐意通过编写C程序来解决此问题,如果涉及到这一点,那么涉及编写C的答案就可以了。我只是不知道C程序在保留本地网络的同时撤销外部网络访问权限时需要执行什么系统调用。 任何尝试支持“离线模式”的开发人员都可能会喜欢此实用程序!

5
如何将IP范围添加到known_hosts?
许多服务(例如GitHub)使用各种IP,并且显然使用相同的公钥。 如何将IP范围(最好是单个)添加到known_hosts文件? 对于GitHub示例,它使用以下范围: 207.97.227.224/27 173.203.140.192/27 204.232.175.64/27 72.4.117.96/27 192.30.252.0/22 关键是: AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / YMF + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==
15 ssh 

3
如何实时显示命令输出的行数?
我正在使用svn export打包程序脚本作为我的应用程序的一部分,并且与许多其他命令一样,此命令似乎没有任何进度条。 目前,我有两种选择: 在没有选项的情况下使用它,并观看它打印数千行 使用--quiet,直到完成后才开始使用。 有没有办法至少实时显示命令输出的行数?如: Exporting SVN directory ... 1234 files 并1234 实时看到这个数字的增加?我可以想象将输出管道到可以执行此操作的命令,但是哪一个呢?

1
使用WACOM数位板笔滚动
我有一个带按钮的wacom笔。按下按钮移动笔时如何触发滚动? 根据xev下文,触发事件是状态为0x200的MotionNotify。 如果这不是一件容易的事,那么我要建立一个服务来从某个地方读取这些事件并将它们转换为其他事件。这样,我也可以定义手势。使用这种方法: 我在哪里可以阅读? 如何写回事件? 是否有用于检测手势的库? MotionNotify事件,序列号33,合成NO,窗口0xc00001, 根0x2ce,子0x0,时间695630659,(349,181),根:(1255,185), 状态0x0,is_hint 0,same_screen是 ButtonPress事件,序列号33,合成NO,窗口0xc00001, 根0x2ce,子0x0,时间695630659,(349,181),根:(1255,185), 状态0x0,按钮2,same_screen是 MotionNotify事件,序列号33,合成NO,窗口0xc00001, 根0x2ce,子0x0,时间695630667,(348,183),根:(1254,187), 状态0x200,is_hint 0,same_screen是 MotionNotify事件,序列号33,合成NO,窗口0xc00001, 根0x2ce,子0x0,时间695630675,(347,184),根:(1253,188), 状态0x200,is_hint 0,same_screen是 ... MotionNotify事件,序列号33,合成NO,窗口0xc00001, 根0x2ce,子w0x0,时间695632069,(327486),根:(1233,490), 状态0x200,is_hint 0,same_screen是 ButtonRelease事件,序列号33,合成NO,窗口0xc00001, 根0x2ce,子w0x0,时间695632069,(327486),根:(1233,490), 状态0x200,按钮2,same_screen是
15 linux  xorg  hardware  wacom 

8
如何执行多行grep
您将如何对出现在两行上的文本执行grep? 例如: pbsnodes 是我使用的命令,该命令返回Linux集群的利用率 root$ pbsnodes node1 state = free procs = 2 bar = foobar node2 state = free procs = 4 bar = foobar node3 state = busy procs = 8 bar = foobar 我想确定与处于“ free”状态的节点匹配的proc的数量。到目前为止,我已经能够确定“进程数”和“处于空闲状态的节点”,但是我想将它们组合成一个显示所有空闲进程的命令。 在上面的示例中,正确答案将是6(2 + 4)。 我有的 root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l` root$ echo …

3
内核:命名空间支持
我想知道Linux内核中“命名空间支持”功能到底意味着什么。我正在使用内核3.11.1(当前最新的稳定内核)。 如果我决定禁用它,我是否会注意到系统上的任何更改? 如果有人决定使用名称空间,仅NAMESPACES=Y在内核中进行编译就足够了吗,还是他还需要用户空间工具?

2
\ e和^ [之间的区别
吉尔斯写道: 字符27 = 033 = 0x1b = ^[=\e Demizey 写道: ^ [只是ESCAPE的表示形式,\ e被解释为实际的ESCAPE字符 然后我还从TechRepublic的文章中找到了这一行 确保将键序列写为\ e [24〜而不是^ [[24〜。这是因为^ [序列等效于[Esc]键,该键在外壳程序中由\ e表示。因此,例如,如果键序列为^ [[OP,则要使用的最终绑定代码将为\ e [OP。 但是我一直在使用使用^ [而不是\ e的映射。 那么它们可以互换吗?我什么时候需要使用一个而不是另一个?

3
为什么隐藏以点开头的文件名?我可以不使用点作为第一个字符来隐藏文件吗?
最初我以为这是一个巧合,但是现在我看到了甚至还有一个标签:所有隐藏的文件名都以点开头。这是惯例吗?为什么选择它?可以更改吗?或换句话说(如相关问题@evilsoup所暗示的,这暗示着其他答案):我可以隐藏文件而不重命名文件(.用作文件名的第一个字符)吗?

3
加快gzip压缩
是否可以加快gzip流程? 我在用着 mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz 将数据库备份到目录中$BACKUP_DIR。 联机帮助页上说: -#--fast --best 使用指定的数字#调节压缩速度,其中-1或--fast表示最快的压缩方法(较少压缩),而-9或--best表示最慢的压缩方法(最佳压缩)。默认压缩级别为-6(即,偏向于高压缩,而牺牲了速度)。 使用效果如何--fast? 这是否有效降低了现代计算机上的CPU使用率? 我的测试结果 我没有注意到任何加速: 7分47秒(默认比率-6) 8分36秒(比率--fast(= 9)) 因此,使用快速压缩似乎需要更长的时间? 只有更高的压缩率才能真正减慢速度: 11分57秒(比率--best(= 1)) 获得创意之后,lzop我也进行了测试,它确实更快: 6分钟14秒 lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo

1
执行功能参数提供的命令
我试图在bash脚本中创建一个函数方法,该函数方法执行由参数提供给该方法的命令。 意思是这样的: special_execute() { # Some code # Here's the point where the command gets executed $@ # More code } special_execute echo "abc" 我已经尝试过我$@,"$@",$*,"$*"我怎么能这样做呢?

2
如何后台执行命令链?
我想像这样的命令链作为背景cp a b && mv b c && rm a。 我尝试做,cp a b && mv b c && rm a &但这仅是最后一个过程的背景。 如何为命令链设置背景?

1
在Linux中如何计算umask?
因此,我知道umask可以使用这种格式限制特权用户umask ugo。 我知道read = 4,write = 2和exec =1。但是,当我键入时umask,它将返回4位数字,即0022or 0073。我不知道现在如何工作,因为还有一个数字。那多余的数字是什么0022?
15 umask 

4
从一台远程服务器到另一台远程服务器的scp
我有一个大的服务器上的文件one,我想将它复制到服务器two使用scp。我已经正确设置了密钥,并且可以从台式机ssh / scp到这两个服务器。 我需要复制的文件大于工作站硬盘上的可用空间,因此我想这样做: scp one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz 但是我得到了: ssh: Could not resolve hostname one: Name or service not known 我们这里没有DNS(不要问我为什么),所以我在〜/ .ssh / config中有它: Host one Hostname <IP address of server one> User jspurny Host two Hostname <IP address of server two> User jspurny 如果我尝试使用较小的文件并将其从传输one到我的工作站,然后再传输到two,则可以正常工作: scp one:/opt/smallerfile.tar.gz . scp smallerfile.tar.gz two:/opt/ …
15 debian  scp 

2
为什么我的rsync不允许块大小> 128K?
使用大* 运行rsync,--block-size如下所示: rsync -avvz --rsh 'ssh -c arcfour' --block-size 1048576 --inplace --progress example.com:/big.file /big.file 我收到以下错误: Invalid block length 1048576 [sender] 两端都运行64位CentOS 6.4。从谷歌搜索中,我看到--block-size使用了更高的值,为什么这对我不起作用? * 我使用的是大块数据块,因为我正试图解决一个错误,即rsync会将CPU永久旋转44%到300GB文件中
15 rsync 

3
何时在Shell脚本中使用重定向到stderr
我知道行为良好的实用程序,例如grep,会将“正常”消息输出到stdout,将错误消息输出到stderr。 $ grep '^foo' file1 file2 file1:foo grep: file2: No such file or directory 当我自己编写shell脚本时,我经常发现很难决定应该在stderr上显示什么输出和哪些消息,或者是否应该打扰。 我想了解一种良好的做法:什么时候将某些消息重定向到stderr是合理的,什么时候不可行? 当然,“取决于情况”,但是您是否有一些见解可以帮助我做出这些决定? 为了使这个主观问题适合格式,我想鼓励回答“为什么”的答案,并以经验为基础,并在可能的情况下以事实为依据。

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.