小编Mar*_*ter的帖子

将十六进制 IP 地址转换为主机名

我想在主机名和十六进制 IP 地址之间切换,反之亦然。我已经安装syslinux-utilsDebian Stretch,它提供了gethostip

gethostip -x google.com 
D83ACD2E
Run Code Online (Sandbox Code Playgroud)

如何切换D83ACD2E回主机名?

在旧版本的 Debian 中Wheezy,我可以使用命令getaddrinfo' and 'getnameinfo

# getaddrinfo google.com
D83ACD4E
# getnameinfo D83ACD4E  
mil04s25-in-f14.1e100.net
Run Code Online (Sandbox Code Playgroud)

我无法在Debian Stretch. 这些工具被其他工具取代了吗?

ip tftp hex

6
推荐指数
2
解决办法
1809
查看次数

zsh:重用上一个命令中的所有参数

在 中zsh,组合键Alt+.绑定到insert-last-word,它将在当前命令行上插入上一个命令的最后一个参数。

我正在寻找一个类似于Alt+的键绑定/快捷方式.,不同之处在于它会将上一个命令中的所有参数粘贴到命令行上。

我知道我可以输入!*,zsh 会将其解释为“重用上一个命令中的所有参数”。但这并不完全是我想要的。另外,它实际上并没有粘贴参数以便我可以看到它们,zsh 仅!*如此解释。我可以点击Tab将其展开,但这是另一个必要的命令。

我更愿意将其作为组合键,例如Alt+ something,而不是必须键入 '!*' 并按 Tab 键

我怎样才能做到这一点 ?

更新

广泛使用该小部件几年后,我发现了一些让我困扰的事情:(我将小部件绑定到Alt+ /

  1. 它一次可以正常工作,但是当我再次重复时,它会从文件开头循环浏览我的 zsh 历史记录.zsh_history

相反,我希望小部件能够向后移动,从最近的历史记录回到开头。

  1. 再次,当它从我的 zsh 历史记录的开头循环时,命令和要完成的参数之间的空格被删除。

IE:

输入一些带参数的命令:

echo 111 222 333
Run Code Online (Sandbox Code Playgroud)

使用小部件来完成上一个命令的参数:

printf <WIDGET>
printf 111 222 333
Run Code Online (Sandbox Code Playgroud)

以上按预期工作。但是当我再次按下 WIDGET 时,它突然表现如下:

printf <WIDGET>
printf111 222 333
Run Code Online (Sandbox Code Playgroud)

即命令和参数之间的空格被删除

  1. 最后,我想绑定另一个键,例如Alt+\来执行相反的操作,这样当我按Alt+/ …

keyboard-shortcuts zsh arguments

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

Xterm 不显示一个 uni-code 字符

我的xterm支持单码。例如,它显示欧元符号:

echo -e '\xe2\x82\xac'
Run Code Online (Sandbox Code Playgroud)

但它不显示一个特定的字符:

PL_BRANCH=$'\ue0a0'
echo $PL_BRANCH
Run Code Online (Sandbox Code Playgroud)

此字符在另一个终端(终止符)中正确显示。我在两个终端(Inconsolata)中使用相同的字体。

可能是什么原因,我该如何解决?

terminal xfce xterm unicode xfce4-terminal

6
推荐指数
2
解决办法
288
查看次数

radeon 错误:GPU 锁定:ring 0 停滞超过 x 毫秒

我新安装了带有 Debian Buster 的机器。GPU 是 radeon FirePro W2100。使用几个小时后,机器突然死机,显示屏切换为“白噪音”,机器无法使用。

在日志中,我看到很多这样的错误:

kernel: radeon 0000:65:00.0: ring 0 stalled for more than 10240msec
kernel: radeon 0000:65:00.0: GPU lockup (current fence id 0x0000000000039bff last fence id 0x0000000000039c42 on ring 0)
kernel: adeon 0000:65:00.0: failed to get a new IB (-35)
kernel: [drm:ffffffff816219d0] *ERROR* Couldn't update BO_VA (-35)
kernel: radeon 0000:65:00.0: failed to get a new IB (-35)
Run Code Online (Sandbox Code Playgroud)

进而

kernel: radeon 0000:65:00.0: ring 0 stalled for more than 10032msec
kernel: radeon 0000:65:00.0: GPU lockup (current …
Run Code Online (Sandbox Code Playgroud)

kernel debian gpu amd

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

cron:在未安装 MTA 时将错误消息发送到文件

当我的 crontab 中出现错误时,我收到此消息:

cron: No MTA installed, discarding output
Run Code Online (Sandbox Code Playgroud)

我不想在我的系统上安装 MTA,但我也不想错过这些错误消息。

cron 尝试通过邮件发送这些信息是在哪里配置的?我可以更改它,以便将这些消息发送到文件吗?(也许通过 sysylog)。

我不想记录所有 cron 消息,只想记录错误。

我的rsyslog.conf

cron.=info                    stop

*.*                          |/dev/xconsole
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎即使错误消息也有.info标签

我怎样才能只记录 cron 错误?或者,换句话说:我如何发送到日志文件,如果安装了 MTA,否则会发送到什么内容?

我的系统是 Debian 10,我用于rsyslog日志记录(无 systemd)

更新:

正如 @basin 所建议的那样,对每一行单独使用重定向是我到目前为止使用的解决方案,它几乎没有问题:

首先,正如我所说,我想要一个解决方案,将通常默认发送到 MTA 的内容重定向到其他位置,即|/dev/xconsole,无需单独指定每个谎言。

其次,如果我的 crontab 行中存在语法错误,则重定向将不起作用。Cron 仍然尝试通过 MTA 发送错误,并且我No MTA installed在日志中收到错误。

是否有某种方法可以重定向通过 MTA 发送的内容,以便将其发送(直接或通过 sysylog)到/dev/xconsole

附加问题:

当使用建议的解决方案时@Binarus,编写我自己的自定义sendmail脚本:

我可以不使用默认值/usr/sbin/sendmail,而是为自定义脚本指定其他位置,例如/usr/local/sbin/sendmail?中cron的信息在哪里?这是硬编码的,还是可以在 cron 的配置文件之一中进行配置?sendmail/usr/sbin/

cron logs debian rsyslog

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

zsh make 完成:仅完成 Makefile 中的目标

当我位于包含 , 的目录中时Makefile,我使用 zsh 补全进行 make:

make <TAB>
Run Code Online (Sandbox Code Playgroud)

它完成了两组完成:

  1. Makefile 中的目标
  2. 当前目录下的文件

我只想要1)

如何禁用 2) ?

