使用sshfs挂载远程服务器目录
服务器日志查看,是开发人员和服务器运维人员在工作中经常会遇到的一件事情,只有一台服务器时,比较好办,直接登录服务器使用tail -f file-path
命令就可以实时查看到日志文件的输出。当有负载的需要,服务器多了之后,就会比较麻烦,为了查找一个问题的日志可能需要登录多台服务器。今天给大家介绍一种借助sshfs,非常简单的日志文件挂载方案,可以方便大家查看服务器日志文件。
sshfs介绍
sshfs是基于fuse构建的ssh文件系统客户端程序,通过它远程主机的配置无需作任何改变,就可以透过SSH协议来挂载远程文件系统了,非常方便及安全。
sshfs的安装,在centOS中的安装命令如下:
yum -y install sshfs
挂载
sshfs的远程文件挂载,需要结合ssh免密码登录一起实施。假设现在有A、B、C三台服务器的日志,需要挂载到D服务器。首先需要将D服务器的公钥写入A、B、C三台服务器。配置方法参见我之前的文章。
把远程服务器的 /mydata/logs/
目录下的所有文件,挂载到D服务器,在D服务器的/mydata/logs/
目录下为每个服务器建一个目录。(ip_address_A代表A服务器的ip地址,需要自行替换)
//把A服务器的 /mydata/logs/ 目录 挂载到 D服务器的 /mydata/logs/A/ 目录
sshfs root@ip_address_A:/mydata/logs/ /mydata/logs/A/
其他两台服务器的挂载方法一样。挂载成功后,可以使用 mount命令查看挂载情况:
mount -l
可以看到挂载的情况:
root@ip_address_A:/mydata/logs/on /mydata/logs/A type fuse.sshfs (rw,nosuid,nodev)
root@ip_address_B:/mydata/logs/on /mydata/logs/B type fuse.sshfs (rw,nosuid,nodev)
root@ip_address_C:/mydata/logs/on /mydata/logs/C type fuse.sshfs (rw,nosuid,nodev)
也可以使用df -h
命令查看磁盘的挂载情况。另外,想要开机自动挂载目录,可以编辑/etc/fstab
文件,加入以下几行:
sshfs#root@ip_address_A:/mydata/logs/ /mydata/logs/A fuse defaults,auto,allow_other 0 0
sshfs#root@ip_address_B:/mydata/logs/ /mydata/logs/B fuse defaults,auto,allow_other 0 0
sshfs#root@ip_address_C:/mydata/logs/ /mydata/logs/C fuse defaults,auto,allow_other 0 0
其中,allow_other
参数代表该设置对其他用户也生效。也必须先把ssh自动登录配置好了,让root用户能够使用root身份登录远程主机。配置方法参见我之前的文章。
挂载成功后,就可以在服务器D直接查看所有服务器的日志了,在D服务器的/mydata/logs/
目录输入以下命令。(假设A、B、C三台服务器的/mydata/logs/
目录下都有log.txt这个文件)
tail -f */log.txt
日志的输出中,会标出日志是在哪台服务器的,例如:
==> A/log.txt <==
get log message from A
假如只想查看日志中包含关键字 a b c
的日志,可以这样查看
tail -f */log.txt | grep 'a b c'
日志的输出会有一定的延时。 需要注意的是,取消挂载时,不要直接删除挂载目录,请使用以下命令取消挂载:
fusermount -u /mydata/logs/A
或者直接使用umount
命令取消挂载。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试官带你学Android——面试中Handler 这些必备知识点你都知道吗?
- leetcode哈希表之前K个高频元素
- Kali之U盘启动加密与持久化存储制作流程
- Gentoo发行版系统基础使用记录
- Ubuntu-20.04-LTS桌面版与服务器版基础初始配置
- Snap容器基础入门使用
- zabbix入门学习
- 突击并发编程JUC系列-ReentrantReadWriteLock
- Qt音视频开发33-ffmpeg安卓版
- Vue.js|Nuxt仿制探探堆叠滑动|vue仿Tinder卡片效果
- Elasticsearch:透彻理解 Elasticsearch 中的 Bucket aggregation
- html+js开发模拟考试在线评分系统
- iOS音视频接入 - TRTC接入实时视频通话
- LRU缓存淘汰机制C++实现
- ant-design-vue运行时动态切换主题色