小编gol*_*cks的帖子

我可以强制`man`进行小写敏感匹配吗?

当我搜索手册页时,搜索区分大小写,但仅限于大写字母。例如,x将匹配xXX只匹配x。这是man-dbman的版本,默认用于 Fedora 派生系统,也可用于其他系统。 man man说默认寻呼机是less -s. $LESS未在环境中定义,my$PAGER只是less,并且我没有 less 的别名。

这不是我less自己调用时的行为。

无论如何,在使用时是否强制小写字母x只匹配小写字母?xman

less man search case-sensitivity

10
推荐指数
1
解决办法
939
查看次数

Rsyslog `logger` 消息重复

我刚刚遇到了 rsyslog 的 imjournal 模块的问题,可能是这里描述的问题,即 systemd 日志导致的并发症

日志在一个紧密的循环中无休止地返回相同的数据。这会导致 rsyslog 中的大量消息重复,可能会在系统资源耗尽时导致拒绝服务

无论如何,它确实使处理器最大程度地消除了几个月前的重复消息。我没有意识到 rsyslog 和 journald 在默认情况下是如此紧密耦合,所以我重新配置了前者,使用更传统、更高效的实时套接字作为输入,按照以下说明

$ModLoad imuxsock
$OmitLocalLogging off
Run Code Online (Sandbox Code Playgroud)

就创建和使用套接字而言,这似乎有效。但是,我在测试它时注意到了一个奇怪的事情。

> logger "hello world"
Run Code Online (Sandbox Code Playgroud)

结果在 中/var/log/syslog在 中提到过一次rsyslog.conf

Apr 17 10:35:45 pidora logger: hello world
Apr 17 10:35:45 pidora logger: hello world
Run Code Online (Sandbox Code Playgroud)

该消息被重复,似乎所有其他消息也是如此。有的完全一样,有的只有一个方面不同:

Apr 17 10:42:26 pidora systemd[1]: Stopping System Time Synchronized.
Apr 17 10:42:26 pidora systemd: Stopping System Time Synchronized.
Run Code Online (Sandbox Code Playgroud)

[1]是PID。我相信正在发生的事情是 rsyslog 从应用程序获取一次消息,然后从 journald 再次获取消息。 …

rsyslog systemd systemd-journald

10
推荐指数
1
解决办法
9173
查看次数

无法将亮度应用于终端的背景颜色

我的终端模拟器中的颜色有问题。我LXTerminal用作我的终端模拟器和LXDE我的桌面环境。

以下命令应该在灰色背景上打印红色文本:

printf "\n\033[1;31;40m"hello"\033[00m\n\n"
Run Code Online (Sandbox Code Playgroud)

但这不起作用。缺少灰色背景(红色文本可以)。在我的旧机器 ( Gnome/Gnome Terminal) 上一切正常

我已经尝试安装其他几个终端模拟器,但问题仍然存在。我什至不确定这个问题是否与终端模拟器有关,还是其他什么。在控制台 (CTRL+ALT+F1) 中,背景灰色在任何一台机器上都不起作用)

此问题仅限于灰色背景。所有其他颜色都可以正常工作,例如以下在绿色背景上打印红色文本。

printf "\n\033[1;31;42m"hello"\033[00m\n\n"
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何帮助。我什至不知道从哪里开始故障排除。

bash terminal-emulator terminal

8
推荐指数
2
解决办法
4318
查看次数

为什么即使有一个预先接受所有包裹的规则,包裹也会被拒绝?

我只是在阅读 iptables,最后。我有点困惑,因为来自过滤器表的输入链(已安装,fedora 17)如下所示:

target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             224.0.0.251          state NEW udp dpt:mdns
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
Run Code Online (Sandbox Code Playgroud)

根据我一直在阅读的内容,第三条规则应该接受任何内容,但事实并非如此(我必须禁用 iptables 以允许访问 sshd 或 https 服务器)。所有其他表的所有其他链都是策略 ACCEPT,没有规则,除了过滤器 FORWARD 拒绝所有内容。

那么 ACCEPT 到底有什么作用呢?

iptables -v -L

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
36625   38M ACCEPT     all  --  any …
Run Code Online (Sandbox Code Playgroud)

iptables

7
推荐指数
1
解决办法
1003
查看次数

使用“make -f”自动化的奇怪行为

我有一组目录,其中一些包含 makefile,一些 makefile 有clean目标。在父目录中,我有一个简单的脚本:

#!/bin/bash

for f in *; do
        if [[ -d $f && -f $f/makefile ]]; then
                echo "Making clean in $f..."
                make -f $f/makefile clean
        fi
done
Run Code Online (Sandbox Code Playgroud)

当它使用没有(定义的)“干净”目标的 makefile 访问目录时,这会做一件奇怪的事情。例如,给定两个目录,onetwo,包含;

