我的新内核已CONFIG_DEVTMPFS启用,因此我的内核/dev已安装为devtmpfs. 我的旧内核没有使用CONFIG_DEVTMPFS,/dev 曾经以普通方式安装tmpfs。
现在我注意到,它的大小/dev/大得离谱:8GB,这是我 RAM 的一半:
df | grep devtmpfs
devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev
Run Code Online (Sandbox Code Playgroud)
以前,当我/dev挂载为 时tmpfs,大小曾经是10MB
df | grep tmpfs
tmpfs tmpfs 10M 0 10M 0% /dev
Run Code Online (Sandbox Code Playgroud)
在我看来,10MB 对于/dev. 为什么/dev/默认分配 50% 的 RAM?我可以在哪里更改此设置?
当我启动我的系统时,我可以在我的物理控制台上看到启动消息tty1。我的X服务器启动后,我可以切换回tty1用CTRLALT+ F1,并且仍然在控制台上看到输出。没有 getty 运行,因为我在 中注释了以下行/etc/inittab:
#1:2345:respawn:/sbin/getty 38400 tty1
Run Code Online (Sandbox Code Playgroud)
但是,我无法在控制台中向后滚动,没有任何效果,甚至输入也没有任何作用。我想回滚,以查看较早的启动消息(初始化脚本的输出,我在 中看不到dmesg)
我使用 Debian 和 SysVinit 作为我的 init
我正在 Debian Stretch 上编译 linux 内核:
cd linux-4.9.59/
make menuconfig
make
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。
通常,我会发出make modules_install, 将模块复制到/lib/modules/.
但是这个内核是为另一台机器准备的,所以我不想在本地复制模块。此外,我不是以 root 身份编译的,所以/lib/modules/无论如何写入都行不通。
export INSTALL_MOD_PATH="../MY_NEW_KERNEL"
mkdir -vp "${INSTALL_MOD_PATH}
make modules_install
Run Code Online (Sandbox Code Playgroud)
以上将新编译的模块复制到目录../MY_NEW_KERNEL/lib/modules/. 但它不会生成 modules.dep 和 map 文件../MY_NEW_KERNEL/lib/modules/
通常,如果这是当前正在运行的内核,我可以运行depmod以在/lib/modules/. 但是我没有在当前机器上运行这个内核。
甚至当我将 bzImage 和模块复制到目标机器时,我也必须先重新启动到新内核,然后运行depmod.
但问题是,内核无法启动,因为它找不到模块,因为我没有运行depmod.
depmod当内核当前未运行时,如何运行内核模块?
我正在remote-server从本地主机连接,我想在remote-server.
按预期工作:
ssh remote-server "hostname"
remote-server
Run Code Online (Sandbox Code Playgroud)
我很迷惑。为什么这会返回本地主机名,而不是远程服务器的主机名?
ssh remote-server "print $HOST"
localhost
Run Code Online (Sandbox Code Playgroud) 我已经将diff-highlight设置为 git 的分页器/荧光笔。
[pager]
log = diff-highlight | less
show = diff-highlight | less
diff = diff-highlight | less
Run Code Online (Sandbox Code Playgroud)
效果很好。
但是如何将 diff-highlight 用于普通 diff 呢?
我有自定义脚本,需要:
短/长命令行选项例如:
-r, --readonly
-m, --mount
Run Code Online (Sandbox Code Playgroud)
对于一个必需的参数,这些参数实际上在脚本中指定为 case 语句,即foo在bar本例中:
case $1 in
foo )
:
;;
bar )
:
;;
Run Code Online (Sandbox Code Playgroud)
如何zsh completion为我的脚本创建,以便在参数以 开头时完成可选参数-,并从我的脚本 case 语句中获取所需参数?
这是我到目前为止所得到的,受到答案的启发@Marlon Richert。
假设调用我的自定义脚本myscript.sh并且我创建的完成规则位于/usr/share/zsh/functions/Completion/Unix/_myscript.sh:
#compdef myscript.sh
_myscript () {
local -a args
args+=(
{-r,--readonly}'[description for "readonly"]'
{-m,--mount}'[description for "mount"]'
)
_arguments $args && return
}
_myscript "$@"
Run Code Online (Sandbox Code Playgroud)
我的脚本myscript.sh本身位于/usr/local/bin/myscript.sh.
因此,现在当我有了可选参数-r并-m得到处理时,我需要修改我的完成规则,以便对于我的脚本所需的命令行参数,来自 case 语句的项目作为 …
rsyslog我在 Debian Buster 上使用。
我使用的是旧式sysvinit,而不是 systemd。rsyslog在 init 启动序列的后期启动,在大多数 init 脚本运行之后。
引导过程中的消息dmesg以及在 rsyslog 启动之前运行的其他启动脚本中的其他早期日志消息不会丢失。rsyslog将在启动时立即记录它们。
当 rsyslog 未运行时,这些消息存储在哪里?
我可以在启动 rsyslog 之前清除此“缓存”,以便不记录早期启动消息吗?
或者,更好的是,我可以将它们过滤掉,以便将它们记录到主系统日志文件中:
*.* -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)
但未登录另一个:
*.* |/dev/xconsole
Run Code Online (Sandbox Code Playgroud)
我意识到我想要解决的问题可能并不完全清楚。因此,这里对情况进行一些澄清:
除了标准syslog日志记录(即/var/log/syslog)之外,我还将相同的信息记录到/dev/xconsole,并且当我以用户身份登录桌面会话时,我在后台使用以下命令的终端:
cat /dev/xconsole
Run Code Online (Sandbox Code Playgroud)
这样,我可以立即看到新日志出现在我的背景中。此外,与常规文件不同的是,/dev/xconsole它在读取后会被清空。因此,当我注销并再次登录时,我看不到旧消息,而只看到新消息。
现在的问题是,启动后,内核缓冲区中有太多日志,rsyslog启动时,它会填满/dev/xconsole无用的调试早期启动信息的整个容量。
我最感兴趣的是后期启动消息,而这些消息丢失了。只有在我cat /dev/xconsole第一次之后,我才会释放空间,并且可以收到新消息。
我添加了这个丑陋的黑客/etc/rsyslog.conf:
:msg, startswith, "\[ " stop
*.* |/dev/xconsole
Run Code Online (Sandbox Code Playgroud)
这基本上丢弃所有以个位数秒计数器开头的早期消息[ 0.000000],但接受所有后续消息,即 [ 14.348189]
这可行,但我认为这是肮脏的解决方法。
那么,我怎样才能摆脱我不感兴趣的早期启动消息,并记录有用的初始化启动脚本消息呢?
如何将数据对齐到相对于给定单词的漂亮列中?
例如,我有route -n命令的输出:
default via 172.20.99.254 dev eth0
87.33.17.71 dev tun0 scope link
89.223.15.12 via 172.20.99.254 dev eth0 src 172.20.99.74
172.20.9.0/24 dev eth0 proto kernel scope link src 172.20.99.74
65.46.5.89 dev tun0 scope link
192.168.11.0/24 dev tun0 scope link
45.211.111.7 dev tun0 scope link
Run Code Online (Sandbox Code Playgroud)
我想按单词对齐它dev,以便包含该单词的列dev对齐:
default via 172.20.99.254 dev eth0
87.33.17.71 dev tun0 scope link
89.223.15.12 via 172.20.99.254 dev eth0 src 172.20.99.74
172.20.9.0/24 dev eth0 proto kernel scope link src 172.20.99.74
65.46.5.89 dev tun0 …Run Code Online (Sandbox Code Playgroud) 我知道-uhtop中的选项,在那里我只能显示给定用户的进程,例如:
htop -u root
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法显示除 root 之外的所有用户的进程。
我需要iptables在我的客户端(iscsi-initiator)上进行配置。从tcpdump,我可以看到服务器(iscsi 目标)tcp从端口发送3260。
所以我iptables在我的客户端上添加了以下规则(10.1.212.51iscsi 目标在哪里):
-A INPUT -i eth1 -s 10.1.212.51 -p tcp -m tcp --dport 3260 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
但iscsi不适用于此规则。只有在我允许所有端口后,它才能工作:
-A INPUT -i eth1 -s 10.1.212.51 -p tcp -m tcp -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
因此我的问题是,是否还iscsi需要其他端口?