首页 > 其他分享 >这些日常运维实用技巧,忍不住拍案叫绝~

这些日常运维实用技巧,忍不住拍案叫绝~

时间:2023-09-08 14:36:19浏览次数:36  
标签:test1 实用技巧 删除 运维 -- 拍案叫绝 508 rm delete

需求

在运维工作中随着我们积累的经验不断增多,不知你是否遇到过以下几个场景:

  • Linux 如何快速删除大量文件?
  • Vsphere 如何在不重启的情况下识别新添加的iscsi硬盘?
  • Linux 中 rm 命令如何做到防误删?
  • 不同 Linux 服务器之间如何实现快速挂载?
  • Linux 中如何将用户快速添加到附属组?
  • 细心的人往往会通过自己特有的方式来快速处理,不禁让人拍手叫绝。

下面我就来具体介绍下我的处理方式吧。

1.Linux如何快速删除大量文件?

在Linux中对于删除大量小文件或删除大文件,我们一般会通过rm命令直接删除,这时你就很有可能会遇到以下问题:

  • rm删除过程耗时很长,效率低下;
  • rm删除完毕后,文件不存在但是磁盘空间仍未释放;

其实以上问题都和rm命令有关,因为rm删除内容时,是将目录的每一个条目逐个删除(unlink),而且需要循环重复遍历很多次;虽然unlink解除,但是进程仍可以读取已删除的问题件,导致磁盘不释放。

在此我们可以使用rsync命令来代替rm。rsync删除内容时,通过建立好新的空目录替换掉老目录,不需要进行大量的遍历操作,因此效率会高很多。

rsync提供了一些跟删除相关的参数如下:

rsync --help | grep delete 
     --del                   an alias for --delete-during 
     --delete                delete files that don't exist on the sending side 
     --delete-before         receiver deletes before transfer (default) 
     --delete-during         receiver deletes during transfer, not before 
     --delete-after          receiver deletes after transfer, not before 
     --delete-excluded       also delete excluded files on the receiving side 
     --ignore-errors         delete even if there are I/O errors 
     --max-delete=NUM        don't delete more than NUM files

快速删除目录

1. 建立一个空目录
    mkdir -p /del_tmp
2. 需要清空的目标目录
    /del_dest
3. 如果目标目录下有大量的小文件,清空目录下文件
    rsync --delete-before -a -H -v --progress --stats ./del_tmp/  ./del_dest/


选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
--stats 给出某些文件的传输状态

快速删除文件

「注意:」当SRC和DEST文件性质不一致时将会报错;当SRC和DEST性质都为文件【f】时,意思是清空文件内容而不是删除文件;当SRC和DEST性质都为目录【d】时,意思是删除该目录下的所有文件,使其变为空目录;

2. Vsphere 如何在不重启的情况下识别新添加的iscsi硬盘?


Vsphere虚拟机新添加硬盘进行LVM扩容,此时需要重启刷新文件系统,否则无法识别新添加的硬盘。重启服务器这对于生产环境来说是不允许的,那么有什么方法能够实现在线刷新文件系统呢?

在此有两种方法:

第一种方法

没有新增硬盘前的SCSI设备参数如图

这些日常运维实用技巧,忍不住拍案叫绝~_误删

如果新添加的硬盘为“Direct-Access”类型,因此我们需要执行命令,将Id+1后将是新磁盘的Id号:
echo  'scsi add-single-device 2 0 1 0' > /proc/scsi/scsi

其中:

  • HOST,主机适配器标识,第一个适配器为0,在此新增加硬盘的适配器为2;
  • Channel,主机适配器上的SCSI通道,第一个通道为00,新增加磁盘的SCSI通道仍为00;
  • ID,设备的SCSI标识 ,即硬盘标识从00开始,新增加磁盘的标识为01;

增加硬盘后的SCSI设备参数如图

这些日常运维实用技巧,忍不住拍案叫绝~_文件系统_02