一个/makefile

clean:
        -rm *.x
Run Code Online (Sandbox Code Playgroud)

两个/makefile

clean:
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,“clean”没有指令,所以如果你运行“make clean”,two你会得到:

make: Nothing to be done for `clean'.
Run Code Online (Sandbox Code Playgroud)

对比如果没有“干净”:

make: *** No rule to make target `clean'.  Stop.
Run Code Online (Sandbox Code Playgroud)

但是,对于我将要描述的问题,无论目标存在但未定义或不存在,结果都是相同的。clean.sh从父目录运行;

Making clean in one...
rm *.x
rm: cannot remove `*.x': No …
Run Code Online (Sandbox Code Playgroud)

make gnu-make

7
推荐指数
1
解决办法
2218
查看次数

bash 在运行命令时是否返回任何内容?

我找到了测试 Bash 中是否存在错误的指南。即,当

x='() { :;}; echo VULNERABLE' bash -c x
Run Code Online (Sandbox Code Playgroud)

不返回任何东西,它很脆弱。但是有没有像 C 中那样 bash 可以返回一些东西但用户看不到它的情况?

bash

7
推荐指数
1
解决办法
438
查看次数

SSH 公钥适用于 root 但不适用于用户

可能重复:
为什么我仍然收到带有公钥身份验证的 ssh 的密码提示?

我正在设置远程服务器。该sshd配置为仅使用公钥。远程机器上有两个相同的帐户.ssh/authorized_keys,因此我可以使用相同的密钥登录。两者之一是 root,当我尝试时:

ssh -i /path/to/privatekey root@remote.server
Run Code Online (Sandbox Code Playgroud)

我进去,没问题。但是,当我尝试其他(非特权)用户时:

ssh -i /path/to/privatekey bob@remote.server
Run Code Online (Sandbox Code Playgroud)

它失败。 -v显示:

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /path/to/privatekey
debug1: Authentications that can continue: publickey
debug1: Trying private key: /path/to/privatekey
**debug1: key_parse_private_pem: PEM_read_PrivateKey failed**
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/path/to/privatekey': 
Run Code Online (Sandbox Code Playgroud)

成功登录 root@server 时不会出现星号行。这也很奇怪,因为ssh-agent已经有了这个密钥的密码;我没有被问到 root@server 登录名。失败的 …

key-authentication sshd

6
推荐指数
1
解决办法
9869
查看次数

通过 shell 脚本捕获终端应用程序的屏幕截图?

问题

运行iftop5 秒钟,捕获屏幕截图并将其保存到文件中。

iftop 是一个用于可视化网络流量的漂亮程序,但它没有批处理模式,我可以运行它几秒钟并将输出捕获到文件中。

所以我的想法是

  • 使用诸如screen创建虚拟显示并iftop在其中运行之类的命令。
  • 寻找任何工具 ( screendump) 来截取screen.

关于我该怎么做的任何想法?

linux terminal images

6
推荐指数
1
解决办法
8622
查看次数

看门狗守护进程的错误代码

这是来自 linux syslog 的一行:

watchdog[2423]: shutting down the system because of error 101
Run Code Online (Sandbox Code Playgroud)

但是,在网上和中搜索后man watchdog,我找不到任何关于错误代码的讨论或解释。有没有这样的事情?

linux watchdog

6
推荐指数
1
解决办法
2296
查看次数

shell变量赋值中换行符的自动转换

这是我对这个问题的评论之一,关于bc在 shell 脚本中的使用。 bc大量换行,例如:

> num=$(echo 6^6^3 | bc)
> echo $num
12041208676482351082020900568572834033367326934574532243581212211450\ 20555710636789704085475234591191603986789604949502079328192358826561\ 895781636115334656050057189523456
Run Code Online (Sandbox Code Playgroud)

但是请注意,它们并不是变量中的真正换行符——或者至少如果不加引号使用的话,它们就不是换行符。例如,在分配中使用更多管道进行鬼混,例如:

num=$(echo 6^6^3 | bc | perl -pne 's/\\\n//g')
Run Code Online (Sandbox Code Playgroud)

我意识到,虽然确实是一个\nbc输出,检查echo $num > tmp.txthexdump示出了\n(ASCII 10)具有绝对成为变量赋值的空间(ASCII 32)。

或者至少,在 unquoted 的输出中$num >这是为什么?

正如 fedorqui 指出的那样,如果您使用引号: echo "$num",您将再次获得换行符。通过检查hexdumpecho $num > tmp.1echo "$num" > tmp.2hexdump之间的区别,这一点很明显;前者包含\(反斜杠空格)而后者包含\\n(反斜杠换行符)。

shell bc newlines

5
推荐指数
2
解决办法
785
查看次数