Unix & Linux

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

3
Linux内核如何处理共享的IRQ?
根据到目前为止的读物,“当内核收到中断时,将调用所有已注册的处理程序。” 我了解每个IRQ的已注册处理程序都可以通过进行查看/proc/interrupts,并且我也了解已注册处理程序来自调用了request_irq传递大致形式的回调的驱动程序: irqreturn_t (*handler)(int, void *) 根据我所知道的,应该调用与特定IRQ相关的每个中断处理程序回调,并且由处理程序确定是否确实应由该中断处理该中断。如果处理程序不应该处理特定的中断,则它必须返回内核宏IRQ_NONE。 我无法理解的是,每个驱动程序如何确定是否应该处理中断。我想如果他们期望中断,他们可以在内部保持跟踪。如果是这样,我不知道他们将如何处理同一个IRQ后面的多个驱动程序都希望中断的情况。 我试图了解这些细节的原因是因为我弄乱了在kexec系统操作过程中重新执行内核的机制,同时使用了PCIe桥以及下游PCI上的复位引脚和各种寄存器设备。这样做时,重新启动后,我可能会出现内核崩溃,或者其他驱动程序抱怨即使没有进行任何操作,它们也会收到中断。 处理程序如何决定应由其处理中断是一个谜。 编辑:如果相关,则所讨论的CPU体系结构为x86。
14 linux  kernel  pci  interrupt  irq 

5
sed将4个空格转换为2
如何将4个空格转换为2个空格sed?可能吗? 我发现了这一点,但是它将制表符转换为空格: sed -r ':f; s|^(\t*)\s{4}|\1\t|g; t f' file
14 sed 

2
从已经运行的脚本重定向stderr
我已经运行脚本好几天了。我将stdout重定向到$HOME/mylog,但没有重定向stderr,因为我认为上面没有任何内容。突然,成千上万的线路开始在stderr上运行,所以我暂停了工作。$HOME/myerr从现在开始,是否有一种方法可以将stderr重定向到,而无需重新启动脚本? 我在盒子上有sudo访问权限,它是OSX。 也许有一些使用工具陷阱的东西? 我不会丢失脚本到目前为止所做的工作,并从头开始重新启动它。有没有一种方法可以在磁盘上“转储内存中的对象”,冻结程序,编辑变量(例如文件描述符)并使用新的上下文恢复?

3
为什么运行新的shell时$ SHELL不变?
$ echo $SHELL /bin/bash $ /bin/ksh93 $ echo $SHELL /bin/bash $ file /bin/ksh93 /bin/ksh93: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped $ getent passwd test111 test111:x:1008:1008:,,,:/tmp:/bin/ksh93 $ ssh test@localhost test@localhost's password: $ echo $SHELL /bin/ksh93 $ bash $ echo $SHELL …

