Linux系统删除find找到的文件或文件夹

当我运行得到结果文件后,需要删除当前目录下许多的中间文件夹:

find ./ -maxdepth 1 -type d -regex "./\w.*" -exec rm -rf {} +

各参数意义如下:
./ 是被搜索的文件夹
-maxdepth 1 表示仅搜索第一层目录
-type d 表示仅搜索文件夹类型数据,注意该参数要放-maxdepth参数后面,否则程序会有警告信息。
-regex "./\w.*" 使用正则表达式方式搜索数据,该正则表达式不会搜索当前目录下名称为 . 的目录,以防把当前目录直接删除
-exec rm -rf {} + 用于对搜索到的文件执行相应的操作,其中{}表示搜索到的文件路径。{}后面可以接空格加号或空格反斜线分号。

将当前目录下所有权限为600的普通文件变为644,

find ./ -type f -perm 600 -exec chmod 644 {} +

将当前目录下所有权限为700的文件夹变成755:

find ./ -type d -perm 700 -exec chmod 755 {} +

ssh登陆到服务器后自动切换到指定目录

我有多台服务器,每台服务器都将其存储挂载到了/disks/目录下并通过万兆网共享给所有局域网其它服务器。此时,我需要当切换到其它服务器时,一步到位自动切换到其存储目录下。此时,我按如下操作执行ssh命令即可。

ssh -t node2 "cd /disks/node2_16TB/chenlianfu; bash"

# ssh登陆node2服务器时,执行cd命令并使用bash命令登陆当前用户。若不加-t参数,ssh则时登陆到目标服务器后,执行相应命令后返回到当前主机。添加-t参数则表示强制分配虚拟终端,有利于远程服务器上一些依赖屏幕软件(例如less和bash命令)的运行。

# 想了解-t参数的意义,可以比较以下两个命令的差异。
ssh -t node2 "less /proc/cpuinfo"
ssh node2 "less /proc/cpuinfo"
# 只有添加了-t参数,才能真正让less命令使用屏幕,否则,不会为less命令分配虚拟终端而不能正常运行。

出行指南

1. 从广州火车站到华南植物园科研区

在广州火车站地铁站,搭乘地铁5号线(文冲方向)到区庄站;换乘地铁6号线(香雪方向)到地铁长湴站A出口;换乘775路公交车到华南植物园西门下车即到。

CentOS8系统下识别H700/H800阵列卡

安装CentOS8系统后,由于缺少DELL H700/H800的阵列卡驱动。可以自己手动安装其驱动:

wget https://elrepo.org/linux/dud/el8/x86_64/dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso
mount -o ro dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso /mnt/
dnf -y install /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm

但是要注意的是,安装驱动完毕后,重启系统后导致网卡驱动不能正常识别。

可以考虑安装系统时,同时安装Megaraid驱动。将其ISO镜像文件使用UltraISO烧录到一个U盘中。然后将该U盘和CentOS8启动U盘同时插入到服务器上安装系统。从启动U盘启动CentOS8系统安装,在启动安装界面按字母e对启动参数进行编辑,后面添加参数信息inst.dd=/dev/sdb4,表示通过第二个U盘第四个分区中的驱动数据安装驱动,然后按ctrl + x启动,若顺利的话,则可以识别H700整列卡从而可以安装CentOS8系统。

制作CentOS8系统的U盘启动盘

当在Windows系统上使用UltraISO软件来制作CentOS8系统的U盘启动盘时:若使用默认的USB-HDD+写入方式制作出来的CentOS8启动盘是无法启动安装系统的,这种方式适合绝大部分系统镜像;这时需要使用RAW写入方式来烧录ISO镜像文件,从而可以正常启动CentOS8系统安装界面,但是这种模式下U盘不能再正常写入数据。

推荐在Windows系统下使用Rufus软件制作CentOS8的U盘启动盘。这种方法既能制作正常的启动盘,也能让U盘正常读写数据。

1. 先下载Rufus软件
2. 启动软件,选择CentOS8镜像文件
3. 设置卷标为CentOS8_1
4. 点击开始,同意联网下载两个文件
5. 选择默认的ISO镜像模式写入
6. 点击OK开始将数据烧录到U盘中。

CEPH故障以其处理方法

1. Slow OSD heartbeats

# ceph -s
health: HEALTH_WARN
       Slow OSD heartbeats on back (longest 6181.010ms)
       Slow OSD heartbeats on front (longest 5953.232ms)

OSDs之间会相互测试(ping)访问速度,若两个OSDs之间的连接延迟高于1s,则表示OSDs之间的延迟太高,不利于CEPH集群的数据存储和访问。两个OSDs之间可以通过内网(存储服务器之间 / back)检测其延迟,也可以通过外网(存储服务器到使用服务器 / front)检测其延迟。若延迟过高,会将相应的OSDs down掉,进而可能导致CEPH数据丢失。

