基础知识系列

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.
基础知识-计算机系统
基础知识-计算机系统
计算机硬件 计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部件组成 运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。 存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。 内部存储器:速度高、容量小,一般用于临时存放程序、数据及中间结果 外部存储器:者容量大、速度慢,可长期保存程序和数据。 输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出处理结果 CPU CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成 功能 程序控制:通过执行指令来控制程序的执行顺序 操作控制:一条指令功能的实现需要若干操作信号配合完成,CPU产生每条指令的操作信号并将操作信号送往不同的部件,控制相应的部件按指令的功能要求进行操作 时间控制:CPU对各种操作进行时间上的控制,即在指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要严格的控制 数据处理:CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。 运算器 运算器由算术逻辑单元、累加寄存器、数据缓存寄存器、状态条件寄存器组成。功能:1.执行所有算术运算2.执行所有的逻辑运算并进行逻辑测试。如与、或、非、零值测试或两个值的比较等 算术逻辑单元(ALU):负责处理数据,实现对数据的算术运算和逻辑运算 累加寄存器(AC):也称为累加器,是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术运算或逻辑运算时,为ALU提供一个工作区 数据缓存寄存器(DR):在对内存储器进行读/写操作时,用DR暂时存放由内存存储器读/写的一条指令或一个数据字,将不同时间段内的读/写数据隔离。主要作用是作为CPU和内存、外部设备之间数据传送中转站;作为CPU和内存、外围设备之间在操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数据寄存器。 状态条件寄存器(PSW):由算数指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志 控制器 运算器只能完成运算,而控制器用于控制整个 CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。 指令控制逻辑 指令寄存器(IR): 当 CPU 执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入 IR 暂存,指令译码器根据 IR 的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。 程序计数器(PC): 具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分为两种情况,一是顺序执行,二是转移执行。 地址寄存器(AR): 保存当前 CPU 所访问的内存单元的地址。 指令译码器(ID): 指令分为操作码和地址码两个部分,为了执行任何给定的命令,必须对操作码进行分析,以便识别所有完成的操作。 时序控制逻辑 为每条指令按时间顺序提供应有的控制信号 总线逻辑 是为多个功能部件服务的信息通路的控制电路。 中断控制 逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给 CPU 处理。 寄存器组 寄存器组分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,其作用是固定的。通用寄存器的用途广泛,并且由程序员规定其用途,其数目因处理器的不同有所差异。 机器数 各种数值在计算机中表示的形式称为机器数,特点是采用二进制计数制,数的符号用 0 和 1 表示,小数点则隐含,表示不占位置。机器数对应的实际数值称为数的真值。 原码: 一个数的正常二进制表示,最高位表示符号。+0(00000000),-0(10000000) 反码:正数的反码即原码,负数的反码是在原码的基础上,除符号位外,其他各位按位取反。+0(00000000),-0(11111111) 补码:正数的补码即原码,负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。+0 = -0 = 0 0000000 移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码 原码最高位表示正负号,且不参与计数,而其他编码最高位虽然也是代表正负号,但是参与计数
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 地址 + 端口号就可以确定一个进程地址