小编Zhr*_*hro的帖子

记住 ln 参数顺序的技巧?

我已经使用ln符号链接写了很多年了,但我仍然把参数的顺序弄错了。

这通常让我写:

ln -s a b
Run Code Online (Sandbox Code Playgroud)

然后看着输出提醒自己。

我总是想像a -> b我读它时的样子,但实际上恰恰相反b -> a。这感觉违反直觉,所以我发现我总是在怀疑自己。

有没有人有任何提示可以帮助我记住正确的顺序?

symlink ln

72
推荐指数
5
解决办法
5526
查看次数

分配给slab的不可回收内存是否被视为已使用或可用缓存?

评估 /proc/meminfo 后,我看到以下信息:

$cat /proc/meminfo
MemTotal:       197852592 kB
MemFree:        64755992 kB
MemAvailable:   65655112 kB
Buffers:            4388 kB
Cached:           759952 kB
SwapCached:            0 kB
Active:           649472 kB
Inactive:         308340 kB
Active(anon):     193840 kB
Inactive(anon):    25316 kB
Active(file):     455632 kB
Inactive(file):   283024 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4095932 kB
SwapFree:        4095932 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        193560 kB
Mapped:            86208 kB
Shmem:             25684 kB
Slab:           49141432 kB
SReclaimable:     667284 kB
SUnreclaim:     48474148 kB
KernelStack:       25600 kB …
Run Code Online (Sandbox Code Playgroud)

memory out-of-memory

11
推荐指数
1
解决办法
5005
查看次数

有人会提供 Bash 同步与异步作业的示例吗?

根据 Bash 4.4 更新日志:

https://lists.gnu.org/archive/html/info-gnu/2016-09/msg00008.html

bash-4.3 和 bash-4.4 之间有一些不兼容的变化。Bash 现在仅保留异步作业的退出状态,而不是所有作业。这意味着不可能使用“wait”来检索先前完成的同步命令的状态。

https://fossies.org/diffs/bash/4.3.46_vs_4.4/CHANGES-diff.html

