运维

Tmux 安装和使用教程
Tmux 安装和使用教程
tmux 是一个终端 multiplexer,它可以让你在一个终端中开启多个会话,并且可以在一个终端中切换多个会话。 安装 tmux 安装很简单,直接在终端中输入以下命令即可: 1# Ubuntu 或 Debian 2sudo apt-get install tmux 3 4# CentOS 或 Fedora 5sudo yum install tmux 6 7# Mac 8brew install tmux 使用 安装完成后,键入tmux命令,就进入了 Tmux 窗口。 1tmux 按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口。 1exit 前缀键 Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。 举例来说,帮助命令的快捷键是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息。 然后,按下 ESC 键或q键,就可以退出帮助。 快捷键 面板(pane)指令 前缀 指令 描述 Ctrl+b " 当前面板上下一分为二,下侧新建面板 Ctrl+b % 当前面板左右一分为二,右侧新建面板 Ctrl+b x 关闭当前面板(关闭前需输入y or n确认) Ctrl+b z 最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增) Ctrl+b ! 将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效) Ctrl+b ; 切换到最后一次使用的面板 Ctrl+b q 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板 Ctrl+b { 向前置换当前面板 Ctrl+b } 向后置换当前面板 Ctrl+b Ctrl+o 顺时针旋转当前窗口中的所有面板 Ctrl+b 方向键 移动光标切换面板 Ctrl+b o 选择下一面板 Ctrl+b 空格键 在自带的面板布局中循环切换 Ctrl+b Alt+方向键 以5个单元格为单位调整当前面板边缘 Ctrl+b Ctrl+方向键 以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖) Ctrl+b t 显示时钟 系统指令 前缀 指令 描述 Ctrl+b ?
使用 ElasticSearch Curator 7天定期删除日志
使用 ElasticSearch Curator 7天定期删除日志
使用 ElasticSearch Curator 7天定期删除日志 背景 Curator 是 Elastic 官方发布的一个管理 Elasticsearch 索引的工具,可以完成许多索引生命周期的管理工作。 我使用的 elasticseraech 8.0 以上的版本,所有我直接安装最新版的curator,服务器是centos 7 的 二进制安装 下载 1wget https://packages.elastic.co/curator/5/centos/7/Packages/elasticsearch-curator-5.8.4-1.x86_64.rpm 安装 curator 1rpm -ivh elasticsearch-curator-5.8.4-1.x86_64.rpm 2curator --version 进入安装文件,创建文件 1cd /opt/elasticsearch-curator 2mkdir log 3cd log 4touch run.log 创建config.yml文件在log目录下 config.yml样例如下: 配置说明参考官网说明:config.yml 1# Rmember, leave a key empty if there is no value. None will be a string, 2# not a Python "NoneType" 3client: 4 hosts: 5 - 192.168.10.17 # elasticsearch IP 地址 6 port: 9200 7 url_prefix: 8 use_ssl: False 9 certificate: 10 client_cert: 11 client_key: 12 ssl_no_validate: False 13 http_auth: elastic:password # elastic 密码,没有就不用写 14 timeout: 30 15 master_only: False 16 17logging: 18 loglevel: INFO 19 logfile: /opt/elasticsearch-curator/log/run.
GNU/Linux 一键更换系统软件源脚本
GNU/Linux 一键更换系统软件源脚本
背景 有很多小伙伴,在接受公司老项目后,想要更新服务器源时,发现镜像源失效了,手动添加也很不方便,我这里提供了一个脚本供大家使用,轻松切换镜像源。 支持系统:  Debian 8.0 ~ 12  Ubuntu 14.04 ~ 23  Kali Linux 2.0 ~ 2023  Red Hat Enterprise Linux 7.0 ~ 9  Fedora 30 ~ 38  CentOS 7.0 ~ 8.5 / Stream 8 ~ 9  Rocky Linux 8 ~ 9  AlmaLinux 8 ~ 9  OpenCloudOS 8.6 / 9.0  openEuler 21.03 ~ 23  openSUSE Leep 15 / Tumbleweed  Arch Linux all 执行命令 国内使用 1bash <(curl -sSL https://www.jobcher.com/ChangeMirrors.sh) 教育网使用 1bash <(curl -sSL https://www.
JOBCHER BLOG
在windows上安装appium
在windows上安装appium Appium 主要用于软件测试自动化领域,以帮助确定给定应用程序的功能是否按预期工作。与其他类型的软件测试相比,UI 自动化允许测试人员编写代码,在应用程序的实际 UI 中演练用户方案,尽可能模拟现实世界中发生的情况,同时实现自动化的各种好处,包括速度、规模和一致性。 安装nodejs Appium是基于Node.js构建的,所以首先需要安装Node.js 下载地址:https://nodejs.org/en/download/ 下载并安装,验证是否安装成功 1node -v 安装appium 安装Appium。在命令提示符下运行: 1npm install -g appium 安装appium-doctor 安装appium-doctor。在命令提示符下运行: 1npm install -g appium-doctor 安装appium-desktop 安装appium-desktop。在命令提示符下运行: 1npm install -g appium-desktop 安装jdk 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载并安装,验证是否安装成功 1java -version 安装android-sdk 下载地址:https://developer.android.com/studio 下载并安装,验证是否安装成功 1adb version 配置环境变量 在系统环境变量中添加以下变量 1ANDROID_HOME = D:\Android\sdk 2JAVA_HOME = C:\Program Files\Java\jdk1.8.0_311 3Path = %ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;%JAVA_HOME%\bin 验证是否配置成功 1appium-doctor 启动appium 1appium 启动appium-desktop 1appium-desktop 测试脚本 创建测试脚本test.py 1from appium import webdriver 2import time 3 4desired_caps = {} 5 6desired_caps['platformName'] = 'Android' 7desired_caps['platformVersion'] = '10' 8desired_caps['deviceName'] = 'Android Emulator' 9desired_caps['appPackage'] = 'com.
JOBCHER BLOG
可观测性和监控的区别
可观测性(Observability)和监控(Monitoring)都是IT系统中非常重要的概念,但它们有一些显著的区别: 可观测性(Observability) 定义:可观测性是系统设计的一种特性,指的是系统内部状态通过外部输出(如日志、指标、跟踪等)来推断的能力。 目的:目的是了解系统内部的行为和状态,特别是在出现未知问题或故障时,帮助快速定位和解决问题。 特点: 广泛的数据收集:包括日志、指标、分布式追踪等各种类型的数据。 深度分析:通过收集到的数据,可以进行深度分析和关联,找到问题的根本原因。 支持未知问题:可观测性系统设计是为了应对未知问题,而不仅仅是已知的或预期的问题。 监控(Monitoring) 定义:监控是对系统或应用程序进行实时观察和检查,以确保其正常运行,并在出现问题时触发警报。 目的:目的是及时发现和响应已知的、预期的问题或故障。 特点: 预设指标:通常监控系统会预先设定一系列指标(如CPU使用率、内存使用率、响应时间等)进行跟踪。 自动化警报:当某些指标超过预设阈值时,监控系统会自动触发警报,通知相关人员采取行动。 重点在实时性:监控系统强调实时性,确保系统能在短时间内对问题做出响应。 主要区别 目的和范围: 监控主要关注已知问题,提供实时性警报和响应。 可观测性更广泛,旨在理解系统内部的复杂行为,帮助解决未知问题。 数据处理和分析: 监控依赖于预先设定的指标和阈值。 可观测性依赖于广泛的数据收集和深度分析,能处理更复杂的场景。 问题处理方式: 监控系统通常是反应式的,在问题发生时触发警报。 可观测性系统是探索式的,通过分析数据来发现潜在问题。 总结 监控是确保系统健康运行的基本工具,而可观测性则提供了更深入的洞察和分析能力,以便在复杂和不可预知的环境中更好地管理和优化系统。
JOBCHER BLOG
systemd 守护命令
介绍 systemd 是 linux 中用来启动守护进程,Linux 最早一直采用 init 进程 (systemd 架构图) systemd 命令 systemd 不是一个具体的命令,而是一组命令,用于系统管理的各个方面 1.systemctl systemctl是 Systemd 的主命令,用于管理系统。 1# 重启系统 2$ sudo systemctl reboot 3 4# 关闭系统,切断电源 5$ sudo systemctl poweroff 6 7# CPU停止工作 8$ sudo systemctl halt 9 10# 暂停系统 11$ sudo systemctl suspend 12 13# 让系统进入冬眠状态 14$ sudo systemctl hibernate 15 16# 让系统进入交互式休眠状态 17$ sudo systemctl hybrid-sleep 18 19# 启动进入救援状态(单用户状态) 20$ sudo systemctl rescue 2.systemd-analyze systemd-analyze命令用于查看启动耗时 1# 查看启动耗时 2systemd-analyze 3 4# 查看每个服务的启动耗时 5$ systemd-analyze blame 6 7# 显示瀑布状的启动过程流 8$ systemd-analyze critical-chain 9 10# 显示指定服务的启动流 11$ systemd-analyze critical-chain atd.
JOBCHER BLOG
Linux crontab 命令
Linux crontab 命令 Linux crontab是用来定期执行程序的命令。 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置 语法 1crontab [ -u user ] file 2crontab [ -u user ] { -l | -r | -e } 说明: crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。 -u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 参数说明: -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) -r : 删除目前的时程表 -l : 列出目前的时程表 时间格式如下: 1f1 f2 f3 f4 f5 program 2* * * * * 3- - - - - 4| | | | | 5| | | | +----- 星期中星期几 (0 - 6) (星期天 为0) 6| | | +---------- 月份 (1 - 12) 7| | +--------------- 一个月中的第几天 (1 - 31) 8| +-------------------- 小时 (0 - 23) 9+------------------------- 分钟 (0 - 59) 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,.
JOBCHER BLOG
linux常用命令
linux 常用命令 软件操作命令 1#软件包管理器 2yum 3# 安装软件 4yum install xxxx 5# 卸载软件 6yum remove xxx 7# 搜索软件 8yum search xxx 9# 清理缓存 10yum clean packages 11# 列出已安装 12yum list 13# 软件包信息 14yum info 服务器硬件资源和磁盘操作 1# 内存 2free -h 3# 硬盘 4df -h 5# 负载 6w/top/htop 7# 查看cpu 8cat /proc/cpuinfo 9# 查看磁盘 10fdisk -l 文件和文件夹操作命令 命令 解释 ls 查看目录下的文件 touch 新建文件 mkdir 新建目录 cd 进入目录 rm 删除文件和目录 cp 复制 mv 移动 pwd 显示路径 系统用户操作命令 防火墙相关设置 提权操作 sudo 和文件传输
JOBCHER BLOG
linux基础知识
linux 基础知识 1、简述 Linux 权限划分原则。 给文件或目录分配权限时,先考虑所有者和所属组 遵循最小化权限,用啥权限给啥权限 修改目录和子文件归属权限,注意递归 文件权限分配是最常用的安全防护手段 2、当用户 user1,对/testdir 目录有写和执行权限时,该目录下的只读文件 file1 是否可修改和删除? 对 file1 不能修改也不能删除。(如果对目录有写权限和执行权限,则对 file1 不能修改可以删除) 3、如果一个系统没有任何的备份策略,请写出一个较为全面合理的备份方案! 增量备份:将相较于前一天增加的内容备份,适合每天改变量较大的数据。 差异备份:将相较于第一天改变的内容备份,适合原始数据量比较大,但是之后改变的比较小,即使中间哪一天的丢了也没事,只要最后一天,和第一天的在就行。 4、网站服务器每天产生的日志数量较大,请问如何备份? 使用 logrotate 滚动日志 split 大文件切分处理 shell 脚本处理日志 5、简述 Raid 0、Raid 1、Raid 5 的特点与原理。 RAID 等级 最少硬盘 最大容错 可用容量 读取性能 写入性能 安全性 目的 应用产业 单一硬盘 (参考) 0 1 1 1 无 JBOD 1 0 n 1 1 无(同 RAID 0) 增加容量 个人(暂时) 存储备份 0 2 0 n n n 一个硬盘异常,全部硬盘都会异常 追求最大容量、速度 视频剪接缓存用途 1 2 n-1 1 n 1 高,一个正常即可 追求最大安全性 个人、企业备份 5 3 1 n-1 n-1 n-1 中下至中 追求最大容量、最小预算 个人、小型企业备份 6 4 2 n-2 n-2 n-2 中至中高,仅安全性较 RAID 5 高 同 RAID 5,但较安全 个人、企业备份 10 4 高 综合 RAID 0/1 优点,理论速度较快 大型数据库、服务器 50 6 高 提升资料安全 60 8 高 提升资料安全 6、简述 Raid6、Raid 10 的特点与原理。 与 RAID 5 相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6 需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于 RAID 5 有更大的 IO 操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID 6通常不会通过软件方式来实现,而更可能通过硬件方式实现。
JOBCHER BLOG
yaml 语法
yaml 语法 我们使用 YAML 是因为它像 XML 或 JSON 是一种利于人们读写的数据格式. 此外在大多数变成语言中有使用 YAML 的库.YAML 语法的基本概述, 它被用来描述一个 playbooks(我们的配置管理语言). 基本的 YAML 对于 Ansible, 每一个 YAML 文件都是从一个列表开始. 列表中的每一项都是一个键值对, 通常它们被称为一个 “哈希” 或 “字典”. 所以, 我们需要知道如何在 YAML 中编写列表和字典. YAML 还有一个小的怪癖. 所有的 YAML 文件(无论和 Ansible 有没有关系)开始行都应该是 —. 这是 YAML 格式的一部分, 表明一个文件的开始. 1--- 2# 一个美味水果的列表 3- Apple 4- Orange 5- Strawberry 6- Mango
JOBCHER BLOG
iptables 基础知识
iptables 基础知识 内核包过滤与 NAT 管理工具.是 linux 系统中在用户空间中运行的运来配置内核防火墙的工具。它可以设置,维护和检查 linux 内核中的 ipv4 包过滤规则和管理网络地址转换(NAT)。 ipatbles 命令仅支持 ipv4,如果使用的 IP 协议是 ipv6 则需要使用专门的管理工具 ip6tables。 常用参数 参数 作用 -t<表> 指定要操纵的表 -A 向规则链中追加条目 -D 从规则链中删除条目 -I 向规则链中插入条目 -R 替换规则链中的相应条目 -L 显示规则链中的已有条目 -F 清除规则链中的现有条目。不改变规则链的默认目标策略 -Z 清空规则链中的数据包计数器和字节计数器 -N 创建新的用户自定义规则链 -P 定义规则链中的默认目标(策略) -h 显示帮助信息 -p<协议> 指定要匹配的数据包的协议类型 -s<源地址> 指定要匹配的数据包的源 IP 地址 -j<目标> 指定要跳转的目标 -i<网络接口> 指定数据包进入本机的网络接口 -o<网络接口> 指定数据包离开本机做使用的网络接口 -c<包计数> 在执行插入、追加和替换操作时初始化包计数器和字节计数器 参考实例 显示内核当前的 filter 表: 1iptables -L 显示内核当前的 nat 表: 1iptables -L -t nat 禁止本机对 192.
JOBCHER BLOG
网络基础知识
网络基础知识 1、简述 ISO/OSI 七层模型的分层与作用 分层 作用 应用层 应用系统,提供用户服务 例如:HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3 表示层 把数据转换为能与接收者的系统格式兼容并适合传输的格式,数据表示,加密,压缩 会话层 负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。确定数据是否需要进行网络传递 分流网络传递还是本地保存 传输层 对数据分组,对报文进行分组(发送时)、组装(接收时)提供传输协议的选择:TCP (传输控制协议) :可靠的,面向连接的传输协议 (可靠,准确) (慢)UDP (用户数据报协议) :不可靠的,面向无连接的传输协议 (快) (不可靠)。端口封装,差错校验,滑动窗口,留空 网络层 网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络资料。例如:互联网协议(IP)等。1.IP 地址编址 2.路由选择 3.静态路由 4.动态路由 数据链路层 数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。1.MAC 地址编址 2.MAC 地址寻址 3.差错校验 物理层 物理层(Physical Layer)在局域网上发送数据帧(Data Frame)1.数据实际传输 2.电气特性定义 2、TCP/IP 四层模型与作用? 分层 协议 应用层 HTTP、HTTPS、FTP、Telnet、SSH、SMTP、DNS 传输层 TCP、UDP 网络层 ICMP、IGMP、IP、ARP、RARP 数据链路层、物理层 PPP、PPPOE 3、TCP 协议与 UDP 协议工作在哪一层,作用是什么? 传输层,对报文进行分组(发送时)、组装(接收时)提供 当进程需要传输可靠的数据时应使用 TCP,当进程需要高效传输数据,可以忽略可靠性时应使用 UDP 协议。 4、简述 TCP 三次握手的过程。 第一次握手:Client 将标志位 SYN 置为 1,随机产生一个值 seq=J,并将该数据包发送给 Server,Client 进入 SYN_SENT 状态,等待 Server 确认。 第二次握手:Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接,Server 将标志位 SYN 和 ACK 都置为 1,ack=J+1,随机产生一个值 seq=K,并将该数据包发送给 Client 以确认连接请求,Server 进入 SYN_RCVD 状态。 第三次握手:Client 收到确认后,检查 ack 是否为 J+1,ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ack=K+1,并将该数据包发送给 Server,Server 检查 ack 是否为 K+1,ACK 是否为 1,如果正确则连接建立成功,Client 和 Server 进入 ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。 5、简述 TCP 包头的内容。 源端口和目的端口:各占 2 个字节,分别写入源端口和目的端口。IP 地址 + 端口号就可以确定一个进程地址