Unix & Linux

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

1
4.0及更高版本的Linux内核中的USB驱动程序有何变化?
内核高达3.19,我所有的USB设备都能完美运行。 在升级到4.0或更高版本时,我的某些USB设备停止工作,并且内核产生如下错误: [ 3.369436] usb 9-1: device descriptor read/64, error -62 [ 3.593543] usb 9-1: new full-speed USB device number 4 using ohci-pci [ 3.997572] usb 9-1: device not accepting address 4, error -62 [ 4.120602] usb 9-1: new full-speed USB device number 5 using ohci-pci [ 4.524792] usb 9-1: …
8 linux  kernel  usb  dvb 


5
如何以编程方式检测awk风味(例如gawk vs nawk)
我使用的命令行应用程序实质上是bash shell脚本的集合。该应用程序被编写为可以在BSD / OSX和Linux上运行。其中一个脚本依赖于awk。它包含两个awk命令:一个是为nawk编写的(标准BSD awk实现),另一个是为gawk编写的(GNU awk实现)。 有问题的两个awk命令与不同的环境不兼容。特别是当与gawk一起运行时,nawk命令失败。该脚本检查内核名称(即uname -s)以确定主机环境,然后运行适当的awk命令。但是,我更喜欢在安装了GNU核心实用程序的Mac OS X上工作,因此脚本无法正确运行。 在思考如何最好地修复此错误的过程中,我想到,很高兴知道如何以编程方式区分常见命令行实用程序的不同样式,最好以相对健壮和可移植的方式进行区分。 我注意到nawk不接受'-V'标志来打印版本信息,因此我认为应该执行以下操作: awk -V &>/dev/null && echo gawk || echo nawk 另一个变化可能是: awk -Wversion &>/dev/null && echo gawk || echo nawk 这似乎适用于我的两个测试环境(OS X和CentOS)。这是我的问题: 这是最好的方法吗? 有没有一种方法可以扩展它以处理awk的其他变体(例如,awkk,jawk等)? 甚至值得担心其他版本的awk吗? 我还应该提到我对awk知之甚少。

2
如何防止在sudo中使用调用方的shell
我在CentOS 6.5上运行sudo-1.8.6。我的问题很简单:如何防止SHELL从用户环境传播到sudo环境? 通常人们会选择另一种方式-他们想要保留环境变量。但是,我的用户“ zabbix”的shell /sbin/nologin尝试通过sudo运行命令时遇到问题。Sudo保留,/sbin/nologin以便root无法运行子shell。(更新:这部分是正确的,但不是SHELL环境变量。这是从/ etc / passwd中提取的shell值。) 我提供了一个可以说明问题的测试;这不是我的实际用例,而只是说明保留了调用用户的SHELL。我有一个以用户身份运行的程序zabbix。它调用/usr/bin/sudo -u root /tmp/doit(程序作为zabbix守护程序运行,因此/sbin/nologin密码文件中的shell不会阻止它运行)。/tmp/doit是一个shell脚本,仅具有: #!/bin/sh env > /tmp/outfile (模式显然是755)。在outfile我可以看到的SHELL是/sbin/nologin。但是,此时脚本通过sudo以root身份运行,因此它不应该具有先前用户的环境变量,对吗? 这是我的/ etc / sudoers: 默认要求 默认值!visiblepw 默认为always_set_home 默认值env_reset 默认值env_keep =“颜色显示主机名历史记录输入INPUTRC KDEDIR LS_COLORS” 默认值env_keep + =“邮件PS1 PS2 QTDIR用户名LANG LC_ADDRESS LC_CTYPE” 默认值env_keep + =“ LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES” 默认值env_keep + =“ LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER …

1
使用gpg-agent-connect工具重建ssh私钥文件
~/.ssh/id_dsa由于忘记了密码,我无法访问我的文件(DSA算法中的OpenSSH私钥文件)。 但是,最初,我已经将它导入gpg-agentgpg-agent密码并用gpg-agent密码保护了,我确实知道。而且gpg-agent即使现在我仍然希望使用存储在中的内容重建OpenSSH私钥文件,私钥仍然可以正常工作gpg-agent。 使用gpg-connect-agent工具,通过以下命令序列,尽管我不知道如何将其重构为原始的OpenSSH私钥文件格式,但我认为它能够提取私钥(十六进制/ ascii格式): 开始gpg-connect-agent与--hex选项。 在>提示符下,使用keyinfo --ssh-list命令获取密钥的十六进制ID (确切地说,这是提供密钥十六进制ID的第三个字段)。 在>提示符下,执行keywrap_key --export。 在>提示符下,执行export_key <enter hex ID from step 2>或export_key --openpgp <enter hex ID from step 2>。 现在,在提示输入密码短语,接收并确认密码之后,该gpg-connect-agent工具将显示几十行十六进制和ASCII码,我高度怀疑这是我最初导入的ssh私钥。 然后,它显示OK,肯定表示操作成功。 假设显示的确实是我的ssh私钥(按照“ help export_key”,转储到屏幕上的是密钥的aeswrap-128加密版本;很可能是用我已知的gpg-agent密码加密的),有关如何使用将信息转换为传统的ssh私钥格式将不胜感激(使用perl / python / shell / C程序将是一个加分项!)。
8 gpg-agent 

2
如何将Mutt与本地存储,IMAP和即时推送新电子邮件一起使用?
我正在考虑切换到mutt电子邮件。但是,我有一些要求。 我希望能够离线存储电子邮件。 我希望将电子邮件立即发送到本地计算机,而不是定期轮询(例如,使用IMAP IDLE)。 对于离线存储,我可以使用imapoffline或isync。我知道后者更稳定。但是,要按需推送电子邮件,我为isync找到的唯一选择是mswatch。不幸的是,这需要在远程电子邮件服务器上安装程序,而这是不可能的。有没有可以让我使用的解决方案mutt,以及离线电子邮件存储和即时电子邮件传递功能?
8 email  mutt 

