基本概念与操作
基本命令
| 命令 | ls | mkdir | rm | touch |
|---|---|---|---|---|
| 作用 | 显示当前目录的所有文件 | 创建文件夹 | 删除文件 | 创建一个普通文件 |
| 命令 | reboot | cd | lsusb | lscpu | ip addr |
|---|---|---|---|---|---|
| 作用 | 重启系统 | 进入路径 | 显示usb接口 | 查看cpu | 查看地址 |
ssh服务
我们在实际工作中, 大多数情况都是远程操作, 真正触摸实机的情况极少, 实机有专门的人去管理的, 不需要我们在意。
远程连接需要 ssh 协议。linux主机是 ssh 服务器, 要先在linux主机上安装 ssh 服务。ssh是个协议, openSSh才是软件。
服务也是一种进程, 服务很多都被设置为开机自启, 不属于任何终端, 默默的为主机服务。
ssh服务默认就是开机自启, 所以在安装好ssh服务后, 我们直接就可以进行远程链接了。
ssh-server已经有了, 我们还需要ssh-client。windows上的远程链接工具都自带ssh协议的客户端。
常见的链接工具有Xshell, SecureCRT, MobaXterm。这里使用的是vscode。
注意w命令无法查看vscode登录的用户, 因为vscode属于远程通信, 并没有登录。
man命令
man命令很常用,操作虽然多,但其实只要会用那几个键就可以了。有很多人英语不好,最好多练一练,不想练的话直接百度也可以,man看不懂影响也不大。
按键部分
h键:help的简称,就是帮助手册,任何操作都可以在这里查看。/键:我们经常需要查找功能,比如函数返回值,
调用手册
| 用户的命令 | 系统调用 | 库函数 | 设备和特殊文件 | 文件格式和约定 | 游戏 | 宏命令和约定 | 系统管理命令 需管理员权限 |
|---|
这八个部分不需要死记硬背的,常用的只有前三个,忘了也没关系。 man一下就可以了
文件查找命令
find ./ -name "linuxNum.txt"locate可以搜索文件中的文件,它比find命令快,因为它搜索的是数据库(/var/lib/locatedb)。whereis可以搜索linux系统全部的可执行文件。which可以查看linux系统的命令是否存在,并返回命令的位置。
apt-get安装
工作原理
- 扫描本地存放的软件源列表,在列表中找到最新版本的软件包。不同版本的列表位置不一样。例如(/var/lib/apt/lists)
- 进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包。
- 从软件源所指的镜像网站中,下载相关的软件包。(镜像网站的地址存放在/etc/apt/sources.list文件中)
- 解压软件包,并自动完成应用程序的安装和配置。
sudo apt-get update
这个命令会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。
我们在新立得软件包管理器里看到的软件列表,都是通过update命令更新的。
sudo apt-get updatesudo apt-get upgrade
这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。
如果你的软件都是最新版本,会提示:
升级了0个软件包,新安装了0个软件包,要卸载0个软件包,有0个软件包未被升级。 总而言之,update是更新软件列表,upgrade是更新软件。
sudo apt-get remove
就是将软件删除掉,很简单。
软件包安装
软件包安装相对apt-get安装还是比较麻烦的,使用的也比较少,但是有些时候软件源缺乏想要的软件,就只能软件包安装了。
常用的软件包只有两种格式,.tar包或.rpm包。
tar只是压缩文件,可以打包各种文件,比如软件源码,但不会处理软件包之间的依赖关系。
rpm包相当于windows的安装文件,可以自动处理软件包的依赖关系。所以安装软件一般用的都是rpm包
源码安装
- 源码安装是三种方式中最麻烦的,但也是最灵活的。我们可以按照自己想要的方式编译出软件。
- 如何使用源码进行安装这一门课就不讲了。等到下一门课,我会带大家编译一下nginx,redis。等到那时,有了应用场景,源码编译就好讲多了。同时感受一下源码安装灵活的优势。
压缩与解压缩
使用
tar -zcvf 压缩文件名.tar.gz 被压缩的文件名生成压缩文件tar -zxvf 压缩文件名.tar.gz解开压缩文件
.tar.gz是最常用的压缩格式,只要把这个掌握,压缩,解压缩的问题基本就解决了70%了。等讲tar工作原理时,会讲一下.tar.bz2压缩格式。这两种基本解决了90%的问题。
工作原理
数个文件到.tar.gz的压缩格式其实是经过了两步。第一步压缩,第二步打包。
压缩
主要是给每个文件生成一个.gz的压缩文件。第一步压缩可以有很多工具,只不过gzip和bzip2是最主流的。
gzip test.cpp test #删除原先文件 并且压缩成.gz
gzip -d test.cpp.gz test.gz #解压缩
gzip -k test.cpp test #不删除原先文件 并且压缩成.gz打包
第二步工具就只有tar了,这里tar是不可替代的。用tar命令将这些.gz的压缩文件打包在一个压缩包中。
tar -cvf test.tar.gz test.cpp.gz test.gz #打包压缩文件实际工作中没人会这么做的 这样做太麻烦了 zcvf cvf直接当作固定参数组合就可以了
参数解释
- -z表示tar先使用gzip生成压缩文件,有时我们也使用bzip2来先压缩单个文件,此时就使用-j参数了。
tar -jcvf test.tar.bz2 test.cpp test #压缩成bz2格式
tar -jxvf test.tar.bz2 test.cpp test #解压缩bz2格式如果以后还有其它类型的压缩方式,百度一下,把-z替换掉就可以了
- -c表示压缩,-x表示解压
- -v表示,压缩或解压缩时显示操作的文件。
- -f表示后面接着压缩文件名,也就是说,f后面必须放在参数最后,然后后面加上压缩文件名称
重定向
重定向修改标准输出,标准错误输出的作用对象。在linux系统中,一切都被抽象成了文件,正如那句著名的话:一切皆文件。
那么我们对一切的操作最终对可以被归类为对文件的操作。比如向显示屏写数据,我们将其称为标准输出,比如从键盘读数据,我们称其为标准输入。
如果我们每次向显示屏写数据之前都要打开代表显示屏的文件,那是不是太麻烦了,于是操作系统在启动时,就会自动将代表显示屏和键盘的文件打开。
linux的每个进程都有一个pcb(进程控制块,process control block),pcb中有一个进程描述符表,里面存储着该进程所有的文件描述符,每个文件描述符都对应一个文件,linux文件的核心都在操作系统内核区中,用户只能通过文件描述符操作文件。
文件描述符表就是一个数组,在进程创建时,对应显示屏,键盘的文件就会打开。大家这下明白了吧,为什么linux系统中文件描述符就是一个整数,却能代表一个文件。
在linux系统中,标准输入,标准输出,标准错误输出就已经有了自己对应的文件描述符。
- 标准输入(STDIN):文件描述符序号为:0,默认从键盘获取输入。
- 标准输出(STDOUT):文件描述符序号为:1,默认输出到显示终端。
- 标志错误输出(STDERR):文件描述符序号为:2,默认输出到显示终端
重定向与管道
重定向的本质修改进程作用的文件描述符。管道的本质是进程间的通信。
管道本质是一种进程间通信的方式,当两个进程之间建立管道时,管道左面命令的输出就会变成右面命令的输入。
进程管理命令
这里只对这两个命令介绍一下,大家暂时知道有这两个命令就可以了。
ps命令
ps命令不加参数只能显示当前用户在本终端上运行的进程,所以我们一般都要对ps命令加上参数
- ps -ef:显示当前主机所有的进程。
- ps -aux:同样是显示当前主机所有的进程。
- ps -o:
-o参数常常要和其它参数搭配使用
top命令
相比于ps命令,top命令是对整个linux系统进程的监视