Bash 仅将异步命令添加到它记住其状态的后台 pid 表中,以避免在创建和获取大量子进程的脚本期间它变得过大。这意味着 `wait' 不再适用于同步作业,但 $? 在这些情况下可用于获取退出状态。

我已经被 4.3 和 4.4 之间的其他一些重大更改所困扰,但我不知道如何编写一个测试此特定更改的示例。

Bash 中的同步作业与异步作业有什么区别,它在哪里存储等待查询的 pid 表?

bash

9
推荐指数
1
解决办法
5751
查看次数

硬盘 WWN 有哪些用例?

今天我在设置新系统时注意到, 所代表的磁盘/dev/disk/by-id也有一个我不熟悉的 WWN 链接:

在此输入图像描述

我的研究表明,这是一个“全球通用号码”或驱动器的某种唯一 ID。其用途是什么?何时适合使用它与驱动器的其他表示的 ID、序列号和 UUID(来自/dev/disk/by-uuid)。

此 WWN 标识符的文档链接也很有用。我在 Google 上得到了很多关于光纤通道内容的点击。这是一个相关的用例还是完全是别的什么?

uuid disk

8
推荐指数
1
解决办法
1万
查看次数

如何获取属于预配置 firewall-cmd 服务的端口列表?

我想在我的 CentOS 7 防火墙中打开以下端口:

UDP 137 (NetBIOS Name Service)
UDP 138 (NetBIOS Datagram Service)
TCP 139 (NetBIOS Session Service)
TCP 445 (SMB)
Run Code Online (Sandbox Code Playgroud)

我可以猜测服务名称samba包括 TCP 445,但我不知道其他端口是否预先配置了服务名称。

我可以列出支持的服务:

$ firewall-cmd --get-services
Run Code Online (Sandbox Code Playgroud)

但这并没有告诉我哪些端口配置了服务。

有没有办法列出属于这些服务的端口,以便我可以搜索我需要的端口?

firewall centos systemd firewalld

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

安装 NetworkManager-wifi 后如何重新加载 NetworkManager

我安装了无线卡,并nmcli报告它“不受管理”,并用红色文本表示“缺少插件”。

谷歌搜索让我发现我需要安装必需的“NetworkManager-wifi”包。通过有线连接安装后,有关插件丢失的红色消息直到重新启动后才消失,此后设备开始受管理并自动连接到我通过设置的网络nmtui

我的问题是,如何重新加载 NetworkManager 以识别 wifi 无需重新启动即可工作所需的插件?

我试过:

$ service network reload
Run Code Online (Sandbox Code Playgroud)

这没有任何影响。

wifi centos networkmanager

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

在 inputrc 中绑定 Ctrl-\?

我一直在纠结这个,似乎无法让它发挥作用。在终端中使用Ctrl+V正确输出^\此组合,因此它应该是可识别的。

由于我Ctrl+\绑定到 emacs 中的暂停帧,我希望能够通过再次按下Ctrl+快速回到前台\

我相信这是唯一可行的组合:

"\C-\\": "fg\n"
Run Code Online (Sandbox Code Playgroud)

如果我EnterCtrl+之后点击V这个组合,我会得到以下输出,这可能很有用:

bash: $'\034': command not found
Run Code Online (Sandbox Code Playgroud)

bash terminal inputrc

3
推荐指数
1
解决办法
1779
查看次数

关于 disown 内置选项 -h 的 Bash 文档说明

根据文档:

为防止 shell 向特定作业发送 SIGHUP 信号,应使用 disown 内置命令将其从作业表中删除, 使用 disown -h 标记为不接收 SIGHUP。

https://www.gnu.org/software/bash/manual/html_node/Signals.html

注意引用中的OR

我可以确认只需使用disownwithout-h并重新登录该进程没有退出:

#!/bin/bash

( sleep 10s; echo 1 > b ) &
disown
Run Code Online (Sandbox Code Playgroud)

这个-h选项好像没有必要吧?如果它没有工作,那么它的目的是什么?

bash signals job-control disown

3
推荐指数
1
解决办法
182
查看次数

为什么我的 CentOS 7.4 在内核 2.6.32 上?

我正在为运行 CentOS 7.4 的 VPS 付费:

# rpm --query centos-release
centos-release-7-4.1708.el7.centos.x86_64

# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)

# uname -a
Linux vps1 2.6.32-042stab120.16 #1 SMP Tue Dec 13 20:58:28 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我认为 CentOS 7 基于内核 3.10。

我完全根据yum.

centos vps

3
推荐指数
1
解决办法
1452
查看次数

当我通过 SSH 登录时,为什么我的帐户的 XDG 变量未定义?

登录桌面后:

$ env | grep XDG_
XDG_CONFIG_DIRS=/etc/xdg
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session4
XDG_MENU_PREFIX=xfce-
XDG_SEAT=seat0
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_TYPE=x11
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/mattd
XDG_CURRENT_DESKTOP=XFCE
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_VTNR=1
XDG_SESSION_ID=12
XDG_RUNTIME_DIR=/run/user/1000
XDG_DATA_DIRS=/usr/local/share:/usr/share
Run Code Online (Sandbox Code Playgroud)

通过 SSH 登录时:

$ env | grep -i xdg
XDG_SESSION_TYPE=tty
XDG_SESSION_CLASS=user
XDG_SESSION_ID=16
XDG_RUNTIME_DIR=/run/user/1000
Run Code Online (Sandbox Code Playgroud)

为什么我通过 SSH 登录时的环境不同?

我正在运行 Fedora 30。

environment-variables xdg xdg-user-dirs

3
推荐指数
1
解决办法
6882
查看次数

如何在 Bash 中针对逻辑表达式中未处理的运行时错误进行防御性编码?

我刚刚遇到一个错误,脚本中缺少一个函数。我已经trap提出了这些异常以提前停止脚本,但我注意到这并没有发生。进一步研究这一点,我发现作为逻辑表达式一部分发生的错误被认为是该表达式的一部分,而不是错误本身。

例如,请参阅此片段:

function _raise_error() {
    >&2 echo "Error on line $1"
}

trap '_raise_error $LINENO' ERR

# STDERR: _missing_function: command not found
_missing_function && echo "This expression is never true"

echo "This is printed, because the missing function error is not trapped"
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法来更具防御性地编写此代码,以使脚本在逻辑表达式中缺少函数时提前结束?我不确定如何捕捉这一点。在这种情况下使用set -e并没有什么区别,因为我已经捕获了错误并终止了脚本。

我最好的猜测是我需要将线路换行false。这不太理想,但我想不出更好的方法。

_missing_function && { echo "This expression is never true"; } || false
Run Code Online (Sandbox Code Playgroud)

bash shell-script error-handling

3
推荐指数
1
解决办法
195
查看次数

为什么我使用X11转发时光标这么大?

我在使用 Cygwin 的 Windows 机器上工作。在本地,我的光标以预期大小呈现得很好:

在此输入图像描述

但是当我连接到远程计算机时,光标很大:

在此输入图像描述

在此示例中,我运行 xterm。这里的光标变化是用X渲染的;这不是我正常的 Windows 光标。我在 CentOS 7 和 Fedora 33 上测试时遇到同样的问题。

为什么我的光标如此之大以及如何修复它?

linux xforwarding x11

2
推荐指数
1
解决办法
1770
查看次数