8
如何仅删除目录的内容?
我在一个文件夹中:/var/myfolder。 里面还有一些其他文件夹,例如:/var/myfolder/A/ /var/myfolder/B/ `/var/myfolder/C/etc。 每个文件中都有一些带有随机名称的文件。如何从内部所有文件夹中删除所有文件/var/myfolder? 结构(内部的所有目录,例如A,B,C等/var/myfolder)应保持完整。
14 shell  files 

2
tmux等效于GNU屏幕的:wrap模式
我是一位长期尝试使用tmux的屏幕用户。我使用的一个屏幕功能是能够截断Ctrla :set wrap输出。当拖尾日志文件或跟随几行几百个字符的编译会话时,此功能特别有用。 我已经阅读了该man页面,并在Google上进行了广泛搜索,无法找到等效的命令,也无法找到使用Shell命令的可行方法。我能想到的最接近的是less -S将所有内容传送到管道,并减少进入“跟随”模式。
14 tmux 

3
将十进制打印为ASCII字符,我的命令未按预期输出
我想使用以下命令输出所有ascii字符的字符串 for i in `seq 32 127`; do printf "%c" $i; done 上面命令的输出是: 33333334444444444555555555566666666667777777777.............. 它是每个数字的第一个(从左到右)数字。 通过这个站点,我遇到了问题的答案如何在CLI中打印所有可打印的ASCII字符?,但是我仍然不明白为什么我的原始代码片段没有按预期输出ascii字符。



3
Linux中“ OS X式”动量滚动?
有没有办法使Linux计算机(运行X11)上的滚动更像OS X的自然滚动?“自然滚动”是指您可以轻扫页面的事实,即滚动有动力。 我有一台运行Arch Linux的Macbook,我想使触控板的体验更好一些。

1
rsync:如何排除最顶层的目录
因此,我有一个看似简单的问题,但到目前为止,我还没有找到解决方案:我想从rsync中排除最顶层的目录,同时仍同步其所有子目录。特殊的问题是我无权修改最顶层目录的时间,但希望所有子目录都具有正确的同步时间。 我正在使用的rsync命令如下: rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/ 和server.example.com:/usr/local/directory/看起来像这样: drwxrws--- 5 root staff 24576 Jul 9 15:00 . (我的本地用户是的成员staff) 当我运行rsync时,出现以下错误: rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9] make: *** [pub_to_mel_internal] Error …
14 rsync 


3
如何指示BSD sed解释\ n和\ t之类的转义序列?
我有一个sed替换命令,希望与BSD sed以及GNU 兼容sed。扩展正则表达式不是问题,因为在这种情况下,我不需要它们。我的主要问题是两个seds解释替换字符串中字符转义序列的方式不同。我的替换字符串包含制表符和换行符,并且我希望它们在命令字符串中可见以便于维护,但是BSD sed不会解释转义序列,而GNU sed 会解释。有什么合适的方法来指示sed在BSD上解释这些转义序列?以下两个片段概括了我的问题: GNU sed echo ABC | sed 's/B/\n\tB\n' 产量 A B C BSD sed echo ABC | sed 's/B\n\tB\n' 产量 AntBnC 显然,\n和\t不会被解释为通过BSD转义序列sed 现在,我的问题。根据BSD手册sed: 要在替换字符串中指定换行符,请在其前面加上反斜杠。 这是否意味着我需要在文字换行符之前加反斜杠?有什么合适的方法来指示sed解释\n替换文本中的转义序列?
14 sed  bsd 

6
Telnet发送Ctrl-C
我使用telnet连接到终端服务器,该服务器代理到RS-232端口的通信。 不幸的是,在使用某些设备时,无法发送CTRL+ C字符(0x03)。似乎没有发送字符,而是本地客户端捕获了击键,而我处于“其他模式”。我想要的只是发送一个角色。 为了调试,我一直在玩: ^] toggle termdata 和 ^] toggle options 当我在不起作用的终端服务器上按CTRL+ 时,会发生以下情况C: telnet 10.10.129.101 2012 Trying 10.10.129.101... Connected to termserv-val3 (10.10.129.101). Escape character is '^]'. ^] telnet> toggle options Will show option processing. ^] telnet> toggle termdata Will print hexadecimal representation of terminal traffic. SENT IAC IP SENT DO …

2
有没有办法在ZFS中创建母牛副本?
我正在尝试复制某些文件/目录,但据我所知的几种方式,它们似乎都不理想。 例如,btrfs可以使用cp --reflink=auto快速生成文件的文件副本。 我尝试过的 符号链接:不好。重命名文件,链接断开。 硬链接:更好,但仍然不好。更改一个文件会更改另一个文件,而我不一定要更改另一个文件。 创建数据集的快照,然后克隆快照:可以,但是效果不佳。通常,我不是在寻找整个数据集的副本,也不是让副本像另一个数据集一样工作。然后在克隆/快照/原始文件之间存在父/子关系,据我所知,即使不是不可能打破的,这也很难。 使用zfs send/receive和启用dedup,将数据集复制到新的数据集:这避免了使用克隆的父/子关系,但是仍然不必要地创建另一个数据集,并且仍然受累于必须100%读取文件和再次引用而不是写入的块。 复制文件并让dedup发挥作用:这可行,但是速度很慢,因为必须100%读取文件,然后再次引用块而不是写入。 zfs的发送/接收以及物理复制或rsync的速度进一步恶化,因为大多数事物都被压缩存储,并且在读取过程中必须先解压缩,然后在dedup插入引用重复块之前进行压缩。 在我的所有研究中,我都无法找到与btrfs中--reflink的简单性相似的远程内容。 那么,有没有一种方法可以在ZFS中创建复本?还是“物理地”复制并让dedup做其工作是唯一的真实选择?
14 freebsd  zfs 

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.