小编LVL*_*ron的帖子

执行远程命令,完全脱离ssh连接

我有两台电脑,localpcremoteserver

我需要localpcremoteserver. 它需要做的一件事是启动一个运行数小时的备份脚本。我希望命令localpc“开火”然后完全独立运行remoteserver,就像一localpc开始就不存在一样。

这是我到目前为止所做的:

remoteserver 包含有脚本:

/root/backup.sh
Run Code Online (Sandbox Code Playgroud)

localpc 计划运行这个:

ssh root@remoteserver 'nohup /root/backup.sh' &
Run Code Online (Sandbox Code Playgroud)

我这样做是否正确?有一个更好的方法吗?这样做我会遇到任何麻烦吗?

scripting ssh nohup background-process

59
推荐指数
5
解决办法
17万
查看次数

22TB磁盘如何分区?

我有一个 22TB 的磁盘/dev/sdb。如何创建 22TB 分区?不要真正关心文件系统 -ext4或者zfs很好。

运行 CentOS 6.2 - 分区将用作数据转储。只有一个数据流,所以现在对什么文件系统挑剔/挑剔并不是真正的问题。该磁盘由 12x2TB 近线 SAS 驱动器和戴尔 Perc 控制器组成。

我只想要一个 22TB 的分区。

partition

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

“echo 1 > /sys/block/sdX/device/delete” 在除预定列表之外的所有磁盘上

我有一个需要删除的 scsi 磁盘列表。该列表最多被认为是随机的,并且会不时更改。我想删除除我创建的预定义列表之外的所有内容。现在让我们假设我只想保留:

/dev/sda
/dev/sdb
Run Code Online (Sandbox Code Playgroud)

我需要执行的命令是:

"echo 1 > /sys/block/sdX/device/delete"
Run Code Online (Sandbox Code Playgroud)

其中 X 是要移除的设备。

我不擅长 bash 脚本,所以我真的不知道从哪里开始。

回顾一下,这样我就不会因为不清楚而被 DV。

除了预定的列表之外,我需要为系统上的每个 sdX 设备“echo 1 > /sys/block/sdX/device/delete”。

编辑:在下面的答案之后,这就是我决定使用的。“LocalDisks.txt”应该包含像“/dev/sda”这样的行

#!/bin/bash
exclude=$(cut -d/ -f3 LocalDisks.txt)

for sysfile in /sys/block/sd* ; do

dev=$(basename $sysfile)
del=$sysfile/device/delete

if [[ $exclude == *$dev* ]] ; then
    echo "Device $dev excluded"

elif [ ! -w $del ] ; then
    echo "$del does not exist or is not writable"

else
    echo 1 > $del
fi

done
Run Code Online (Sandbox Code Playgroud)

shell-script scsi hard-disk

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

执行远程sqlite命令

如果这应该转移到 DBA 交换,我深表歉意。对我来说,感觉更像是 linux 而不是 DB,所以这里是:

我有一些机器每晚运行预定的 cron 作业并将输出通过电子邮件发送给我。我不想要这样的电子邮件。总的来说,我认为我们使用电子邮件的方式是坏的,但那是另一回事了。

所以我开始考虑我可以保留一个中央 SQLite 数据库来存储有关作业何时开始和完成的信息,甚至可能是输出。然后我可以建立一个网页来查询,让我知道昨晚发生了什么。

所以我想出了一个简单的模式,可以在脚本的开头运行这个命令。

sqlite3 dbname.db "UPDATE data SET LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'"
Run Code Online (Sandbox Code Playgroud)

所以现在我有一个记录,说明我的工作是在什么时候开始的。万岁。然后我可以运行一个类似的命令来放置作业结束的时间。

所以。如果数据库和任务在同一台机器上,那效果很好。我去另一台机器,需要更新sqlite数据库......我怎样才能有效地做到这一点?

我试过这个

ssh aaron@10.1.150.53 'sqlite3 /home/aaron/dbname.db "UPDATE data SET LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'"'
Run Code Online (Sandbox Code Playgroud)

但这会返回:

Error: no such column: NOW
Run Code Online (Sandbox Code Playgroud)

我尝试了一些变体,但一无所获。

我很亲近吗?我应该做一些完全不同的事情吗?我是在重新发明轮子吗?

ssh remote-management sqlite

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

使用 awk 替换括号?

在这两种情况下,如何使用 awk 替换括号?

  1. 将空括号更改为“无”

    192.168.0.24,向上,()

  2. 删除括号,只剩下 host.domain.com

    192.168.0.25,Up,(host.domain.com)

awk text-processing replace

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