一般情况下OSDs之间延迟高的原因是因为网络原因导致的。通过查看详细的OSDs延迟信息查找延迟较高的主机,再进行解决。

# ceph health detail

[WRN] OSD_SLOW_PING_TIME_BACK: Slow OSD heartbeats on back (longest 11846.602ms)
    Slow OSD heartbeats on back from osd.12 [] to osd.25 [] 11846.602 msec
    Slow OSD heartbeats on back from osd.8 [] to osd.17 [] 3617.281 msec
    Slow OSD heartbeats on back from osd.16 [] to osd.27 [] 2784.517 msec
    Slow OSD heartbeats on back from osd.21 [] to osd.17 [] 1678.064 msec
    Slow OSD heartbeats on back from osd.11 [] to osd.15 [] 1675.884 msec
    Slow OSD heartbeats on back from osd.20 [] to osd.13 [] 1073.790 msec
[WRN] OSD_SLOW_PING_TIME_FRONT: Slow OSD heartbeats on front (longest 11427.677ms)
    Slow OSD heartbeats on front from osd.12 [] to osd.25 [] 11427.677 msec
    Slow OSD heartbeats on front from osd.8 [] to osd.17 [] 3787.868 msec
    Slow OSD heartbeats on front from osd.16 [] to osd.27 [] 3465.298 msec
    Slow OSD heartbeats on front from osd.11 [] to osd.15 [] 1469.591 msec
    Slow OSD heartbeats on front from osd.21 [] to osd.17 [] 1341.135 msec
    Slow OSD heartbeats on front from osd.20 [] to osd.13 [] 1224.235 msec
    Slow OSD heartbeats on front from osd.5 [] to osd.16 [] 1101.175 msec

通过以上信息查看,可以发现有一台主机和其它主机的OSDs延迟都比较高,将该主机的光纤网线拔下擦拭干净并重新插上得以解决。

2. slow ops

# ceph -s
     21 slow ops, oldest one blocked for 29972 sec, mon.ceph1 has slow ops

先保证所有存储服务器上的时间同步一致,再重启相应主机上的moniter服务解决。

3. pgs not deep-scrubbed in time

# ceph -s
    47 pgs not deep-scrubbed in time

应该是OSDs掉线后,CEPH自动进行数据恢复。再将相应的OSDs重新加入后,则需要将恢复的数据再擦除掉。于是提示相应的警告信息,正在进行删除相关的操作,且其pgs的数量会不断变少。等待一段时间后,则恢复正常,此时ceph文件系统性能很差。

Linux系统下挂载exFat分区

1. 安装exfat软件

使用root用户下载并安装exfat软件:

# 先安装exfat件依赖的系统软件
dnf install -y fuse fuse-devel

# 下载exfat源码包并安装
wget https://github.com/relan/exfat/archive/v1.3.0.tar.gz -O /media/software_packages/exfat-1.3.0.tar.gz
tar zxf /media/software_packages/exfat-1.3.0.tar.gz
cd exfat-1.3.0/
autoreconf --install
./configure --prefix=/usr && make -j 4 && make install
cd ../ && rm -rf exfat-1.3.0

2. 挂载exfat移动硬盘

mount.exfat /dev/sdb1 /mnt
# 或
mount -t exfat /dev/sdb1 /mnt
# 或
mount /dev/sdb1 /mnt
# 第3个命令若要执行成功,需要将软件安装在/usr目录下。

在windows和Linux系统之间进行数据备份

1. 数据备份目的

我希望将一些重要的文本数据保存在我的多台windows电脑和服务器中。这样实现数据的安全的同时,能随时在不同的windows电脑上对这些文件进行访问和实时修改。

为了实现这样的功能,我的操作方法是:以Linux服务器上的数据为主,每当开启我的某台windows系统后,我会点击桌面上的一个程序,开始和服务器上的数据进行同步;每当对数据文件进行修改后,再次点击桌面上的程序,再次进行和服务器的数据同步。具体备份机制则是使用rsync命令进行数据文件夹的同步,能检测各个文件的时间戳,从而对整个文件夹进行快速更新,而不是全部重新拷贝。

2. Windows系统下安装Cygwinapt-cyg软件

