linux 笔记达内01
一、软件测试课程关系: 测试理论、手工测试项目、编程语言Python、数据库SQL、Web功能自动化 Selenium、Linux操作系统、性能测试、接口测试、手机测试 全栈 Linux操作系统:Operating System 系统软件 用户界面 -- OS -- 管理大量硬件:CPU、Memory、Disk、外设 图形、命令行 中央处理器 内存 磁盘 键盘、显示器 运行应用程序 目的:搭建测试环境 大部分服务器OS: Linux、Unix 银行、金融、电信、电商 稳定(7*24)、安全、高效(多任务并发执行) 学会常用的系统管理命令 Linux是许多系统的基础:Android、IOS等的内核 (Linux内核+Java) 学习计算机原理好途径:学习Linux 二、今天主要任务: 1、安装Linux系统 使用VM模拟裸机、再安装系统 2、配置网络环境 客户端 --网络-- 服务器系统 3、使用基本命令 常用命令:结构、用法、特点 三、安装Linux系统 1、方式: 1)使用裸机直接安装:早期服务器、PC常用; 2)使用虚拟机:VMware软件 模拟一台或多台机器 多机集群、分布式、云计算,通过虚拟化,模拟多台机器 目前:通过虚拟机模拟一台机器,安装OS:Red Hat Linux 红帽 便于工作和学习 环境相对独立、互不影响 区分软件版本:版本不是越高越好,而是越适合越好 Windows64位:VMware12 15适合Windows10使用 Windows32位:VMware8 准备:Linux系统的安装包-- iso文件 虚拟光盘镜像文件 shrike-i386-disc1.iso 638MB shrike-i386-disc2.iso 646MB shrike-i386-disc3.iso 485MB <1> 文件File -> 新建虚拟机 New Virture Machine <2> 自定义 Custom <3> 硬件兼容性:Workstation 6.5-7 <4> 稍后安装操作系统 install OS 原因:目前未配置硬盘,先以空白硬盘方式创建 <5> 选择系统类型:Linux 版本:Red Hat Linux <6> 建议建立独立的文件夹,保存虚拟文件资源: E:\mylinux <7> 虚拟机名:Red Hat Linux 位置:E:\mylinux <8> 处理器配置:CPU、Processor 数量: 1个 内核数:1个 单核 总内核数:1个 <9> 虚拟机内存:1G 就是1024MB 建议:不要超过物理机内存一半 <10> 网络连接: 如果选第1项:桥接方式 --未来搭建局域网的建议配置 局域网内的其他机器能够访问到该虚拟机 要求不同机器的IP地址要区别开 如果选第3项:仅主机模式(私有) -- 目前先选择 仅自己物理机能访问该虚拟机 <11> I/O控制器类型: 就是磁盘控制器 就是输入Input/输出Output 磁盘读 磁盘写 Read Write 主语是内存(主存) 内存从磁盘读数据,称为输入 内存向磁盘写数据,称为输出 默认:SCSI风格 BusLogic 总线逻辑 (性能高) <12> 虚拟磁盘类型:SCSI <13> 创建新虚拟磁盘 <14> 指定磁盘大小:8GB 将虚拟磁盘存储为单个文件 <15> 指定磁盘文件:Red Hat Linux.vmdk 虚拟磁盘文件 <16> 完成 目前具备一台裸机(没有安装OS的电脑) 查看配置是否符合要求 后续可更改:虚拟机 菜单 -> 设置 Settings 3)开机 Power on 如何在物理机 和 虚拟机 之间切换? 物理机 -> 虚拟机: 鼠标点入 虚拟机 -> 物理机: ctrl + alt 问题:Operating System not found 操作系统找不到 4)先关机 Power off 5)虚拟机->设置 选择CD/DVD 选择shrike-i386-disc1.iso 文件 好比:将disc1光盘放入到光驱中 6)再次开机,遇到提示框一般确定 立刻鼠标点入VM内部,立刻敲回车 Enter 区别:希望以图形化界面方式安装系统,直接回车 (建议) install or upgrade Linux graphical 安装 更新 图形化 希望以文本字符界面方式安装,输入linux text再回车 Enter (默认也是) text mode 文本模式 7)选择:Skip 跳过 回车 技巧:Tab 切换选择单元格 或 左右方向键 8)欢迎界面 -> Next 下一步 9)安装提示语言:简体中文 -> Next 10)键盘配置 默认 -> 下一步 US.English 美式键盘 以系统默认识别的为准 11)鼠标配置 默认 -> 下一步 带滑轮鼠标(PS/2) 12)安装类型:定制 建议自己配置细节 13)磁盘分区设置: 改为:手工分区 -> 下一步 14)警告:选是 重新分区会格式化,清除之前数据 15)磁盘设置: 根目录/ 下的dev子目录 device 设备 目前只有一块硬盘,名称:/dev/sda (设备文件名,代表一块硬盘) 需要进行分区: 设备分区名: 挂载点(目录名): 类型: 大小: /dev/sda1 /boot ext3 100M /dev/sda2 无 <不适用> swap 2G 2000MB /dev/sda3 / ext3 余下6G 使用全部可用空间 注意:选中“空闲” 再新建 swap分区:交换分区、虚拟内存 归系统内核直接指挥 当系统的物理内存不够用时,会将硬盘的部分空间模拟成内存使用; 原理:内存的读写速度远远大于磁盘 偶尔使用虚拟内存,能够救急,如果频繁使用会导致效率明显降低; 建议:在系统的性能测试过程中,要适当关注虚拟内存的使用率 top 如果较高,说明物理内存不足,存在性能瓶颈; -> 下一步 16)引导转载程序配置 默认 -> 下一步 17)网络配置 默认 -> 下一步 后续重点配置IP地址等 18)防火墙配置 默认 -> 下一步 19)附加语言支持 默认 中文-> 下一步 20)时区选择 默认 -> 下一步 21)设置根口令:123456 123456 root 用户 登录密码 login Linux/Unix中超级管理员、超级用户:root 拥有系统的最高权限、所有权限 123456 abc123 暴力破解(穷举法、蛮力法) 通过工具 cptbtptp123@@bcptdtptp456^^ 谐音记忆法: 横看成岭侧成峰,远近高低各不同 hkclccf1122@yjgdgbt3344 不识庐山真面目,只缘身在此山中 如何设置服务器的密码才安全? <1> 必须由字母、数字、特殊字符组合而成; <2> 位数不能少于15位; <3> 不能是生活中常用词,比如人名、单词、电话; <4> 不能写在书面上; <5> 不能一码通; 不同主机设置不同的密码 <6> 要定期更换; 比如一周一换、一月一换 二战:计算机科学之父、人工智能之父 艾伦.图灵 图灵奖 数学家、密码学家 打造计算机破解 超级密码 -> 下一步 22)验证配置: 默认 -> 下一步 启用MD5口令:MD5加密算法 明文 -> 密文 几乎不能破解 启用屏蔽口令:登录时输入密码不回显 包括位数 23)选择软件包组: 哪些必须要选? 桌面:X窗口系统 后续有办法使用系统的图形界面 应用程序:编辑器 vi -> 下一步 24)即将安装 -> 下一步 -> 下一步 走进度条,持续10分钟左右,安装disk1 软件=程序+文档 安装软件是由大量目录、文件构成 将目录、文件按照特定的结构安放(部署)到磁盘某位置; 同时需要对系统进行环境的设置,比如系统环境变量; 程序=数据结构+算法 整体结构设计 具体步骤实现(计算方法) 后续会提示请插入第2张光盘; 先等下,不急着操作! 25)ctrl+alt 切换到物理机: 虚拟机 -> 设置 选择:CD/DVD 选择disc2 注意:设备状态 都要打钩 已连接、启动时连接 选择ISO映象文件:shrike-i386-disc2.iso 26)进入VM中,点击确定 后续会提示请插入第3张光盘 27)ctrl+alt 切换到物理机: 虚拟机 -> 设置 选择:CD/DVD 选择disc3 注意:设备状态 都要打钩 已连接、启动时连接 选择ISO映象文件:shrike-i386-disc3.iso 28)创建引导盘: 否 不创建 -> 下一步 29)图形化界面(X)配置:默认 -> 下一步 30)显示器配置:默认 -> 下一步 31)定制图形化配置:需要更改! 请选择您的登录类型:文本 后续登录系统后,使用命令行风格 -> 下一步 32)祝贺页面 -> 退出 会重新启动Linux系统 四、Linux系统的登录 1、登录的方式 1)本地登录 主机面前直接操作 图形化:比如Windows系统 命令行:当前Linux字符界面 显示登录界面: localhost login: root 用户是超级用户 本地主机 登录 密码:123456 注意:密码不回显 无法看到输入密码的占位符 登录成功后,显示提示符: 通过exit 退出登录 [root@localhost root]# 后续可敲命令 比如: date 系统日期、时间 cal 本月日历 exit 思路:在不同环境中,显示的命令行提示符不同 要通过不同提示符区分不同环境 Windows cmd: D:\> ipconfig Python环境: >>> print("Hello") Mysql环境: mysql> select * from emp; Oracle环境: SQL> select * from emp; Linux环境: [root@localhost root]# date 2)远程登录 通过客户端工具,借助网络远程控制、管理服务器 图形化:需要客户端安装特殊软件才能支持 一般较少用 命令行:更常用 远程命令行方式管理系统 (目前推荐使用) 建议安装一个客户端小工具:SSH 或 SecureCRT SSHSecureShellClient-3.2.9.exe 5.26MB 安装步骤:都是默认的 下一步Next、是Yes、 Finish完成 如何打开? 所有程序 -> SSH Secure Shell 安全的shell(命令行) 或SecureCRT 目前关系:SSH是客户端工具 --网络-- Linux系统 作为服务器 Client Network Server date 内核程序处理 访问底层硬件 SSH如何修改字体、大小: Edit -> Settings -> Global Settings -> Appearance -> Font 编辑 设置 全局设置 外观 字体 字体:Consolas 大小:16左右 Quick Connect: 快速 连接 Host Name: 服务器主机名,就是IP地址,需要查证 User Name: root 登录服务器使用账号,用户名 目前使用超级用户 连接成功了,才需要输入密码 Port: 22 端口号 SSH默认端口号就是22 好比服务编号 2、目前问题:不知道服务器的IP地址 重要命令:如何查看系统的IP地址? <1> Windows:ipconfig 前提:至少需要开启网络适配器 VMnet1连接 启用 右击"网络" -> 网络适配器 -> 查看某连接 将其启用 本地连接: IPv4地址:192.168.3.3 子网掩码:255.255.255.0 以太网适配器 VMware Network Adapter VMnet1: IPv4地址:192.168.23.1 以自己查到的为准 192.168.xx.1 子网掩码:255.255.255.0 <2> Linux:ifconfig 目前:127.0.0.1 默认的本机环路地址 供访问自己本机时使用 目前还未配置合理的IP IP地址格式规律:4个三位整数(十进制数),点号连接 比如:192.168.23.1 每个整数底层占据一个字节Byte = 8二进制位 bit 二进制: 00000000 ~ 11111111 255 100000000 256 2的8次方 十进制数: 0 ~ 255 到底要给服务器设置一个什么IP? 由于目前网络连接采用第3项:私有网络 要求:服务器Linux的IP地址 要和 VMnet1的IP在同一个网段中 如果采用第1项:桥接方式 要求:服务器Linux的IP地址 要和 本地连接的IP在同一网段中 五、设置Linux网络环境 1、先查看IP地址(让Windows机器和Linux机器相连,需要两个IP) 查看Windows系统IP命令:ipconfig 查看Linux/Unix系统IP命令:ifconfig 2、注意:由于安装Linux时选中第3项,则当前需要查看VMnet1的IP地址:192.168.23.1 IPV4: xxx.xxx.xxx.xxx 3、在Linux系统配置IP (和VMnet1的IP在同一网段) 规律:前3个数字一样,最后一个不一样 192.168.23.1 VMnet1 IP 192.168.23.2 Linux IP 就在同一网段中 原因:子网掩码 255.255.255.0 两个IP地址分别和子网掩码,进行按位与操作,如果结果一致,就在同一网段中。 11000000 11111111 按位与 11000000 192.168.23.1 IP1 255.255.255.0 按位与 (有0则0,全1则1) ---------------------- 192.255.23.0 结果1 192.168.23.2 IP2 255.255.255.0 按位与 ---------------------- 192.168.23.0 结果2 和 结果1一样,说明IP1和IP2在同一网段中,可以互相通信。 说明:选择第3项,Linux需要和VMnet1连通 如果选第1项,需要查看本机IP 配置步骤: 1)查看Linux的IP地址: ifconfig 目前还未设置 2)设置Linux的IP地址:netconfig (设置为192.168.23.2) 前3个数字和VMnet1 IP一样 xxx.xxx.xxx.2 在Linux中,输入 netconfig -> 出现配置窗口(字符界面) -> Would you like to set up networking? 是否配置网络 -> Yes 回车 (用Tab键选择) Use dynamic IP configuration (BOOTP/DHCP) 自动分配IP 不选择,需要自己设置 (用Tab键跳过) IP address: 192.168.23.2 回车两下,自动出现后续结果 Netmask: 255.255.255.0 子网掩码 Default getway(IP): 192.168.23.254 默认网关IP Primary nameserver: 192.168.23.1 -> Tab 选择 OK -> 回车 (或再敲三次回车) 效果:会自动修改到系统底层网络配置文件中,下一次启动系统时自动读取; 或执行重启网络服务命令即可; 服务 网络 重启 3)重启网络服务:service network restart # service network restart # ifconfig 查看固定好的IP地址 192.168.23.2 4)使用SSH连接Linux 打开SSH Secure Shell -> Secure Shell Client -> Quick Connect 快速连接 Host Name: 192.168.23.2 主机名 User Name: root 用户名 Port: 22 默认端口 -> 点击Connect 连接不上,原因:服务器是否启动、网络连接是否良好、防火墙是否禁用; 网络防火墙firewall 可能没关,需要关闭防火墙 同时排查网络是否连通:ping命令 (Windows/Unix/Linux通用) 从Windows连Linux: CMD中 ping 192.168.23.2 可以 不可以,考虑关闭防火墙 提示:ctrl + c命令 用于结束当前控制台进程 5)关闭Linux防火墙:iptables -F # iptables -F 再使用SSH连接Linux ... 输入:192.168.23.2 root 输入密码:123456 即可 方法二:如果还有问题,改为桥接方式 选择第1种:Use bridged networking 桥接方式 (VM -> Settings -> Network Adatper 网络适配器) Linux IP地址也需要和本机IP处于同一网段 命令:netconfig 本机IP: 192.168.3.3 (本地连接IP地址) Linux IP: 192.168.3.101 重新设置 netconfig 再:service network restart 重启网络服务 再:iptables -F 关闭防火墙 配置步骤总结: 1)查看网络适配器:确保 已连接 使用第3项:仅主机模式(私有网络方式) 2)查看物理机ipconfig: VMnet1的IP: xxx.xxx.xxx.1 子网掩码: 255.255.255.0 3)配置Linux的IP:netconfig 配置为: xxx.xxx.xxx.2 4)重启网络服务:service network restart 查看ip: ifconfig 从物理机:ping xxx.xxx.xxx.2 判断网络是否可达 5)关闭防火墙:iptables -F 说明:网络适配器问题,建议清理注册表:CCleanner 扫描问题 没有网络适配器的可以试试,再重启 Java C Python C++ ... SQL ... 95 70后 89后 83后 共性:变量、函数或方法 六、Linux/Unix基本命令 命令:使用一些词句、动作让系统执行某些操作; 命令的基本格式:命令名 [-选项...] [参数 ... ] command 命令、选项、参数之间至少留一个空格 参数是操作的对象,选项是增加的功能 命令是主要功能,选项和参数 可能不止一个,多个用空格隔开 比如: javac -d . Hello.java iptables -F ls ls -l ls -al cal cal 2021 cal 3 2021 date 注意:Linux/Unix中命令区分大小写 -F -f 不同 Windows不区分 javac Javac 执行命令的地方: Command Line 使用Linux/Unix的命令行窗口(终端、Shell 命令解释器、Console 、控制台) 先解决一个重要的哲学问题:我是谁?我在哪儿?我有什么? 从哪里来,到哪里去? 1、我是谁?查看用户的身份 和权限有关! 1)使用who am i 结果root 查看最初登录的身份 # who am i 显示最初用户登录信息 root pts/0 Mar 15 12:29 (192.168.23.1) 用户名 伪终端号 登录时间 从这个IP远程登录 某用户以root身份,在上午12:29分从192.168.23.1的客户端远程登录到服务器,分配伪终端号pts/0 root pts/1 Mar 15 16:49 (192.168.23.1) 区分不同的终端 伪终端号:目的,便于Linux区分不同的登录用户 pts/0 窗口 ls pts/1 窗口 cal Linux分别将结果发给不同的用户 Linux/Unix特点:典型的多用户管理系统 操作系统可以同时为多用户、多任务服务 -- 服务器系统的基本要求 2)查看当前用户名:whoami root 3)查看当前用户详细身份:id # id uid=0(root) gid=0(root) 用户id:0 用户名:root 组id:0 组名:root 规律:超级用户root用户的uid都是0、gid都是0 用户名和组名都是root 4)查看当前系统在线用户情况:who # who 查看当前有哪些在线用户 登录成功就是在线,在线拥有了使用系统的权限 root tty1 Mar 15 10:39 本地登录 root pts/0 Mar 15 12:29 (192.168.23.1) 远程登录 root pts/1 Mar 15 16:49 (192.168.23.1) 远程登录 命令:exit 退出登录、表示离线 wroot D:\ / \ 斜杠 反斜杠 2、我在哪儿? 使用pwd命令 在哪儿也和权限有关! 打印 正在工作的 目录、文件夹 pwd 显示当前的工作目录(Print Working Directory) # pwd /root /目录 (根目录)下的root子目录 目前/root是root用户的主目录(Home Directory) 默认就是登录后所在的目录,具备较多的权限。 3、我有什么? 使用ls命令 # ls 显示当前目录的内容(包括文件和目录) 只能显示文件、目录的名称 # ls -l 以长列表方式查看 (更详细) 显示文件、目录的详细属性 文件类型 权限 属主 属组 大小 最后一次修改时间 -rw-r--r-- 1 root root 989 3月 13 05:33 anaconda-ks.cfg 硬链接数 文件/目录名 文件的属性:除了文件名、文件内容之外的其它信息 1)文件类型: - 文件 d 目录 Directory 2)权限:rw-r--r-- 3)属主:用户名root 该文件属于哪个用户 4)属组:该用户属于哪个组root 5)文件大小:989 Byte 单位:字节 6)最后一次修改时间:3月 13 05:33 面试题:Linux系统中如何查看一个文件的权限? ls -l 文件名 命令名 选项 参数就是文件名 比如:ls -l install.log 4、去别处? cd命令 (Change Directory) 改变目录 cd 目录的路径名 1)路径的表达法 <1> 绝对路径:从/开始表示的路径名 /root 目录名 /etc /root/1.txt 文件名 <2> 当前路径:当前目录所在的路径名 pwd 查看 比如在 /root下 <3> 相对路径:相对于当前路径表示的路径名 1.txt 2)特殊的目录名: . 表示当前目录 .. 表示上一层目录 比如:目前在/root目录下 想到/ 目录下: # cd .. 相对路径,相对于当前/root的上一层 或者: # cd / 绝对路径,直接定位到/下 (从/开始) # cd . 还是在当前目录 # ls # ls -l 查看到许多目录 bin目录 常用的系统命令 比如ls date pwd ... 都是可执行的文件 etc目录 常用的配置文件 /etc/passwd 文件 管理用户账户信息 /etc/group 文件 管理用户组信息 home目录 普通用户主目录所在目录(每个用户对应一个子目录) root目录 管理员用户主目录 boot目录 系统启动文件目录 ... 想到/home下 # cd / # cd home 相对路径 或者 # cd /home 绝对路径 (特点:一定从/开始) 作业题:盘点今天学习的Linux命令 命令的语法、功能 比如:查看用户详细身份:id 查看目录下详细内容:ls -l