小编Hug*_*ugo的帖子

为什么swappiness默认设置为60?

我刚刚在 Linux 上阅读了一些关于 swappiness 的东西。我不明白为什么默认设置为 60。

根据我的说法,这个参数应该设置为 10 以减少交换。交换在我的硬盘上,所以它比我的记忆慢得多。

他们为什么要这样配置内核?

linux kernel swap

120
推荐指数
3
解决办法
7万
查看次数

Udev:重命名我的网络接口

我刚刚在 Dell 1950 服务器上安装了RHEL 6.3。该服务器作为两个 GBit 端口,Gb0 和 Gb1。

出于某种晦涩的原因,udev选择命名Gb0 eth1Gb1 eth0。这对我来说绝对不是一个好发现,只会让人感到困惑。

所以我修改了配置/etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:c0",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:be",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Run Code Online (Sandbox Code Playgroud)

我只是更改了文件上的“NAME”字段以反映我想要的内容。我重新启动了服务器,但没有奏效。

dmesg日志中,我可以阅读以下内容:

udev: renamed network interface eth1 to rename5
udev: renamed network interface eth0 to eth1
udev: renamed network interface rename5 to eth0
Run Code Online (Sandbox Code Playgroud)

知道这里有什么问题吗?为什么会这样udev切换?我有另一个类似的服务器,我没有这个问题。

linux rhel udev

20
推荐指数
3
解决办法
11万
查看次数

Rsync --bwlimit 不起作用

我目前正在使用 rsync 将大文件从主机传输到另一个主机。我想限制这笔转账的借方。阅读手册页后,我发现选项 --bwlimit 期望 KB/s 值。

我想将传输限制在 100Mbit/s 左右,所以我使用了以下设置:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/
Run Code Online (Sandbox Code Playgroud)

但是根据 rsync 的输出,这似乎没有得到尊重:

file.sql.gz
   570851702 100%   33.90MB/s    0:00:16 (xfer#5, to-check=34/39)
file.sql.gz
    11195140 100%    7.45MB/s    0:00:01 (xfer#6, to-check=33/39)
file.sql.gz
    51439169 100%   19.41MB/s    0:00:02 (xfer#7, to-check=32/39)
file.sql.gz
       34022 100%    1.55MB/s    0:00:00 (xfer#8, to-check=31/39)
file.sql.gz
     2305698 100%    6.96MB/s    0:00:00 (xfer#9, to-check=30/39)
file.sql.gz
     2152942 100%    2.73MB/s    0:00:00 (xfer#10, to-check=29/39)
file.sql.gz
    86655633 100%   19.33MB/s    0:00:04 (xfer#11, to-check=28/39)
file.sql.gz
  3614476032  40%   34.82MB/s    0:02:28
Run Code Online (Sandbox Code Playgroud)

如果我没记错:19.33MB/s ~= 154Mbit/s

那么这里有什么问题呢?

PS:rsync 版本 …

linux rsync

18
推荐指数
2
解决办法
2万
查看次数

Bash 脚本等待进程并获取返回码

我正在尝试创建一个脚本,它将启动许多后台命令。对于每个后台命令,我都需要获取返回码。

我一直在尝试以下脚本:

 #!/bin/bash
set -x
pid=()
return=()


for i in 1 2
do
 echo start $i
 ssh mysql "/root/test$i.sh" &
 pid[$i]=$!
done

for i in ${#pid[@]}
do
echo ${pid[$i]}
wait ${pid[$i]}
return[$i]=$?

if [ ${return[$i]} -ne 0 ]
then
  echo mail error
fi

done

echo ${return[1]}
echo ${return[2]}
Run Code Online (Sandbox Code Playgroud)

我的问题是在等待循环期间,如果第二个 pid 在第一个之前完成,我将无法获得返回码。

我知道我可以运行wait pid1 pid2,但是使用此命令我无法获取所有命令的返回码。

任何的想法 ?

linux bash process array

15
推荐指数
3
解决办法
4万
查看次数

Shell,连接 2 个字符串以引用第三个变量

我正在尝试在我的脚本中执行以下操作:

#/bin/bash -x
var1=www
var2=www2
var3=www3
var4=www4
for i in 1 2 3 4; do
   echo \$var$i
done
Run Code Online (Sandbox Code Playgroud)

显然,这不会按预期工作并导致以下输出:

$var1
$var2
$var3
$var4
Run Code Online (Sandbox Code Playgroud)

如何动态引用循环中的变量?

shell bash shell-script

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

Bash:用空格比较两个字符串

我正在尝试编写一个 bash 脚本,该脚本运行命令并将结果与​​另一个字符串进行比较。

#!/bin/bash -x

STATUS=`/root/setup_ha show --password-file=/root/password | grep ">HA State" | awk '{print $3}' |  cut -c 2-`

TEST=`echo $STATUS`
if [[ "$TEST" == "ON Master" ]];
then echo CLUSTER CRITICAL
else
  echo CLUSTER OK MASTER
fi
Run Code Online (Sandbox Code Playgroud)

由于原始字符串在两行上,我在新变量 TEST 中回显它。New 变量在一行中包含命令的输出。

这是 Bash 调试输出:

++ /root/setup_ha show --password-file=/root/password
++ grep '>HA State'
++ awk '{print $3}'
++ cut -c 2-
+ STATUS='ON
Master'
++ echo 'ON' Master
+ TEST='ON Master'
+ [[ ON Master == \O\N\ \M\a\s\t\e\r ]] …
Run Code Online (Sandbox Code Playgroud)

bash string

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

标签 统计

linux ×4

bash ×3

array ×1

kernel ×1

process ×1

rhel ×1

rsync ×1

shell ×1

shell-script ×1

string ×1

swap ×1

udev ×1