第二种方法:

# 刷新SCSI,需要根据hosts数量确认刷新次数。
# 如果系统有3个scsi host,则需要刷新3次
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

以上两种方式都可以实现在不重启服务器的情况下识别到新添加的硬盘,请根据实际情况进行选择。

3.Linux中rm命令如何做到防误删?


Linux系统中冒号(:)在bash中是一个內建命令,而不单纯是一个分隔符,它的主要作用是空命令、参数扩展、重定向、注释等。我们可以使用其参数扩展特性实现rm的防误删功能。

格式:${parameter:-test}   
功能:如果parameter没有设置或者为空,替换为test;否则替换为parameter的值。
命令:rm -rf ${dest:-test}
用法:当变量dest为空时,删除test;当变量dest不为空时,删除test
用例:rm -rf /$dest。当变量dest没有设置或为空时,则命令变成rm -rf /,这将误删系统根目录,导致系统崩溃。
改进:rm -rf /${dest:-test},当变量dest没有设置或为空时,会使用test代替,则命令变成rm -rf /test,删除此目录不会产生任何影响。

4.不同Linux服务器之间如何实现快速挂载?


不同Linux服务器之间的共享,我们一般通过NFS来实现。但是有一次同事在进行迁移ELK时,使用了sshfs命令快速基于ssh协议快速实现了数据的共享。

SSHFS(Secure SHell FileSystem)是一个客户端,可以让我们通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互。

具体使用如下:

# 1.安装 SSHFS
yum install sshfs


# 2.创建 SSHFS 挂载目录
mkdir /mnt/data


# 3.使用 SSHFS 挂载远程的文件系统
sshfs test@x.x.x.x:/home/test/ /mnt/data


如果SSH有密钥授权,我们也可以使用公钥实现挂载
sshfs -o IdentityFile=~/.ssh/id_rsa test@x.x.x.x:/home/test/ /mnt/data

正如你所看到的,通过sshfs命令我们快速实现了挂载,相对于NFS非常方便。

5.Linux中如何将用户快速添加到附属组?


对于Linux操作系统,我们一般使用usermod命令来调整用户分组,但是在使用过程中是有痛点的。

# 1.新增3个用户
# useradd test1
uid=508(test1) gid=508(test1) groups=508(test1)
# useradd test2
uid=509(test2) gid=509(test2) groups=509(test2)
# useradd test3
uid=510(test3) gid=510(test3) groups=510(test3)


# 2.调整test1 附加组
# usermod -G test2 test1
uid=508(test1) gid=508(test1) groups=508(test1),509(test2)
# usermod -G test3 test1
uid=508(test1) gid=508(test1) groups=508(test1),510(test3)
# usermod -G test2,test3 test1
uid=508(test1) gid=508(test1) groups=508(test1),509(test2),510(test3)

通过以上命令,我们可以看到以下痛点:

  • 每次usermod附加组调整,会覆盖原来的分组
  • usermod调整多个分组时,必须将所有分组一并添加,否则会覆盖原来分组

那么是否有命令可以让我们在不必提前知道原来的分组信息的情况下而直接更新分组呢?gpasswd就可以解决我们的痛点问题,它是Linux下工作组文件/etc/group和/etc/gshadow管理工具,用于将一个用户添加到组或者从组中删除。

# 1.将test1添加到test2分组
# gpasswd -a test1 test2
uid=508(test1) gid=508(test1) groups=508(test1),509(test2)
# 2.将test1添加到test3分组
# gpasswd -a test1 test3
uid=508(test1) gid=508(test1) groups=508(test1),509(test2),510(test3)

我们一般不会遇到用户同时隶属于多个分组的情况,但是在做文件共享,因权限分离需求才会用到,此时我们通过gpasswd命令会方便很多。

总结

在运维过程中我们通过常规操作就可以解决大多数问题,但是在处理过程中可能会存在效率不高、操作麻烦等问题。因此在日常工作中要多探索、多总结,这可能会给我们带来意想不到的效果。