由于windows系统下没有后Linux系统的rsync命令,则推荐在windows系统下安装Cygwin软件。使用该软件能在windows系统下体验Linux应用的运行。下载最新版本的Cygwin软件,然后在windows系统下进行安装。需要注意的是,安装的时候要选择或填写可用的镜像站点网址(例如,http://mirrors.163.com/cygwin/)才能进行联网下载和安装。安装完毕后,双击windows系统桌面上的软件图标,则打开了一个Linux系统的终端,用于Linux系统命令的直接运行。此外,Cygwin软件在Windows目录C:\cygwin64\bin下生成了各个Linux命令的exe文件,可以用于windows下CMD中运行相应的命令。

Cygwin其实是在Windows系统上安装了一个可以在Windows系统中直接运行Linux命令的特殊的小型虚拟机。为了能在该虚拟的Linux系统中安装软件,还需要安装其包管理器软件apt-cyg。双击桌面上的Cygwin64 Terminal软件图标,打开终端,输入如下命令安装apt-cyg软件,再安装rsync命令:

# 从官网下载apt-cyg软件,其实是一个bash脚本程序
curl https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
chmod 755 apt-cyg
mv apt-cyg /usr/bin

# 设置apt-cyg的源
apt-cyg mirror http://mirrors.163.com/cygwin
# 下载并安装rsync和oenssh软件
apt-cyg install rsync openssh 
# 若报错没有wget和lynx命令,则重新双击Cygwin安装软件再次安装,搜索并选中wget和lynx命令,额外安装这两个命令后,则可以让apt-cyg顺利运行。

其实,也可以在安装过程中安装一些需要的软,例如:openssh, curl, wget, perl, rsync等。

3. 在Cygwin终端中运行rsync命令备份数据

# 从服务器上下载ssh密钥
scp -r chenlianfu@47.104.224.181:~/.ssh ./

# 利用密钥将D盘上的一个文件夹备份到服务器上
rsync -a -v -P --delete -e 'ssh -i /home/ChenLianfu/.ssh/id_rsa' /cygdrive/d/ChenLianfu_Data chenlianfu@47.104.224.181:~/
# 使用-a参数能保留文件的时间戳和权限信息;使用-v参数输出程序运行日志信息;使用-P参数支持断点续传和进度信息;使用--delete参数则先在目的端删除本地没有的文件,再进行数据备份;使用-e参数设置ssh参数信息。

# 利用密钥将服务器上的数据下载到本地
rsync -a -v -P -e 'ssh -i /home/ChenLianfu/.ssh/id_rsa' chenlianfu@47.104.224.181:~/ChenLianfu_Data /cygdrive/d/

安装smcpp软件

使用Conda安装smcpp软件:

# 下载最新版本的miniconda并安装
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 将软件安装到指定目录/opt/biosoft/miniconda3_for_smcpp,并设置不要修改~/.bashrc

# 载入conda环境,更新conda,安装smcpp软件
export PATH=/opt/biosoft/miniconda3_for_smcpp/bin/:$PATH
conda update conda
conda create -n smcpp -c conda-forge -c terhorst smcpp

# 使用smcpp软件方法,需要先载入conda环境,再激活smcpp软件环境
export PATH=/opt/biosoft/miniconda3_for_smcpp/bin/:$PATH
source activate /opt/biosoft/miniconda3_for_smcpp
conda activate smcpp

# 使用smcpp软件命令
smc++

# 报错缺少libbz2库文件,安装bzip2软件
conda install -c conda-forge bzip2

# 报错
from pysam.libchtslib import * ImportError: /lib64/libm.so.6: version `GLIBC_2.29' not found,与当前gcc不兼容。使用当前版本gcc重新编译python的pysam模块。
rm -rf /opt/biosoft/miniconda3_for_smcpp/envs/smcpp/lib/python3.7/site-packages/pysam* 
cd /opt/biosoft/miniconda3_for_smcpp/
wget https://files.pythonhosted.org/packages/18/74/69018650a6ec9dae2eb2f710e158fa395134ce579c605f152e41890e7f3c/pysam-0.16.0.tar.gz
tar zxf pysam-0.16.0.tar.gz 
cd pysam-0.16.0/
python setup.py install

CentOS8系统使用小经验

1. 中文输入法安装

CentOS8系统安装完毕后,默认没有中文输入法,需要安装:

yum install -y ibus-libpinyin

若是已经在桌面环境中,则需要注销了重新进入桌面。然后打开控制面板,依次点击Region & Language —— Input Source下的加号 —— Chinese (China) —— Chinese (Intelligent Pinyin) —— Add。再在输入栏中输入字符前,按windows+空格即可切换中文输入法。

2. 双系统启动修改优先使用windows10系统

# 先备份系统启动配置文件
cp /boot/efi/EFI/centos/grubenv /boot/efi/EFI/centos/grubenv.bak

# 找到window10系统的启动菜单ID
menuentry_id=`perl -ne 'print $1 if m/Windows Boot Manager.*(osprober[\w-]+)/' /boot/efi/EFI/centos/grub.cfg`
echo $menuentry_id

# 将默认启动菜单ID替换为Window10系统启动菜单ID
echo perl -p -i -e \'s/saved_entry=.*/saved_entry=$menuentry_id/\' grubenv | sh

# 重启机器检测是否默认从Windows10启动系统
shutdown -r now