我已将_make完成文件粘贴到此处:https ://ctxt.io/2/AADge23ZFg

shell zsh make autocomplete

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

kpartx:删除映射后无法卸载磁盘

我无法卸载在其上创建并删除映射的分区kpartx

# mount /dev/sdb1 usb/
# cd usb/

# kpartx -a -p sda -r -s -v sda.img
add map loop0sda1 (254:5): 0 16777216 linear 7:0 2048
add map loop0sda2 (254:6): 0 16777216 linear 7:0 16779264
add map loop0sda3 (254:7): 0 440401920 linear 7:0 33556480
add map loop0sda4 (254:8): 0 26159792 linear 7:0 473958400

# kpartx -dv /dev/loop0
del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1

# cd ..
    
#umount usb/ …
Run Code Online (Sandbox Code Playgroud)

shell mount lsof loop-device kpartx

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

ANSI 终端颜色表现奇怪

当我尝试在终端输出中打开和关闭背景颜色时遇到奇怪的行为:

#!/bin/sh

printf "\e[48;5;203m"
printf "AAA\n"
printf "\e[0m"

printf "BBB\n"
printf "CCC\n"
Run Code Online (Sandbox Code Playgroud)

我想AAA用红色背景打印,然后关闭背景颜色,并打印下一行。然而,输出是这样的:

在此输入图像描述

更新

好的,我从一个新的终端尝试了,它按预期工作。但我仍然打开旧的终端窗口,在其中我得到如图所示的输出。那里发生了什么?终端中是否留下了一些“垃圾”,导致了这种情况?

reset在旧的终端窗口中执行了操作,现在输出是正确的。

shell colors bash terminal

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

pam:对(不成功)登录的操作

我知道如何在登录时执行操作,方法是在/etc/profile. 但只有在登录成功时才会执行。即使登录失败,我也希望执行操作。例如运行脚本script.sh

我怀疑,这可以在 中设置pam,但我不知道从哪里开始。

login pam

5
推荐指数
1
解决办法
3291
查看次数

使用内核加密函数

是否可以在用户空间中使用内核加密函数?比方说,md5sum我的系统上没有安装二进制文件,但我的内核有md5sum支持。我可以从用户空间使用内核函数吗?我该怎么做?

另一种情况是,如果我不信任md5sum系统上的二进制文件(我的系统可能已被入侵),但我信任我的内核(我使用的是加密签名的内核模块)。

cryptography hashsum linux-kernel

5
推荐指数
1
解决办法
509
查看次数