我有一个从 microSD 卡启动的 Raspberry Pi(运行 Raspbian)。由于它充当家庭服务器,因此我自然要监视 microSD 卡的错误。不幸的是,microSD 卡不像我拥有的其他磁盘那样支持 SMART,所以我不确定如何监控磁盘的错误。
如何在不支持 SMART 的磁盘仍在使用/已安装分区时监控/检查错误?
我有一个从 microSD 卡启动的 Raspberry Pi(运行 Raspbian)。由于它充当家庭服务器,因此我自然要监视 microSD 卡的错误。不幸的是,microSD 卡不像我拥有的其他磁盘那样支持 SMART,所以我不确定如何监控磁盘的错误。
如何在不支持 SMART 的磁盘仍在使用/已安装分区时监控/检查错误?
我知道,如果我按下esc然后输入:q!
,我可以退出vim
编辑器,因为这个问题。
但是,标准约定是程序在按下ctrl+时退出,这会将 a 发送到当前正在运行的进程。cSIGINT
例如,top
、tail -f
和ping
都遵循此约定。
我的问题是:为什么不vim
遵循这个完善的惯例?是有历史原因,还是另有原因?
在我看来,如果它像其他所有东西一样遵循这个标准约定,它将避免给新用户带来很多困惑。
(当我们在做的时候,为什么是它SIGINT
而不是SIGTERM
一开始呢?)
我发现OpenSSH 能够像这样转发 UNIX 套接字:
ssh -R /var/run/program.sock:/var/run/program.sock
我的问题是这是否也扩展到抽象 unix 套接字。
我尝试了以下方法无济于事:
ssh -nNT -R @laminar:@laminar
ssh -nNT -R unix-abstract:laminar:unix-abstract:laminar
有问题的程序确实支持基于文件的 unix 套接字,但由于它默认使用抽象套接字,我想避免重新配置它以尽可能简化问题。
OpenSSH_7.4p1 Raspbian-10+deb9u4, OpenSSL 1.0.2q 20 Nov 2018
OpenSSH_7.6p1 Ubuntu-4ubuntu0.1, OpenSSL 1.0.2n 7 Dec 2017
我注意到,在编写 shell 脚本时,人们是否在 I/O 重定向操作符后放置空格存在很多不一致的地方。例如:
foo >bar.txt
会起作用,但也会这样:
foo > bar.txt
....甚至这个:
foo > bar.txt
事实上,即使是 Linux 文档项目页面也令人沮丧地不一致——在一个地方和另一个地方使用2>&1
(它实际上在我的带有空格的Bash终端中不起作用)> filename
!
我一直使用前者,因为后者对我来说就像 2 个不同的论点,但我想知道:两者之间有什么区别或推理吗?
比什么>bar.txt
更便携> bar.txt
?或者我应该在一种定义的情况下使用一种语法,而在另一种情况下使用另一种语法?