Skip to content

基本概念与操作

基本命令

命令lsmkdirrmtouch
作用显示当前目录的所有文件创建文件夹删除文件创建一个普通文件
命令rebootcdlsusblscpuip 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命令更新的。

bash
sudo apt-get update

sudo 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是最主流的。

bash
gzip test.cpp test #删除原先文件 并且压缩成.gz
gzip -d test.cpp.gz test.gz #解压缩
gzip -k test.cpp test #不删除原先文件 并且压缩成.gz

打包

第二步工具就只有tar了,这里tar是不可替代的。用tar命令将这些.gz的压缩文件打包在一个压缩包中。

bash
tar -cvf test.tar.gz test.cpp.gz test.gz #打包压缩文件

实际工作中没人会这么做的 这样做太麻烦了 zcvf cvf直接当作固定参数组合就可以了

参数解释

  • -z表示tar先使用gzip生成压缩文件,有时我们也使用bzip2来先压缩单个文件,此时就使用-j参数了。
bash
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系统进程的监视