有没有更优雅的方法来计算单词并将该计数分配给变量?

我有一个脚本:

#!/bin/bash

/root/xiotech status > xiostatus.tmp
SyncCount=$(grep -c Sync xiostatus.tmp)
PauseCount=$(grep -c paused xiostatus.tmp)
CopyingCount=$(grep -c Copying xiostatus.tmp)

if [ "$SyncCount" -eq "11" ]
then echo All 11 mirrors are in sync.

else echo $PauseCount mirrors are paused and $CopyingCount mirrors are syncing.
fi

rm -f xiostatus.tmp
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方法来使用awk之类的东西来计算和“变量化”这些计数?在这种情况下,文件很小,所以没什么大不了的,但是如果文件是 900mb,则需要很多额外的周期才能通过它 3 次......

bash awk shell-script

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

从系统日志流的“tail -f”中提取字段

Example line from syslog file:
Aug  1 10:25:50 10.10.10.1 id=firewall sn=XXXX time="2012-08-01 14:35:18 UTC" fw=x.x.x.x pri=6 c=1024 m=537 msg="Connection Closed" f=11 n=195273698 src=x.x.x.x:60246:X3: dst=x.x.x.x:443:X6:host.domain.com proto=tcp/https sent=181793 rcvd=649678
Run Code Online (Sandbox Code Playgroud)

我想做一个

$ tail -f /var/log/log.log | SOMETHING
Run Code Online (Sandbox Code Playgroud)

那会回来

"src=x.x.x.x dst=x.x.x.x"
Run Code Online (Sandbox Code Playgroud)

简单地说,我希望能够从文本中提取特定字段。我不想根据字段编号(行中的位置)选择这些字段,因为随着系统生成此文件,事物的顺序可能会略有变化,因此它不起作用。

对建议持开放态度,但更喜欢单线。

sed awk syslog text

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

“单”模式下磁盘故障后 BTRFS 能否恢复/继续?

第一次测试btrfs,看看是否可以将其用于特定项目。

我在虚拟机中工作。

  1. 使用这 3 个大小随机的小型磁盘创建了一个卷。

    mkfs.btrfs -d single /dev/sdb /dev/sdc /dev/sdd
    mount /dev/sdb /mnt/data
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加另一个设备只是为了测试

    btrfs device add /dev/sde /mnt/data 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一堆 1GB 文件来填满磁盘

    dd if=/dev/urandom of=1GB_07.bin bs=64M count=16 iflag=fullblock
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我从虚拟机中删除了其中一个磁盘并重新启动

  5. 我能够以只读模式强制安装

    mount -ro degraded /dev/sdb /mnt/data
    
    Run Code Online (Sandbox Code Playgroud)

我可以看到所有文件。我尝试将它们同步到另一个目录,但无法复制我创建的 1G 文件之一。有道理,它在丢失的磁盘上!

从这里开始,有没有一种方法可以“废弃”丢失的磁盘及其上的文件,并使事物再次以读/写模式运行?我只是想将一个盒子与一堆随机大小的磁盘拼凑在一起。冗余对我来说并不重要,而且我不希望在这个盒子上镜像数据的开销。

如果我丢失了包含一些数据的驱动器,我只想替换/删除它并从源重新同步以获取 BTRFS 计算机上丢失文件的新副本。

那有意义吗?这可能吗?

btrfs

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

RHEL 5.5 - 需要刷新 /dev/disk/by-label 链接

我已将光纤通道磁盘添加到 RHEL 5.5 服务器。磁盘存在并显示在 /dev/sdxx 下 - 但我需要给 udev 一个踢并让它刷新 /dev/disk/by-label/LABEL 链接;这是我做挂载点的地方。

我不想重新启动系统。

udev disk

4
推荐指数
1
解决办法
4728
查看次数

ZFS 中的 24 小时速成课程......一些最后的问题

由于各种情况,我给自己上了一个关于 ZFS 文件系统的速成课程。我需要一些帮助来适应未知。不管那些是什么。

数据:

  • 在 CentOS 6.2 上运行 www.zfsonlinux.org
  • 我有一个带有 12x2TB SATA 磁盘的阵列。
  • 我在其中创建了一个 raidz2 池和几个 zfs 文件系统。
  • 性能比我预期的要好。(你多久会这样说?)

一些问题:

  • 我应该安排什么类型的维护?我读过建议进行“zpool 擦洗”。你会在什么时间间隔运行这个?还有什么可做的吗?
  • 除了“zpool iostat”-snmp 之外,还有其他性能监控吗?
  • 我需要通过电子邮件或类似方式收到有关磁盘故障等的警报。我有哪些选择?

zfs

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