标签:test1,实用技巧,删除,运维,--,拍案叫绝,508,rm,delete
From: https://blog.51cto.com/u_15576159/7409599

相关文章

  • 运维事故减少80%,工单和值守服务上大分
    “相比较系统上线之前,事故降低了80%,我们运维工程师时间节约40%! ”“监控系统如果没有工单服务台,发现问题,没有解决问题方案,也没闭环的服务流程,那事实上没有起到啥作用,LinkSLA提出的主动式运服务,最为打动我,事实上,效果真的非常不错。”信息部门人力缺乏,往往是一个萝卜多个坑,无法做到......
  • Linux运维工程师面试题(8)
    Linux运维工程师面试题(8)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1docker的网络类型,使用场景none:在使用none模式后,Docker容器不会进行任何网络配置,没有网卡、没有IP也没有路由,因此......
  • 快速部署灵活、强大、易用的开源spug 运维平台
    Docker安装vidocker-compose.ymlversion:"3.3"services:db:image:mariadb:10.8.2container_name:spug-dbrestart:alwayscommand:--port3306--character-set-server=utf8mb4--collation-server=utf8mb4_unicode_civolumes:......
  • 运维人的焦虑日常,等一个新的开始
    小春(化名),一个90后运维总监,需要统筹近60个项目,每天面临着各个项目的运维问题,她的工作就是帮助客户解决问题。小春总是尽最大努力在24小时内给客户一个满意的答复,她认为运维就是守护客户业务平稳、顺利进行。初困工作,手忙脚乱一天上午,客户在钉钉群艾特小春,“老师好,点扫描没有反应,不能......
  • 国内某头部理财服务提供商基于白鲸调度系统建立统一调度和监控运维
    导读:国内某头部理财服务提供商成立于2019年,是股份制银行中首批获准筹建、首家获准开业、首家成立的银行理财子公司。自2004年推出国内首支人民币理财产品以来,通过投资模式的不断创新和投资管理能力的持续提升,引领国内银行业理财市场。该企业每天处理的任务量达1W,内部系统众......
  • Linux运维工程师面试题(7)
    Linux运维工程师面试题(7)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1常用的ansible模块有哪些PingCommandShellScriptCopyFetchFileYumServiceUserGroupLineinfileRepla......
  • Linux运维工程师面试题(7)
    目录Linux运维工程师面试题(7)1常用的ansible模块有哪些2说一下ansible使用roles编排的目录结构3docker六大命名空间namespace4cgroups的作用5runc的作用6docker常用的命令7docker存储引擎有哪些,区别是什么8进入docker容器有几种方法,区别是什么9Dockerfile......
  • 基于全息感知的智慧高速IT设施监控运维方案
    作为智能交通的重要细分领域,建设智慧高速是实施交通强国战略的重要基础。在信息化时代,交通行业已经依托信息化建设取得了显著的成果,其中以收费网络、办公网络、监控网络和通讯网络为基础的网络架构已经形成,并且正在逐步完善网络架构的安全运维和优化建设。智慧高速公路作为交通行......
  • 系统-部署-运维系列导航
    系统环境Linux软件环境初始化(CentOS)LinuxDNS配置手册LinuxWindows常用命令Linux分区、LVM、文件系统(CentOS7)LinuxNTP时钟同步Linux开发小工具Python-3.10.5学习笔记银河麒麟操作系统 部署运维组件安装部署手册模板Linux僵尸进程与孤儿进程Linux服务进程守......
  • 盘点多个微信实用技巧
    目录1、识别文字2、定时提醒3、稍后阅读4、建一个「只有自己的群」5、用“马甲”保护隐私6、找回未保存的群聊7、删除好友后“后悔了”1、识别文字我们可以对提取的文字进行复制、收藏、转发等操作。2、定时提醒选中某一条消息,可设置定时提醒,避免遗忘重要的事情。提示......