Linux是什么?
- 操作系统是什么?
翻译官+指挥官,也就是应用软件/用户命令+硬件设备。
- 操作系统(Operating Dystem,OS)是计算机系统中的一个系统软件,它们管理和控制计算机系统中的硬件和软件资源,为用户提供一个功能强大、使用方便和可扩展的工作环境;
- 它是配置在计算机硬件上的第一层软件,是对硬件功能的扩充;
- 操作系统在整个计算机系统中具有极其重要的特殊地位,它不仅是硬件与其他软件系统的接口,也是用户和计算机之间进行“交流”的界面。
计算机系统的构成
- 起源于UNIX操作系统,开发者Linus,很多操作系统都起源于UNIX,这些系统统称为POSIX系统
- Linux在UNIX上改动的最显著特点是增加了硬件接口层,使得通过修改硬件的设备文件,就能支持各种不同设备,包括了CPU指令集,所以有这样一句口号——自从有Linux之后,世界上不再需要其他操作系统
- 1)桌面端的Ubuntu;2)服务器端的RedHat红帽子、CentOS;3)手机端的Android, iOS, 鸿蒙;4)巨型机上的系统
Linux的定义:
Linux只是一个内核,一个完整的操作系统不仅仅是内核。
通常所说的Linux操作系统指 GNU/Linux,
即采用Linux内核的GNU操作系统,它既是一个操作系统又是一种规范。
狭义:
Linux只是一个操作系统的内核,内核,建立了计算机软件和硬件之间的通讯平台,提供系统服务。
向下,管理硬件;
向上,为上层应用提供接口。
广义:
以Linux内核为基础的,包括OS和各种基础应用在内的各个Linux发行版。如:CentOS、Ubuntu(乌班图)、Red Hat、Suse等
测试工程师平时在Linux上做哪些工作?
1、搭建测试环境(测试人员很少做这个工作)
2、修改配置文件
3、查看、下载程序日志(被测软件的日志,不是操作系统的),是在Linux上最主要的操作
4、查看被测物进程、以及进程对资源(CPU 内存 磁盘IO等)的占用情况,如有需要,启动或停止程序(也会偶尔操作)
5、其他日常的文件和目录操作(常用命令),在做上述操作过程中必然要执行
Linux 内核 和各类 Linux 发行版
Linux内核 + 各类基础应用
- 服务器端:CentOS(Community Enterprise OS,社区企业操作系统)、Redhat
- 桌面(客户端):Ubuntu(乌班图)
手机端:Android、鸿蒙
部署Linux环境
- 安装linux虚拟机
- 使用VMware打开Centos7的虚拟机,虚拟机未启动(开机)前,建议先做个快照
- 启动虚拟机
Linux的环境安装及部署,Linux(CentOS)的安装
-
方式一:裸机安装,在单台电脑上安装单个OS
- 方式二:安装虚拟机,在单台电脑上单个OS内,再模拟多台电脑(多个OS)
虚拟机技术:在一台机器的单操作系统内,同时仿真的运行两个或更多Windows、Linux、MacOS等等系统组成
- 虚拟机软件:Vmware、Docker等
- 虚拟机文件:CentOS虚拟机文件、Win6虚拟机文件等
虚拟机的小技巧:快照
- 虚拟机未启动(开机)前,先做个快照———若系统被破坏,可以快速恢复到某个快照状态
Linux的远程登录
- 查看Linux服务器端IP地址(SecurePortableCRT):ifconfig
- 输入服务器IP地址(SSH 协议,默认端口 号为 22),以用户名+密码的方式连接、登录Linux服务端
- 首次连接Linux服务端时,需要接受服务端发来的主机钥匙
- 登录(SecureCRT)工具后,进行微调
- 终端:Linux
- 字符编号:UTF—8
Linux的关机与重启
Linux直接关机很危险,因为 linux 和 window 不同,其后台运行着许多进程,强制关机可能会导致进程的数据丢失,使系统处理不稳定的状态,甚至在有的系统中会损坏硬件设备。
只有当 shutdown 命令将系统安全停掉后,我们才能安全的关掉机器电源。
关机命令 shutdown
作用:shutdown命令用于关机。
语法:shutdown [-选项] [参数]
- 常用选项:
- -h 时间:指定时间关机
- -c:取消正在进行的shutdown
- -r:重新启动计算机
shutdown -h 20:00 ----- 定时关机,今天20:00关机 shutdown -h +10 ----- 延时关机,再过10分钟后就关机 shutdown -c ----- 取消定时关机,定时关机,未关机前,可以用这个命令取消。 shutdown -h 0 -----立刻关机 shutdown -r now ----- 立刻重启
立刻关机 poweroff
语法:poweroff
重启命令 reboot
作用:reboot命令用于重启电脑。
语法:reboot
远程登录协议工具
SSH协议
- 通过Linux服务器端自带的SSH协议服务,客户以SSH协议实现远程连接,登录服务器
- 双方以加密传输的方式来保证客户端与服务器端往来数据的安全,一般情况下在装Linux系统的过程中是默认安装的
- SecureCRT——通过命令的方式远程操作(服务器)Linux系统,使用的是SSH协议
- SecureFX——可以与远端服务器Linux互相传输文件,SFTP(SSH FTP)协议
工作中其他常见的登录工具
- Xshell(命令行)+Xftp(传文件)
- PuTTY(命令行)+(WinScp传文件)
SecureCRT常规设置
- 默认字体太小,调整变大,菜单选项中的会话选项中的终端中的外观中,点击字体,选择更大字体
- 将回滚缓冲区变大,菜单选项中的会话选项中的终端中的仿真中,混滚缓冲区从500改为最大128000
- 修改SecureCRT的文字编码,否则有些内容会显示乱码,菜单选项中的会话选项中的终端中的外观中,选择字符编码改为UTF-8
Linux的基本使用
进入命令行模式
- 当代计算机使用模式有2种:
1.命令行模式:Command Line Interface命令行接口,简称CLI。
使用键盘通过命令行接口输入命令,敲回车后,计算机执行命令,并以文字形式显示执行结果。2.图形化模式:Graphic User Interface图形化用户接口,简称GUI。
使用键盘鼠标在图形化软件上操作,计算机执行操作要求,并显示图形化结果
Linux命令的模式
root :超级管理员账号
[root@localhost ~]#
- 提示符 :[用户名@主机名 当前路径]休止符
- @前:当前用户账号,如root
- @后:当前系统名称/地址
- ~所在的位置:当前登录用户的属主目录,也就是当前的工作路径
- # 所在的位置:当前用户的身份登记是系统管理员root,如果是普通用户则符号是“$”
关于属主目录,即家目录
- ~ :表示当前登录用户的属主目录
- ~用户名:表示指定用户的家目录
- 由于Linux 系统是纯字符界面,用户登录后,要有一个初始登录的位置。这个初始登录位置就称为用户的属主目录(也叫家目录)。
- 超级用户的属主目录:/root
- 普通用户的属主目录:/home/用户名
例如 :用其他普通用户如jiangwei登录,默认会进入jiangwei的属主目录。/home/jiangwei
例如 : [jiangwei@localhost ~]$中的~号
和[root@localhost ~]#里的~ 号,虽然符号相同,但不是同一个目录。
Linux路径和Windows路径的区别
windows路径,以用户目录举例如下: 使用的是反斜杠,且有有C盘、D盘的概念
C:\Users\MMstar
linux路径,以用户目录举例如下,依次表示为:没有盘的概念; 不区分盘; 全都在/根目录下
/home/MMstar
/root
/
根目录与路径分隔符
1、根目录:/
- Windows的根目录:c:\ d:\ e:\
- Linux的根目录: / ------ cd / ls :表示可以看到在根目录下的所有内容,列表形式展示
路径分隔符:(/ \)
- windows : \分隔
- Linux: /分隔
根目录下的几个重要的目录:
/etc:用于保存系统数据文件、启动文件和脚本等
/bin:存放普通用户常用命令
/sbin:存放系统管理常用命令
/boot:存放系统核心文件
/dev:存放与设备有关的文件
/lib:存放用于编译某些程序时要用的函数库
/usr:用于存放用户安装的应用程序,类似于windows中的program files目录
/var:用于存放系统数据文件
/root:系统管理员(root用户)的“属主”目录
/home:存放普通用户“属主”目录的上一级目录
/media:用于系统自动挂载存储设备时(例如光驱、U盘)使用的目录
2、终端命令行
- 命令的格式:命令 [选项]... [参数]...
命令、选项和参数都是一条命令中的元素,各元素之间必须空格隔开
- 命令:表示要求计算机做什么操作。
外部命令:
- 是操作系统中某目录下的可执行程序,windows下可执行程序都有后缀名.exe ;Linux中可执行程序没有后缀名
- 默认外部命令需要带路径才能执行
- 除非该外部命令所在的目录已经配置到操作系统的环境变量PATH中,该可执行程序既可以不带路径只写程序名就能执行,也可以带路径执行
内部命令:
是启动后加载到内存中的函数、别名、配置等.
比如有一个Linux操作系统的机器人,通过语音指令要求机器人做一个事情,比如买东西,这就是一个命令
买 立刻 烧烤
- 选项:表示计算机执行该操作的特定方式。
比如那个机器人,要求它去买东西,带一个选项,就可以限定该机器人怎么买,比如:立刻,表示要求它现在立刻去买东西
Linux中的选项有2种语法:
短选项
- 短横“-”后面跟选项缩写
ls -a
- 绝大部分短选项-后只有1个字母
- 多个短选项可以合并,一个短横“-”连接多个短选项
ls -a -l,可以合并写为 ls -la
长选项
- 参数:表示计算机执行该操作时必须得到的额外信息。
双短横“--”后面跟选项全称
ls --all
Windows中的选项 :/选项
选项参数
- 有些选项自身也带参数,即指定的执行方式带参数
比如要求机器人去买东西,选项叫定时,后面需要带一个参数,比如6点 买东西 -定时 6:00。其中-定时 6:00是一个选项,6:00是-定时的选项参数
head命令可以指定查看某文件的前若干行
head -n 20 a.txt head是命令 a.txt文件是被查看的文件,是参数 20是选项,-n表示前若干行,到底是几行,需要由选项参数来指定,这里是查看前20行
- 短选项带选项参数,大多语法
命令 -短选项 选项参数 其他选项 参数 ----- 如果该短选项带参数,则该短选项不能参与其他短选项的合并
- 长选项带选项参数,大多语法
命令 --长选项=选项参数 其他选项 参数
命令 --长选项 选项参数 其他选项 参数
参数:表示计算机执行该操作时必须得到的额外信息。
- Linux中一般选项和参数之间没有顺序的要求,选项在前参数在后,和选项在后参数在前,都可以
- Windows中选项和参数的位置严格限定,有的选项必须在前,有的选项必须在后
- 如果一个命令带有多个不同作用的参数,则多个参数之间位置严格限定
注意:三者直接需要用空格隔开
- [ ]表示里面的内容是可选的:1条命令行中可以不含选项或参数,仅命令; 1条命令行中可以包含多个选项或参数; 1条命令中若有多个选项,支持合并
- Linux大小写敏感:命令,选择,参数均大小写敏感
- 空格和引号 :一条命令中每个元素之间必须使用空格隔开,且每个元素内不能存在空格。但如果该元素内部必须有空格,则可以用引号将这个元素单独引用以强制表示是一个整体。
- 在Linux系统中,凡是 .打头的文件或目录,都是隐藏文件、隐藏目录
- Linux操作系统中,支持文件名 通配符 的使用,通配符起到模糊匹配的作用,主要用于针对文件名或目录名 ----- *.txt
- *,代表任意长度的任意字符
- windows中的动态链接库.dll
6.Linux中的各种文件的后缀名和Windows上完全不同
- windows中可执行程序.exe, .com ---对比--- Linux中可执行程序一般无后缀。ls程序没有后缀,就叫ls
- window中的批处理程序.bat ---对比--- Linux中批处理程序.sh
- windows中的动态链接库.dll ---对比---- Linux中通常叫.so
Linux的文件和目录操作
- ls显示指定目录下的内容 语法:ls [选项]... [文件]...
- pwd:显示当前目录的绝对路径 语法:pwd
- cd:改变当前路径 语法:cd [目录]
cd .. :进入上一级目录
cd ~:回到当前账号的属主目录
cd /root/Desktop 》cd /home/51testing/Desktop
绝对路径 & 相对路径
绝对路径:从根目录开始,路径必须写全
相对路径:从所在的当前目录开始定位,路径是相对于当前目录的路径表达
- 依赖于两个特殊目录
- “.”目录表示当前目录
- “..”目录表示当前目录的上一层目录
ls:显示目录下的内容
语法:ls [-选项] [目录 或 路径、文件]
常用命令选项、参数
- -l :列表显示文件和目录的完整属性信息
- 无 [目录 或 文件/路径] :显示当前路劲下的内容
- 1~n 个目录 [目录] :显示指定目录下的内容
- 1~n 个 [文件/路径]:显示指定(路径下)文件的信息
- [目录 /文件] 允许混搭
- -d:查看目录自身的信息,而不再是目录中的文件信息
- -a:显示所有文件和目录,包含隐藏文件和目录。
- -A:同上,但不显示 . 和 ..
- -t:根据时间排序
例举:
ls -l 》ls -l anaconda-ks.cfg initial-setup-ks.cfg 》ls -l Desktop/ Documents/
ls -l -d Desktop/ Documents/
ls -a -l
注意:ls 命令中:不同的文件具有不同的颜色
- 目录 或 路径/文件
- -l 列表显示的完整属性信息:
- 常见列说明
- 1. 文件类型和访问权限
- 第一个字母是文件类型
- -表示普通文件
- d表示目录
- l表示符号链接文件
- 后面9个字母分3组每组3个字母,完整的是rwx
- 2. 该文件属主、作者
- 3. 该文件属组、属群
- 4. 文件大小
- 5. 文件最后修改时间
ls -l 名称 与 ls -l 名称/ 的区别:
前者可能是文件,也可能是目录;后者必须是目录
- ls -l / 与 ls -l 区别:
前者是列出根目录下的详细内容,后者是列出当前目录下的详细内容
常用的键盘操作
- 上下键:切换用过的命令
在命令行下通过上下键能选择之前用过的历史命令,方便需要重复执行的命令。
- Tab键:自动补全
补全命令 : tou(按下tab),可补全touch命令
补全文件名或目录名 :cd /etc/yu(按下tab),可补全目录名yum
按一下tab:输入命令(或文件名、目录名)前面的几个字符后,按一下tab键,如无相重的,则会自动补全。
按两下tab:如有相重的,则需要双击tab键,屏幕会打印出符合这些字符开头的所有命令(或文件名、目录名)
常用命令选项组合
-
ls -l -t ls -l -t -A
隐藏的文件/目录
在Linux系统下,以 . 开头的文件名,或目录名。
其中 . 为当前目录,.. 为当前目录的上一级目录
mkdir:创建目录
Make Directory
语法:mkdir [-选项] 目录1 目录2 ...
常用命令选项/参数
- -p:用于创建多级目录。当建立的目录的父目录不存在时,同时建立父目录
mkdir d1 d2 d3 》mkdir -p d4/d4.1/d4.1.1
rmdir:删除空目录
Remove Directory:目录必须为空目录,也即只能删空目录!
语法:rmdir [-选项] 目录1, 目录2, ...
常用命令选项/参数
- -p:用于删除整个路径链上的所有目录。注意:多级目录中不能有其他的文件或目录存在
clear:清屏 ctrl+l
在线帮助命令 help
作用:查看命令的帮助信息
help命令的两种用法:
语法1:help 内部命令
help cd
语法2:外部命令 --help
mkdir --help
如何判断是内部命令还是外部命令?
type 命令名
栗子:type pwd
pwd is a shell builtin //说明命令是存在shell中的,是内部命令
栗子:type yum
yum is hashed (/bin/yum) //说明命令存在磁盘上的,是外部命令
在线帮助命令 man
man没有内外部命令的区分,它本身可以理解为是一本电子版的手册。
语法: man [-选项] 命令名称
man ls
显示ls命令的手册。
并且系统会自动分屏显示,
按回车 一行一行下翻。(或按 ↓ 键)
按空格键一页一页下翻。
按q退出。
在线帮助命令 info
info来自自由软件基金会的GNU项目,是GNU的超文本帮助系统。内容比man更详细,通常man中若包含的信息概要在info中也有时,会有提示:“请参考info页更详细内容”。
info ls
按回车 一行一行下翻。
按空格键一页一页下翻。
按q退出。
查看命令位置 which
which 命令
命令行说明
命令行的多种形式
- 命令
- 命令 -选项
- 命令 参数
- 命令 -选项 参数 [-选项 参数]
短横与双短横
- "-" 后面跟选项的缩写(常用)—— 短选项
1、多个短选项可合并:命令 -o1 -o2 ... 》命令 -o1o2 ...
2、如果该短选项带参数,则该短选项不能参与其他短选项的合并
ls -l -a 》 ls -la 》ls -Atl
- "--" 后面跟选项的全称 —— 长选项
ls --all
选项与参数
- Linux中一般选项和参数之间没有前后顺序的要求
ls -Atl 》ls -tlA 》ls Document/ Downloads/ 》ls Downloads/ Document/
- 如果一个命令带有多个不同作用的参数,则多个参数之间位置严格限定(例如:cp 源文件 目标目录)
通配符的使用
Linux操作系统中,支持文件名 通配符,主要针对文件名或目录名
- * : 代表任意长度的字符(0 ~ n个)
- ? : 代表任意一个字符(有且仅有一个)
ls -l Do* 》ls -ld Do*/
根目录下的常用目录
- /root: 超级管理员的 属主目录
- /home:存放所有普通用户的 属主目录
- /bin 与 /usr/bin:存放普通用户常用命令(用户安装的可执行程序),类似于windows中的program files目录
- /sbin 与 /usr/sbin:存放系统管理常用命令(可执行程序)
- /etc:用于保存系统数据文件、启动文件和脚本等
- /var:用于存放系统数据文件
文件及目录操作(2)
tree 树形结构
以树状形式展示目录以及目录下文件的结构
语法:tree [-选项] [目录]
常用命令选项/参数
- 无目录:显示当前目录下所有内容
- 无选项:显示目录及文件
- -d:仅显示目录
cd ~ 》tree 》tree -d /home
touch 创建文件
本职工作是用来修改文件或者目录的时间,访问时间和修改时间;另外还有个特性:当触摸的文件不存在时,创建这个空白的文本文件
因此,经常被用来创建空文件。
语法:touch [选项]... 文件...
touch f1 f2.txt f3.png 》ls -l f*
alias 设置别名/显示别名含义
语法:语法:alias 别名='一条命令'
alias命令作用:给一条命令重新取个名字,后续再用该别名,就等同于执行该命令
注意:=等号前后不能有空格
alias gohome='cd /home' 》gohome
which 输出一个命令的所有完整路径
which命令作用:输出一个命令的所有完整路径,如果是内部命令,则显示该命令的函数接口、或者别名;如果是外部命令,则输出该命令的路径
语法:which 一个命令
which 只能查看内部命令,以及环境变量$PATH中所有目录下的外部命令(即可以省略路径直接写程序名就能运行的外部命令)。但必须带路径才能执行的外部命令无法使用which来查看
rm 删除文件(remove)
语法:rm [-选项] 文件或目录名 —— 无论目录是否为空
常用命令选项/参数:
- -f:强制删除,不提示用户是否需要删除 —— 如果不加,则会询问你是否要删除(y:删 或是 n:不删)
- -r:用于目录删除(递归删除)
常用选项组合
- -rf:删除所有文件及目录 —— 要万分小心,删无赦
rm Do1.txt 》rm -f Do*.*
rm -r d2/ 》rm -rf d1/
cp 拷贝
语法:cp [-选项] 源A(文件或目录) 目标B(目录或文件)
- 文件A复制到目录B下:要求源A是路径/文件,目标B是目录
- 文件A复制并重命名为文件B:要求源A与目标B,都是路径/文件,所在的路径可以相同或不同
- 目录A复制到目录B下:要求目录B必须存在
- 目录A复制并重命名为目录B:要求目录B不能存在
- 将一组的源A(多个文件,目录集合,空格分隔)复制到目录B下:要求最后一个参数必须是目录B
- 常用命令选项/参数:
- -r:递归处理(复制目录是必须带上),将源目录下的文件及其子目录一并复制
- -u:如果源文件比较目标文件新,或是没有该文件时,才进行复制。常用于备份。
- -i,表示粘贴时询问,在目标文件和指定目录下已有文件重名时,询问是否要覆盖,如果没有覆盖的情况,系统不会询问
- -f,表示粘贴时强制覆盖不询问
mv 移动文件或目录(move)
语法:mv [选项]... 源文件... 目标文件或目录
- mv命令中源A和目标B之间的特性,与命令cp完全相同(包括对文件或者目录重命名)
- mv命令和cp命令的区别
- cp是复制
- mv是移动(即Windows中的剪切)
mv命令的其他作用:对文件或者目录改名
- 如果剪切一个文件,从A目录将文件1剪切,存放到A目录中,重命名为文件2,那么这里起到的作用就是重命名
- 为文件改名 ---- mv myfile1 myfile2 :将文件myfile1改名为myfile2
- 为目录改名 ---- mv test3 test4::将目录test3改名为test4
- 常用命令选项:
- -f:表示粘贴时强制覆盖不提醒
- -i,表示粘贴时必须询问
- 无-r:即剪切目录时无需选项
mv -f /home/dev1/f* ./ 》mv -f /home/dev1/d? ./
文件与目录的操作(3)
vi 编辑文本文件
类似于windows中的记事本,但功能要强大得多
语法:vi [文件名]
- 若文件存在,则打开文件,进入【一般模式】(需再按下 i/R 键,才进入【编辑模式】)。
- 若文件不存在,则先创建该空文件,再打开它。
- 文件名不可以是目录,也不可以是2进制的程序文件
一般模式
vi 命令打开文件,默认进入【一般模式】,在此模式下可以执行的操作
- 移动光标:按 ↑ ↓ ← → 键。
- 整行删除,复制,粘贴等等
- 一般模式下的命令
- 0 :光标移动到行首
- $ :光标移动到行末尾
- N空格:光标向后移动N个字符
- N回车:光标向下移动N行
- x :剪切光标所在的字符,剪切后不粘贴就是删除文字
- Nx :剪切光标所在的字符及以后连续N个字符
- p :表示粘贴在光标后方表示粘贴在光标后方
- P : 表示粘贴在光标前方表示粘贴在光标前方
- dd :剪切光标所在整行
- Ndd :剪切光标所在行及后续N行
- yy :复制光标所在整行
- Nyy :复制光标所在行及后续N行
- /文字 :从光标行向下搜索指定文字
- ?文字 :从光标行向上搜索指定文字
- ZZ :保存并退出
编辑模式
- 在【一般模式】下,按下 'i' (插入) 或 'R'(替换),进入编辑模式,进入编辑模式后,就可以进行文字输入,按ESC返回一般模式。
- 屏幕下方会出现 "INSERT" 或 "REPLACE" 的字样,说明进入了编辑模式
- 从【编辑模式】返回一般模式,按下 ESC 键即可
命令行模式
- 在【一般模式】下,按下 ":",进入命令行模式,从命令模式返回一般模式,同样按下ESC键即可。
- 可以保存、替换、退出等等
- :w —— 保存(修改内容)
- :wq —— 保存并退出
- :q! —— 不保存,直接退出(! 代表强制)
- :w 文件名 —— 另存为文件名
三种模式的切换
补充用法说明:
- 如果直接输入 vi,不带参数,则类似直接启动windows中记事本,这意味着要在编辑后,通过 “:w 文件名”命令将其另存为一个文件
- 一般模式下,常用组合键
- /word: 向光标之后寻找一个名为 word的字符串,当找到第一个word后,按 "n" 继续搜下面一个
- ?word: 向光标之前寻找一个名为 word的字符串,当找到第一个word后,按 "n" 继续搜下面一个
- :set nu:显示行号
- :set nonu:不显示行号
- dd: 删除光标所在的行
编辑文件方式二:远程连接,本地编辑,更新,再回传
Notepad ++ (支持SFTP协议)
通过SFTP,将服务器端的文件下载到本地 》本地编辑 》通过SFTP协议,将编辑好的文件回传至服务器
查看文本文件
cat:查看文件内容
Concatenate FILE(s), or standard input, to standard output
- 语法:cat [-选项] 文件名...
- 作用:查看文件的完整内容,内容不结束,cat命令的执行不会停止。
- 缺点:如果文件内容过长,就会执行很长时间,所以该命令不适合用于查看内容超级长的文件
常用命令选项/参数:
- -n:连行号一起显示出来
- -b:连行号一起显示,但空行不标注行号
cat anaconda-ks.cfg 》cat -b anaconda-ks.cfg
more:分页查看
作用:分页查看文件内容。支持下翻。
语法:more 文件名
常用命令选项/参数:
- +num:从第 num 行开始显示
- -num:指定每页显示 num 行
翻行与翻页
- 按回车(一行一行翻)。
按空格或f(一页一页翻)
按q退出。或Ctrl+Z。
more anaconda-ks.cfg 》more +2 -5 anaconda-ks.cfg
less:分页查看(支持上翻)
作用:分页查看文件内容。不仅支持more中的下翻,也支持上翻。
语法:less 文件名
- 当执行命令之后,linux会整屏显示文件内容,隐藏第一行的命令行,在整屏的最下方显示目录和文件名。
- 若查看到文件末尾,会显示 end 信息
常用命令选项/参数:
- -N 显示每行的行号
翻行与翻页
- 在显示的过程中,按q可以退出less命令;
按回车一行一行下翻;
按空格一页一页下翻;
按 ↑ 箭头上翻1行,按 ↓ 箭头下翻一行;
按q退出。或Ctrl+Z
less -N anaconda-ks.cfg
竖线(|)管道命令
把前一命令(向屏幕)的输出转给后一命令作为输入,直至最后的命令执行完,即(向屏幕)完成最终的输出
语法:command1 | command2 [ | commandx]
cat -n anaconda-ks.cfg | more +10
head 查看文件头部内容
语法:head [选项]... 文件名...
常用命令选项/参数
- -n num或-num:指定显示头部num行
head anaconda-ks.cfg 》cat -n anaconda-ks.cfg | head
tail 查看文件尾部内容
语法:tail [-选项] 文件名
常用命令选项/参数:
- -num:指定显示尾部 num 行(默认显示10行)
- +num:执行从第num行开始显示一直到末位
- -F:循环读取,按下 ctrl + Z 退出循环读取状态
- tail -F 日志文件名 只要日志文件有更新,会将日志文件尾部最新的记录,实时打印在屏幕上
tail -20 anaconda-ks.cfg 》tail -F log2023316.log
cat、more、less、head、tail,有什么区别?
- cat:一次性将所有内容打印在屏幕上,只适合小文件
- more、less:当文件内容较多时适用,可以分屏显示文件内容。more支持下翻,less支持上下翻。
- head、tail:显示文件内容的头部或尾部信息,tail通常用来查看正在更新中的日志文件。
find:查找文件或目录
语法:find [要搜索的目录][-选项] 文件或目录名 ,表示在指定的路径下,按照表达式来搜索文件
常用命令选项/参数(组合):
- -iname:忽略大小写
- -i:忽略大小写
- -name:指定文件名(可以用通配符进行模糊查找)
- 通配符:*(代表0~n个字符),?(代表 1个字符)—— 注意:带通配符的搜索,关键字需用引号括起
find ./ -iname d1 》find ./ -iname 'a.*'
find 表达式
- 测试test
用于表示搜索的条件,满足条件的文件将被搜索显示,不满足条件的文件不被搜索显示出来
常用搜索条件
按文件名搜索
- -name 文件名,表示按照文件名搜索
- 支持通配符*和?
*代表任意多个任意字符
?代表1个任意字符
find -name "myfile?" find -name "myfile*" find -name "*.log"
-iname 文件名,表示按照文件名搜索不区分大小写
find -iname "*.log"
按文件大小搜索,-size 数字单位
单位可以是b表示字节,c表示字符,w表示单词,kMG表示量级find -iname "*.jpg" -size 2M
数字,表示正好这个数字
-数字,表示小于等于这个数字find -iname "*.jpg" -size -10M
+数字,表示大于等于这个数字
find -iname "*.jpg" -size +2M
按文件时间搜索
-cmin 数字
表示按照在多少分钟内被修改属性的条件搜索find -iname "*.txt" -size -10k -cmin -100
-cnewer 文件名
表示按照在指定文件被修改属性之后哪些文件才被修改属性的条件搜索
-ctime 数字
表示按照在多少数字*24小时内被修改属性的条件搜索find -iname "*.txt" -size -10k -ctime -3
-mmin 数字,表示按照在多少分钟前被修改过内容的条件搜索
-mtime 数字,表示按照在多少数字*24小时前被修改过内容的条件搜索
-amin 数字,表示按照在多少分钟内被访问过的条件搜索
-anewer 文件名,表示按照在指定文件被访问之后哪些文件才被访问过的条件搜索
-atime 数字,表示按照在多少数字*24小时内被访问过的条件搜索,数字同样支持-数字,表示小于等于,+数字表示大于等于
按文件类型搜索: -type 文件类型find -name 'D*' -type d
文件类型
- f表示普通文件
- d表示目录
- l表示符号链接文件
- bcsp等表示设备文件
按权限搜索,表示当前用户对搜索到的文件要具有什么权限
-readable
-writable
find -name 'D*' -type d -writable
-executable
-perm 模式,按用户、组搜索
-user 用户名find -name 'a*.txt' -type f -writable -user root
-group 组名
-empty,表示搜索空文件
- 运算符号operator
表示如果有多个测试,则多个测试之间的逻辑关系如何运算
逻辑非
-not 测试 : find -name '*.txt' -not -empty ! 测试 : 注意!后要有空格
逻辑与
测试1 测试2 测试1 -a 测试2 测试1 -and 测试2
逻辑或
测试1 -and 测试2 测试1 -or 测试2
逻辑优先运算
测试1 -and 测试2 -or 测试3 表示测试1和测试2同时满足的文件,或者测试3满足的文件,被搜索到 测试1 -and \( 测试2 -or 测试3 \) 表示满足测试2或测试3的条件,并且同时满足测试1的条件,这样的文件才被搜索到 左括号(和右括号)的前面都需要\,而且前后都需要空格隔开其他元素 比如搜索<=1k或者>=10k的txt文件 find -name "*.txt" -and -size +1k -or -size -10k 这样写是错误的,因为找到的小于等于10k的文件并不要求txt文件 find -name "*.txt" -and \( -size +1k -or -size -10k \) 这样写才是正确的
- 选项option
- 操作action
grep:查找文本文件中的内容并显示整行
语法:grep [选项] 正则表达式 文件名...
- 表示在指定的文件中搜索满足正则表达式要求的行,不仅可以搜索文件中的内容,还可以搜索标准输入中的内容
常用命令选项/参数(组合):
- -in:忽略大小写,且显示对应行号
- -i:忽略大小写
- -n:指搜索显示内容带行号
- -v:对满足条件的搜索结果不显示,不满足条件的结果反而要显示
- -E '正则表达式'
- -A num:(After)匹配到搜索行 + 下面 num 行
- -B num:(Before)匹配到搜索行+上面 num 行
- -C num:(Center)匹配到搜索行 + 上下各 num 行
grep -in network anaconda-ks.cfg 》grep -in network anaconda-ks.cfg -A 3
tar 打包文件或目录(Tape ARchive)
- Linux上的压缩包基本都是使用tar工具打包解包,还有一小部分使用zip工具打包解包
- tar工具默认用途只是打包、解包,但可以使用选项来实现打包同时压缩,解包同时解压缩
打包和压缩:
- 打包:将多个文件合并为1个文件,是为了方便归档管理,并不会缩小文件的大小
- 压缩:将一个大文件压缩成一个小文件,为了减少磁盘空间的消耗,并不减少文件的个数。
先打包,再加上压缩选项,可以在打包的同时进行压缩
语法:tar [-选项] 打包名 文件或是目录清单
常用命令选项/参数(组合)
- -czvf:打包并压缩文件,结果文件名常以 .gz结尾表示(若只打包,则结果文件常以 .tar结尾表示)。用 gzip方式压缩并打包
- -xzvf:解压解包文件。将tar.gz文件解压并解包
- -zcvf:压缩文件。用gzip方式压缩并打包
- -xvf:解包文件。遇到.tar文件,说明没有压缩,直接解包即可。
- -c:将文件打包
- -x:将文件解包
- -v:打包过程中,显示被打包的文件或目录清单
- -f:必须是最后一个选项,后面接要打包后的文件名
- -z:用gzip算法压缩,生成 .tar.gz 文件
- -j:用 bzip2算法压缩,生成 .tar.bz2 文件
- -C:(解压到的)目标路径
tar -czvf conf.tar.gz *.cfg 》tar -xzvf conf.tar.gz -C /home/dev1/d1.1/
find、cat、grep有什么区别?
- find 查找文件或目录
- cat 查看文件中的所有内容
- grep 查找文件内容中的指定内容(符合正则表达式的内容)
help 查看命令的帮助信息
当一个命令用法记不清了 ......
语法:
- help 内部命令
- 外部命令 --help
内部命令 & 外部命令
- 命令:表示要求计算机做什么操作 》操作系统的命令分:内部命令、外部命令
- 内部命令是嵌在 Shell 中,随着系统的启动加载而被加载,常驻内存,供 Shell 随时使用,执行速度快。
- 外部命令存放于磁盘某目录下,是一个个单独的可执行文件,如 /bin 目录下的文件内容
- 内部命令:启动后加载到内存中的函数,别名等等
- 外部命令:操作系统中某个目录下的可执行程序
- windows下,可执行程序通常都有后缀名 .exe
- linux下,可执行程序与是否有后缀名,或是什么样的后缀名无关
- 默认情况下,外部命令必须提供绝对路径,才能被执行
- 如果所在路径已配置到了操作系统的path环境变量下,就可以直接使用命令(可以带绝对路径,也可以不带)
type 查询命令来源
语法:type 命令名称
- 内部命令:显示为 ... a shell builtin
- 外部命令:显示该程序实际存放的地址 (/usr/bin...)
++
man 电子版手册
manual —— 不分内、外部命令,均支持
语法:man [-选项] 命令
说明:显示命令手册时,系统会自动分屏显示
++
翻行 & 翻页
- 回车键:下翻一行
- 空格键:下翻一页
- q:退出
Linux的用户管理
- passwd和shadow用来记录用户信息和用户的密码,都保存在/etc目录下,如果没有这两文件,那将无法登录Linux。
- cat /etc/passwd 这个文件中,每一行代表一个账号,有几行就代表在系统中有几个账号;
useradd 创建新用户
语法:useradd [选项] 用户名 例如:useradd u1
- 每创建一个用户,默认都会在/home目录下创建用户名目录,作为该用户的家目录,该目录只有该用户有权限访问,其他普通用户无权限访问
- 在Linux中家目录用~表示,其他用户的家目录用~用户名来表示
- 每个用户的家目录下都有很多隐藏文件,都是用于该用户的配置,比如环境变量的配置,一个用户登录时,都会执行这些配置文件,达到的效果就是将该用户的配置添加到当前进程中
每创建一个用户,默认都会设置1个用户编号userid,并创建一个同用户名的组group和组编码groupid
常用选项:
- -d 不存在的目录 :不使用默认的家目录路径,而是自定义家目录
- -g 主组 :不创建同名的组,而是使用现有组作为本用户的主组
- -G 参与组 :即创建同名组,同时也加入到其他组中
id 显示用户的用户信息,包括用户名、用户编号,组,组编号,用户参与的其他组
语法:id [username] 例如:id root
passwd 设置账号的使用权限,包括了密码方面的设置
语法:passwd [选项] 用户名 例如:passwd u1
常用选项:
- -l :表示锁定账号表示锁定账号
- -u :表示解锁账号
- -k :表示账号密码永不过期
该命令主要给root用户使用,但普通用户也可以无选项无参数执行passwd给自己修改密码
su 切换用户身份,即当前连接更换了用户
语法:su [选项] [username]
常用选项:
- :表示切换用户时需要封装新用户的壳shell
- su - root :如果不使用-选项,则新用户的配置不会添加到进程中,导致当前的配置依然是原有用户的配置,这样容易行程一些逻辑上的混乱
- 如果要返回原来的用户,则使用exit命令。
- exit或 logout :退出当前切换的用户,返回到老用户
chmod 改变文件或目录的权限(Change Mode)
文件/目录的三种操作权限:可读(read),可写(write),可执行(execute)
文件/目录操作的三类身份: 拥有者(user),所属群组(group),其他人(others)
语法:chmod [-选项] [参数] 目录或文件名
常用命令选项/参数:
- -R:递归,将目录及其内部文件与子目录都进行改变
修改权限的方式
1、ugo ±法
- ugo 三类角色 —— u(ser),g(roup),o(thers))。
Linux中文件或目录的权限属性划分 (3×3):u1u2u3 g1g2g3 o1o2o3
对chmod命令而言,额外增加了a(ll):全体成员
- +/-/= —— 追加 / 剥夺 / 赋予
- , —— 如果有多个表达式(例如:同时给u,g,o配置权限),中间用英文 , 间隔(中间不能有空格)
2、权限掩码
Linux中一组rwx被映射为3位2进制数:有字母就为 1,没有字母就为 0,将每组组合后的结果再转为10进制数表示
- r--:100 —— 4 (只读)
- -w-: 010 —— 2 (只写)
- --x:001 —— 1 (只可执行)
也即单一组属性如果是 rwx: 111 > 4+2+1 = 7;如果是 rw-: 110 > 4+2+0 = 6;如果是 ---: 000 >0+0+0 = 0
这样3×3组9列属性即转换为 3个10进制数表示
常用组合:
- chmod 777 ... 所有人 (u,g,o) 拥有所有权限 (rwx)
chmod 760 ... 所有者(rwx),所属组(rw-),其他人(---)
chown 改变文件或目录的作者和组
语法:chmod [选项] [属主][:群组] 目录或文件
常用选项: -R:递归,连同目录下所有文件及子目录都进行变更。
chown 模式的语法:
- 8进制数字模式
3位8进制数字组成,从前向后每个8进制数字分别表示属主、属群和其他用户对该文件的访问权限,这个特性正好对应ls -l中查看第一列的后9个字母所分3组的顺序
需要将1位8进制转为3位2进制数字: 0转为000 1转为001 2转为010 3转为011 4转为100 5转为101 6转为110 7转为111 3位2进制中: 第一位固定表示读权限r 第二位固定表示写权限w 第三位固定表示执行权限x 有权限就是2进制数字1 无权限就是2进制数字0
- 字母模式
用户字母+运算符号+权限字母组成,中间不能有空格,要针对不同用户设置不同权限时,需要在多个用户符号权限模式之间逗号链接,逗号前后不能有空格
用户字母:
u :表示作者、属主 (user)
g :表示属组、属群、群组 (group)
o :表示其他用户(other)
a :表示所有人=ugo(all)
符号:
+ :表示增加权限
- :表示去掉权限
= :表示修改成指定权限
权限字母:
r
w
x举例 u+w 表示作者增加写权限 go-w,a-x 组用户和其他用户去掉写权限,所有人都去掉执行权限 a=rwx 所有人都改为可读可写可执行 u+x,g-w,o= 表示作者增加执行权限,组用户去掉写权限,其他用户改为没有读写执行权限
chown 也可以,改变文件或目录的所有者或群组
语法:chown 新的所有者名或群组名 文件或目录名 例如:chown jiangwei f1
Linux的进程管理
进程
- 运行程序启来的程序叫进程
- 进程的状态
创建(分配内存)--- 就绪(分配内存成功后添加到就绪池中)---》 运行(cpu选择一个就绪池中的进程工作,运行一个时间片后再放回进程池中) ---》 阻塞(当有事件发生时进程为阻塞状态,当事件解决后,进程再次回到进程池) --- 退出(回收内存成功后,进程退出)
- 每个进程都一个进程id, 叫pid
- 主要用于查看电脑中的进程、查看某进程、查看某进程的占用资源情况
ps -ef | grep 进程名 看被测物的进程启没启
ps 显示当前系统中运行的进程
语法:ps -选项
最常用的两个选项:aux和-ef
ps -ef :列出系统中所有的进程
ps -ef |grep sshd :测试人员常用这个命令查看被测物相关的进程是否已启动,包含:数据库 进程 、web服务 进程、应用本身 进程
ps aux :列出目前所有的正在内存当中的程序,相比ps -ef,ps aux能看到cpu和内存的占用百分比。
通常查询指定进程都是和| grep结合使用 :ps -ef或者ps -aux | grep 进程名称 | grep -v grep
top 动态监控进程所占系统的资源排序显示,(3秒刷新一次)
语法:top [选项]
- ctrl+c,退出top
- 此命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面
- 打印的信息较多,包括系统负载(load average)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况
- top -p 进程号 :查看单个进程
- top -p 进程号,进程号 :查看多个进程
top -p 1,2 这里进程编号之间必须逗号隔开,不能使用空格
top和ps aux的区别:
top是实时刷新的,top会把最耗资源的进程显示在最前面(而这些最耗资源的通常是我们测试工程师最关注的被测物相关的进程),top展示的内容更丰富,会将系统整体的资源占用情况也显示
需关注的项:%CPU、%MEM、 COMMAND、PID。
- 拓展小知识 --- htop
kill 停止或杀死进程,可以通过进程号pid来指定要操作的对象
语法:kill [-signal] PID ,只有-9信号才可以无条件终止进程
常用杀进程:kill -9 进程号
- kill -9 进程号1 进程号2 进程号3 :进程编号之间必须空格隔开,不能使用逗号
kill -9和kill的区别
- kill -9 pid,杀进程速度更快,但可能导致程序异常
- kill pid,杀进程速度满,但安全
- 大多数时候用的是kill -9
vmstat 查看整个系统的资源占用情况
语法:vmstat
- 通过vmstat就可以知道具体是哪里有压力。 vmstat命令打印的结果共分为6部分:procs、memory、 swap、io、system、cpu。
- 测试人员常用来查看服务器cpu mem 设备IO的占用情况。
free 查看整个系统内存的使用情况
语法:free [-选项]
- 常用选项:
-b:用字节做单位
-k:用KByte作单位
-m:用MByte做单位
-t:显示total(总计)
- free -mt :显示当前系统的内存使用状况
df 查看整个系统磁盘空间的占用情况
语法:df
- 不使用任何选项的 df 命令,默认会将系统内所有的文件系统信息,以 KB 为单位显示出来。
- 常用于查看该Linux主机上挂载的其他盘,如U盘、光盘等,要求主机用户必须登录
- 各列信息的含义分别是:
- Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
- 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
- Used:表示用掉的硬盘空间大小;
- Available:表示剩余的硬盘空间大小;
- Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
- Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。
w 查看当前系统负载,此命令是Linux管理员最常用的命令
语法:w
Linux的服务管理
systemctl 用于服务管理
早期服务管理命令是service ,在centos7之后,支持systemctl
- systemctl :列出正在运行的服务状态,自动分页显示, 按enter一行一行下方, 按空格一页一页下翻, 按ctl+c退出。
- systemctl start 服务名 :启动某个服务, 服务名就是systemctl中查看的第一列的名称,应用级的服务的服务名通常是xxx.service
- systemctl stop ××× :停止某个服务
- systemctl restart ××× :重启某个服务
- systemctl status ××× :查看某个服务的状态
- *这个命令在后续的[实战练习]中会应用到
Linux的安装包管理
rpm 用于管理本地rpm包,rpm包有时也习惯称为rpm套件。
语法:rpm -选项 包名
常用选项:
- -i 安装指定的rpm包
- -v 显示安装细节
- -h 显示安装进度
- -a 查询所有rpm包
- -q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户
- -e 卸载rpm包
- -ivh:安装指定的rpm包文件,安装软件 ---- rpm -ivh /abc/aa.rpm
- -qa:查询当前主机所有已安装的rpm包名称 ----- rpm -qa | grep -i abc
- -e:卸载已安装的rpm包,通常结合--nodeps选项一起使用,表示卸载软件时不考虑该软件是否被其他软件依赖而强制卸载 ------ rpm -e --nodeps 包名称
- rpm安装需要自行解决软件的互斥、依赖问题
yum 联网去 下载 所需要的rpm包,然后 自动安装(或卸载 或更新 或查询)
语法:yum [-选项] [command]
由于yum官方服务器在国外,访问速度很慢,通常会更换为国内镜像服务器,可以加快访问速度。
- 1. 对yum配置文件重命名: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 2. 获取aliyun上centos7版yum文件: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 3. 重新缓存yum: yum makecache
常见子命令:
- yum list :列出服务器上所有软件,以帮助找到准确的包名
- yum install 包名 :下载并安装软件
- yum search 包名 :查找需要安装的软件是否在yum源上
- yum update 包名 :更新软件
- yum remove 包名 :卸载软件
- 如果要查看本地是否安装某软件,只能用rpm不能用yum
- 注意:使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的
- 特点:如果安装包有依赖其他软件,会将依赖包一起下载并安装。
练一练:
- yum install tree :安装“树形ls”
- tree /root :树形查看root目录内容
rpm和yum有啥区别?
- 如果linux服务器本机有rpm包。用rpm命令,来安装本地的rpm包
- 如果linux服务器本机没有对应的rpm包。用yum命令,可以联网下载并自动安装对应的rpm包(且它会把所有的依赖包一并自动下载并安装)。
Linux的安全设置
必须将Linux的安全策略改为permissive,否则SSH之外的方式外网无法访问内网
getenforce 查看 SELinux 工作模式
语法:getenforce
- SELinux的3种工作模式:
- disabled: 禁用。SELinux未运行。
- permissive:宽容模式。SELinux 运行中,但仅会有警告讯息并不会实际限制。
- enforcing:强制模式。SELinux 运行中,且会实际限制。
setenforce 修改 SELinux 工作模式
必须将Linux的安全策略改为permissive,否则SSH之外的方式外网无法访问内网
语法:setenforce 选项
常用选项:
- 0:切换成 permissive(宽容模式)
- 1:切换成 enforcing(强制模式)
setenforce 0 :临时关闭内核防火墙,无需重启机器
如何永久关闭防火墙?
修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled
注:这个配置需要重启机器才生效