1
如何通过apt安装最新的clang 3.8
在这里,我找到了如何安装clang3.8的说明:http ://llvm.org/apt/ 所以我执行了: wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add - 结果: --2015-09-19 12:53:09-- http://llvm.org/apt/llvm-snapshot.gpg.key Resolving llvm.org (llvm.org)... [sudo] password for user: 192.17.58.186 Connecting to llvm.org (llvm.org)|192.17.58.186|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3145 (3,1K) [application/pgp-keys] Saving to: ‘STDOUT’ 100%[======================================>] 3.145 --.-K/s in 0,002s 2015-09-19 12:53:10 (1,87 MB/s) …
8 linux-mint  apt  clang 


3
grep如何确定文件是二进制文件?
我有一个很大的utf-8文本文件,经常使用来搜索grep。最近grep开始报告它是一个二进制文件。我可以继续使用搜索它grep -a,但是我想知道是什么更改决定了文件现在是二进制文件。 我有上个月的副本,该文件不再被检测为二进制文件,但是对diff他们来说不切实际,因为它们的差异超过20,000行。 file 将我的文件标识为 UTF-8 Unicode英文文本,行很长 如何找到字符/行/等。在我的文件中哪些触发了此更改? 类似的,非重复的问题19907涵盖了NUL的可能性,但grep -Pc '[\x00-\x1F]'说我没有NUL或任何其他ANSI控制特性。

4
gnome-terminal停止工作
gnome-terminal 3.16.2-1系统更新后,我停止了工作。我在跑步Linux arch 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linux。 启动时我会收到 Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8 谷歌搜索问题告诉我重新设置区域设置。为此,我打开/etc/locale.gen并确保en_US.UTF-8 UTF-8未添加注释。 然后我跑去sudo locale-gen生成语言环境。最重要的是,我还奔跑localectl set-locale LANG=en_US.UTF-8并重新启动。 当问题首次出现时,我确实收到了一条与语言环境有关的错误消息。完成上述步骤后,这些错误消息消失了,但gnome-terminal仍然无法正常工作。上面的错误信息仍然存在。 我可能会观察到的奇怪行为: 我的Nautilus文件管理器不会从桌面快捷方式启动,但可以从控制台启动而不会出现问题。 gnome-terminal 以root身份运行时不会启动。 locale 输出: LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC=de_DE.UTF-8 LC_TIME=de_DE.UTF-8 …

1
跟踪Linux / ARM中的库调用的工具
我正在寻找一种工具,该工具可以跟踪对Linux / ARM共享库中的函数的调用。基本上,我希望能够指定一个命令行,并让该工具生成记录的被调用库函数和传递的参数。我想象某种形式的函数挂钩可以用于此目的。 我知道ltrace,它提供了我所需的功能。但是,ltrace它不适用于我: 跟踪更复杂的程序时通常会出现段错误。 非常慢 我正在寻找一个更强大的替代方案。速度不错,但不是我最关心的。首先,我希望有一种跟踪库调用的方法,该方法可以分析任何(非规避)程序。 Sysdig在ARM中也不起作用,并且dtrace的端口仅在NetBSD中仍在beta中工作。 有人知道这种工具处于可用状态吗?

1
限制网络速率,但允许每个TCP连接突发,然后限制
我们有一个Cisco路由器,它允许速率限制(他们称其为管制),但允许在每个TCP连接的基础上爆发。例如,我们可以将带宽限制为50兆位,但是直到传输4兆字节时才会施加该限制。这是对每个建立的TCP连接强制执行的。 在Linux中有什么方法可以做到这一点吗?此外,这种解决方案是否有任何弊端?如果对任何人都有用,则用于设置突发的Cisco命令是根据策略映射(至少在我们的ASA 5505上)运行的Police命令的第三个参数。 这样做的目的是允许服务器利用95/5突发事件并为普通用户尽快提供网页服务,但减少超过5%的时间突发事件的可能性(例如,如果使用服务器对服务器进行操作)传输或从网站下载大文件)。我了解DDoS攻击持续的时间太长了,这可能不是解决方案,但是由于各种原因,在这里不必担心。


2
如何静默丢弃一些外发数据包?
我正在对正在使用的应用程序进行一些测试,并且需要能够在短时间内静默丢弃传出UDP数据包,以复制可能的故障模式。 有什么办法吗? 注意:iptables DROP 对于传出消息,请保持沉默!当通过send()挂断一个或类似的呼叫时iptables,它EPERM出于某种奇怪的原因而返回(请参阅此处。不幸的是,我无法使用该应答,因为我的目的地在单个跃点之外)。 xtables-addons 曾经有一个STEAL动词,但几年前我就找不到原因将其删除。 我现在已经尝试在路由表中使用虚假路由,但不幸的是,这似乎破坏了两个方向的通信流量。 对于我需要做的测试,我必须允许入站 UDP流量,并且一旦我安装了虚假路由,流进来的数据包就会立即停止,尽管源仍在发送它们。

5
如何删除以“>”或其他不寻常字符开头的文件
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 4年前关闭。 我不小心创建了一个名为 > option[value='2016'] 如何删除? My attempts: $ rm "> option[value='2016']" rm: cannot remove ‘> option[value='2016']’: No such file or directory $ rm \> o* rm: cannot remove ‘>’: No such file or directory rm: cannot remove ‘o*’: No such file or directory $ …
8 files  rm 

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.