在的sysctl,所述/proc/sys/net/ipv[46]/conf/键具有以下子项:all,default,和每个网络接口的密钥。例如,在具有单个网络接口 eth0 的机器上,它将如下所示:
iserv ~ # ll /proc/sys/net/ipv[46]/conf/
/proc/sys/net/ipv4/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/
/proc/sys/net/ipv6/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. …Run Code Online (Sandbox Code Playgroud) 我正在尝试将findtoecho 0用于某些文件,但显然这仅适用于sh -c:
find /proc/sys/net/ipv6 -name accept_ra -exec sh -c 'echo 0 > {}' \;
Run Code Online (Sandbox Code Playgroud)
但是使用sh -cwithfind -exec让我觉得很不安,因为我怀疑引用问题。我稍微摆弄了一下,显然我的怀疑是有道理的:
我的测试设置:
martin@dogmeat ~ % cd findtest
martin@dogmeat ~/findtest % echo one > file\ with\ spaces
martin@dogmeat ~/findtest % echo two > file\ with\ \'single\ quotes\'
martin@dogmeat ~/findtest % echo three > file\ with\ \"double\ quotes\"
martin@dogmeat ~/findtest % ll
insgesamt 12K
-rw-rw-r-- 1 martin martin 6 Sep 17 12:01 file with "double …Run Code Online (Sandbox Code Playgroud)我使用以下命令创建了一个新的 md 数组:
mdadm --create /dev/md1 -l 1 -n 2 /dev/sd[ed]1
Run Code Online (Sandbox Code Playgroud)
但是现在/proc/mdstat将数组显示为“自动只读”,resync=PENDING:
~ # cat /proc/mdstat
Personalities : [raid1]
md1 : active (auto-read-only) raid1 sde1[1] sdd1[0]
976630336 blocks super 1.2 [2/2] [UU]
resync=PENDING
md0 : active raid1 sdb1[0] sdc1[1]
1953511936 blocks [2/2] [UU]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
根据这个网站,我可以用以下方法解决这个问题:
mdadm --readwrite /dev/md1
Run Code Online (Sandbox Code Playgroud)
这确实有效:
~ # mdadm --readwrite /dev/md1
~ # cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sde1[1] sdd1[0]
976630336 blocks super 1.2 [2/2] [UU]
[>....................] …Run Code Online (Sandbox Code Playgroud) 在较新的系统上/usr/share/mdadm/mkconf(用于生成的脚本/etc/mdadm/mdadm.conf)倾向于使用设备名称/dev/md/0而不是/dev/md0:
new-system ~ # /usr/share/mdadm/mkconf | grep ARRAY
ARRAY /dev/md/0 metadata=1.2 UUID=a0021927:0e4f10bf:2c47dc72:ca0b352e name=unassigned:0
Run Code Online (Sandbox Code Playgroud)
这可能会给期望/dev/md0在那里的用户带来一些刺激,但显然它运行良好,因为服务器启动时没有问题。
在/proc/mdstat设备中仍称为/dev/md0:
new-system ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[2] sda2[0]
1953381184 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
ls显示这/dev/md/0是一个符号链接/dev/md0:
new-system ~ # ls -l /dev/md/0
lrwxrwxrwx 1 root root 6 Nov 20 14:06 /dev/md/0 -> ../md0
Run Code Online (Sandbox Code Playgroud)
在另一个旧系统上mkconf仍然使用/dev/md0,并且 …
我正在开发一个从变量构造复杂命令的 shell 脚本,例如这样(使用我从 Bash FAQ 中学到的技术):
#!/bin/bash
SOME_ARG="abc"
ANOTHER_ARG="def"
some_complex_command \
${SOME_ARG:+--do-something "$SOME_ARG"} \
${ANOTHER_ARG:+--with "$ANOTHER_ARG"}
Run Code Online (Sandbox Code Playgroud)
如果定义了这些变量,此脚本会动态添加参数--do-something "$SOME_ARG"和添加--with "$ANOTHER_ARG"到some_complex_command。到目前为止,这工作正常。
但是现在我还希望能够在我运行时打印或记录命令,例如当我的脚本在调试模式下运行时。因此,当我的脚本运行时some_complex_command --do-something abc --with def,我还希望将此命令放在一个变量中,以便我可以将它记录到系统日志中。
Bash FAQ 演示了为此目的使用DEBUG陷阱和$BASH_COMMAND变量(例如用于调试目的)的技术。我已经尝试过使用以下代码:
#!/bin/bash
ARG="test string"
trap 'COMMAND="$BASH_COMMAND"; trap - DEBUG' DEBUG
echo "$ARG"
echo "Command was: ${COMMAND}"
Run Code Online (Sandbox Code Playgroud)
这有效,但它不会扩展命令中的变量:
host ~ # ./test.sh
test string
Command was: echo "$ARG"
Run Code Online (Sandbox Code Playgroud)
我想我必须使用 eval 扩展echo "$ARG"到echo test string(至少我还没有找到没有的方法eval …
我正在尝试使用cryptdisks_start打开在我的/etc/crypttab. 不幸的是,该命令失败并显示以下错误消息:
martin ~ # cryptdisks_start luks-01a2e5d8-9211-40ce-b160-d3f973d1a155
* Starting crypto disk...
* luks-01a2e5d8-9211-40ce-b160-d3f973d1a155 (starting)..
* luks-01a2e5d8-9211-40ce-b160-d3f973d1a155: the precheck for '/dev/disk/by-uuid/01a2e5d8-9211-40ce-b160-d3f973d1a155' failed: - The device /dev/disk/by-uuid/01a2e5d8-9211-40ce-b160-d3f973d1a155 contains a filesystem type crypto_LUKS.
* luks-01a2e5d8-9211-40ce-b160-d3f973d1a155 (failed)...
...fail!
Run Code Online (Sandbox Code Playgroud)
一个相当奇怪的错误,因为该设备当然必须包含一个crypto_LUKS文件系统!
来自 的相关行/etc/crypttab,由 GNOME Disks 设置:
luks-01a2e5d8-9211-40ce-b160-d3f973d1a155 UUID=01a2e5d8-9211-40ce-b160-d3f973d1a155 /etc/luks-keys/luks-01a2e5d8-9211-40ce-b160-d3f973d1a155 nofail
Run Code Online (Sandbox Code Playgroud) 我每天都会在服务器上收到以下邮件:
This is an automatically generated mail message from mdadm
running on <host>
A SparesMissing event had been detected on md device /dev/md0.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
731592000 blocks [2/2] [UU]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
虽然输出cat /proc/mdstat看起来不错,所以导致这个问题的原因并不明显。
我ntpd在我的机器上运行,但我不确定它是否工作正常。如何查询ntpd确定是否已成功连接到时间服务器以及我的内核时间是否已同步?