目录
一,操作系统
1.1 什么是操作系统
没有安装操作系统的计算机,通常被称为裸机。
如果想要在裸机上运行自己所编写的程序,就必须用机器语言书写程序(10100101…)。
如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序。
1.2 不同应用领域的主流操作系统
(1)桌面操作系统
- windows 用户群体大
- mac OS 适合于开发人员
- Linux 应用软件少
(2)服务器操作系统
- Linux 安全,稳定,免费,占比率高
- Windows Server 付费,占比率低
(3)嵌入式操作系统
- Linux
(4)移动设备操作系统
- iOS
- Android(基于Linux)
1.3 虚拟机
通过软件模拟的具有完整硬件系统功能。
二,Linux操作系统
2.1 Linux内核及发行版
Linux内核版本
内核时系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的内核程序。
Linux发行版本
Linux发行版(也被叫做GNU/Linux发行版)通常包括桌面环境,办公套件,媒体播放器,数据库等应用软件。
常见的发行版本如下:
- Ubuntu
- Redhat
2.2 文件的目录
单用户操作系统:指一台计算机在同一时间只能由一个用户使用一个用户独自享有系统的全部硬件和软件资源。
(Windows XP 之前的版本都是单用户操作系统)
多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享有系统的全部硬件和软件系统。
(Unix和Linux的设计初衷就是多用户的操作系统)
Ubuntu 没有盘符这个概念,只有一个根目录/ ,所有文件都在它下面。
2.3 Linux 部分主要目录速查表
/ | 根目录,一般根目录下只存放目录,在Linux |
---|---|
/bin | 可执行二进制文件的目录,如常见的命令is,tar,mv,cat等 |
/etc | 系统配置文件存放的目录,不建议在此目录下存放可执行文件 |
/home | 系统默认的用户家目录,新增用户账号,用户的家目录都存放在此目录下 |
2.4 常见Linux 命令的基本使用
(1)Ubuntu 终端实用技巧
- “ctrl”+“shift”+“=” 放大终端窗口的字体显示;“ctrl”+“-” 缩小终端窗口的字体显示。
- 自动补全 在敲出 文件/目录/命令的前几个字母之后,按下tab键。
如果输入的没有歧义,系统会自动补全。
如果还存在其他文件/目录/命令,再按一下tab键,系统会提示可能存在的命令。 - 曾经使用过的命令
按上下光标键可以在曾经使用过的命令之间来回切换。
如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl+c。
(2)学习Linux终端命令的原因
- Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作,文件存取,目录操作,进程管理,文件权限设定等。
- 在职场中,大量的服务器维护工作都是在远程通过SSH客户端来完成的,并没有图形界面,所有工作都需要通过命令来完成。
- 在职场中,作为后端程序员,必须要或多或少的掌握一些Linux常用的终端命令。
- Linux发行版本的命令大概有200多个,但是常用的命令只有10多个。
学习终端命令的技巧:
不需要死记硬背,对于常用命令,用的多了,自然就记住了。
不要尝试一次学会所有的命令,有些命令是不常用的,如果临时遇到,百度即可。
(3)Linux终端命令格式
终端命名格式:
command [-options] [parameter]
[ ] 代表可选。
说明:
- command:命令名,相应功能的英语单词或单词的缩写。
- [-options]:选项,可用来对命令进行控制,也可以省略。
- parameter:传给命令的参数,可以是零个,一个或者多个。
(4)命令查阅命令帮助信息
command --help
显示command命令的帮助信息
man command
查阅command命令的使用手册
例:python@ubuntu:~/Desktop$ mkdir --help
python@ubuntu:~/Desktop$ man mkdir
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一页 |
q | 退出 |
/word | 搜索word字符串 |
三,Linux基本命令
3.1 常用的Linux命令
序号 | 命名 | 对应英文 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前文件夹下的内容 |
02 | pwd | print work directory | 查看当前所在文件夹 |
03 | cd [目录名] | change directory | 切换文件夹 |
04 | touch [文件名] | touch | 如果文件不存在,新建文件 |
05 | mkdir [目录名] | make directory | 创建目录 |
06 | rm [文件名] | remove | 创建指定的文件 |
07 | clear | clear | 清除 |
(1)ls(查看当前文件夹内容)
Linux下文件和目录的特点:
(1)Linux文件或者目录名称最长可以有256个字符
(2)以 "." 开头的文件为隐藏文件,需要用 -a 参数才能显示
(3)" . " 代表当前目录,“ .. " 代表上一级目录
ls 常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件。 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合-l以人性化的方式显示文件大小 |
(-lh 同 -l -h
-lha 许多隐藏文件都是用来配置安装的内容)
计算机中文件大小的表示方法
字节 | B | 8位二进制数 |
---|---|---|
千 | K | 千字节 1KB=1024B |
兆 | M | 百万 1MB=1024KB |
千兆 | G | 十亿 1GB=1024MB |
太 | T | 万亿 … |
拍 | P | 千万亿 … |
文 | E | 百亿亿 … |
译 | Z | 十万亿亿 … |
尧 | Y | 一亿亿亿字节 … |
ls 通配符的使用
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少一个 |
[ ] | 表示可以匹配字符组中的任意一个 |
---|---|
[ abc ] | 匹配a,b,c中的任意一个 |
[ a-f ] | 匹配从 a~f 范围内的任意一个字符 |
(2)cd(切换)
注意:Linux所有的目录和文件名都是大小写不敏感的。
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录) |
cd~ | 切换到当前用户的主目录(/home/用户目录) |
cd. | 保持在当前目录 |
cd… | 切换到上级目录 |
cd- | 可以在目前两次目录之间来回切换 |
绝对路径与相对路径
绝对路径:在输入路径时,最前面是 / 或者 ~ ,表示从根目录/家目录开始的具体目录位置。
相对路径:在输入路径时,最前面不是 / 或者 ~ ,表示相对当前目录所在的目录位置。
(3)touch和mkdir(创建)
touch:
如果文件不存在,可以创建一个空白文件。
如果文件已经存在,可以修改文件的末次修改日期。
mkdir:
选项 | 含义 |
---|---|
-p | 可以递归创建目录 |
(4)rm (删除)
使用rm,文件删除后不能恢复。
同一个目录下,文件和目录不允许重名。
选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件,不需要提示 |
-r | 递归地删除目录下的内容,删除文件夹必须加此参数 |
通配符删除,就在自己的家目录操作,不要到根目录把所有的目录都删除了。
3.2 拷贝和移动文件
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | tree[目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件 目标文件 | copy | 复制文件或者目录 |
03 | mv 源文件 目录文件 | move | 移动文件或者目录/文件或者目录重命名 |
(1)tree(以树状图列出)
tree ~ 家目录
直接回车,显示当前目录。
选项 | 含义 |
---|---|
-d | 只显示当前目录,不显示文件 |
(2)cp(复制文件或文件夹)
如果不想要改变名字,只需要输入 “.” 。
选项 | 含义 |
---|---|
-i | 覆盖文件夹前提示 |
-r | 若给出的源文件是cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
(4)mv (移动和重命名)
可以用来移动文件或目录,也可以给文件或目录重命名。
移动文件:
重命名:
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
3.3 查看文件内容
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat文件名 | concatenate | 查看文件内容,创建文件,文件合并,追加文件内容等功能 |
02 | more文件名 | more | 分屏显示文件内容 |
03 | grep搜索文本,文件名 | grep | 搜索文本文件内容 |
(1)cat,more查看文件内容
cat
cat会一次显示所有内容,适用于内容较少的文本文件。
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
more
more可以用于分屏显示文件内容,适用于查看内容较多的文件。
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索word字符串 |
(2)grep(Ctrl+F 搜索)
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包括匹配文本的所有行(相当于求反) |
-i | 忽略大小写 |
显示不包括的并包含符号
当搜索内容不仅仅包含一个单词并标上行号。
grep允许对文本文件进行模式查找,所谓模式查找,又被称为正则表达式。
参数 | 含义 |
---|---|
^a | 行首,搜索以a开头的行 |
ke$ | 行尾,搜索以ke结束的行 |
3.4 其他
(1) echo
echo会在终端显示参数指定的文字,通常会和重定向联合使用。
(2)重定向>和>>
- Linux 允许将命令执行结果重定向到一个文件。
- 将本应该显示在终端上的内容输出/追加到指定文件中,其中:
“>” 表示输出,会覆盖文件原有的内容
“>>” 表示追加,会将内容追加到已有文件的末尾
echo可以实现在创建文件的同时就指定文件内容。
(3)管道 |
- Linux允许将一个命令的输出通过管道做为另一个命令的输入。
- more:分屏展示内容。
- grep:在命令执行结果的基础上查询指定的文本
四,远程管理命令
4.1 关机/重启
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | shutdown 选项 时间 | shutdown | 关机/重新启动 |
不指定选项和参数,默认表示1分钟之后关闭电脑。
远程维护服务器时,最好不要关闭系统,而应该重新启动系统。
选项 | 含义 |
---|---|
-r | 重新启动 |
4.2 查看或配置网卡信息
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ifconfig | configure a network interface | 查看/配置计算机当前配置信息 |
02 | ping ip地址 | ping | 检测到目标ip地址的连接是否连接 |
网卡和IP地址
- 网卡是一个专门负责网络通讯的硬件设备。
- IP地址是设置在网卡上的地址信息。
我们可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码。
每台联网的电脑上都有IP地址,是保证电脑之间正常通讯的重要设置。
(1)ifconfig(查阅网卡信息)
(2)ping(测试网卡信息)
ping一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢。
提示:在Linux中,想要终止一个终端程序的执行,绝大多数都可以使用 CTRL + C
4.3 远程登录和复制文件
(1)域名和端口号
域名
- 由一串用点分隔的名字组成,例如:www.itcast.com
- 是IP地址的别名,方便用户记忆
端口号 - IP地址:通过IP地址找到网络上的计算机
- 端口号:通过端口号可以找到计算机上运行的应用程序
常见服务端口号列表:
序号 | 服务 | 端口号 |
---|---|---|
01 | SSH服务器 | 22 |
02 | Web服务器 | 80 |
03 | HTTPS | 443 |
04 | FTP服务器 | 21 |
(2)SSH客户端的简单使用
ssh [-p port] user@remote
- user是在远程机器上的用户名,如果不指定的话,默认为当前用户。
- remote是远程机器的地址,可以是IP/域名,或者是后面会提到的别名。
- port是 SSH Server 监听的端口,如果不指定,就为默认值22.
注意:
- ssh这个终端命令只能在Linux或者UNIX系统下使用
- 如果在windows系统中,可以安装Putty或者XShell客户端软件
超级用户身份执行:
指示:使exit 退出用户的登录。
(3)Windows下SSH客户端的安装
(4)scp(远程拷贝)
- scp就是secure copy,是一个在LInux下用来进行远程拷贝文件的命令。
- 它的地址格式与ssh基本相同,需要注意的是,在指定端口是用的是大写的一个P而不是一个小写的。
选项 | 含义 |
---|---|
-r | 若给出的源文件是目录1文件,则scp将递归复制该目录下的所有子目录和文件,目录文件必须为一个目录名 |
-p | 若远程SSH服务器的端口不是22,需要使用大小字母 -P 选项指定端口 |
注意:
- scp 这个终端命令只能在Linux或者UNIX系统下使用
- 如果在windows系统中,可以安装PvTTY,使用pscp命令工具或者安装FileZilla使用FTP进行文件传输
FileZilla
- 官方网站:https://www.filezilla.cn/download/client
- FileZilla 2.2.6 在传输文件时,使用的是FTP服务而不是SSH服务,因此端口号应设置为21。
五,SSH高级
ssh目录
- 免密码登录
- 配置别名
有关SSH配置信息都保存在用户家目录的.ssh目录下。
第一次连接后,主机信息会保存在已知主机文件中,下次登录则不会提示信息了。
(1)免密码登录
- 配置公钥
执行ssh-keygen即可生成SSH钥匙,一路回车即可。 - 上传公钥到服务器
执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥。
用来加密使用的两个文件
原理:非对称加密算法
(2)配置别名
使用ssh mac 替代 ssh -p port user@remote
方法:在~/.ssh/config里追加。
应用:
六,用户权限
6.1 用户和权限的基本概念
- 用户是Linux系统工作中重要的一环,用户管理包括用户与组管理。
- 在Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且不同的系统资源拥有不同的使用权限。
- 在Linux中,可以指定每一个用户针对不同的文件的或者目录的不同权限。
对文件/目录的权限包括:
序号 | 权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|---|
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | excute | x | 1 |
6.2 组
- 为了方便用户管理,提出了组的概念。
在实际应用中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而依次为每一个用户设置好不同权限。
6.3 ls-l(文件详细信息说明)
- 权限
- 硬链接数:通俗地讲,就是由多少种方式,可以访问到当前目录/文件。
- 拥有者
- 组
- 大小
- 时间
- 名称
6.4 chmod修改权限
(1)文件权限
执行文件:
(2)目录权限
- 一个目录如果没有可执行权限,则不能对该目录执行其他命令;
- 一个目录如果没有可读可写权限,则不能查看该目录下的文件内容;
- 一个目录如果没有可写权限,则不能新建文件;
七,组管理
7.1 超级用户
- Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限。
- 在大多数版本的Linux中,都不推荐直接使用root账号登录系统。
- 在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就被称为“标准用户”。
sudo
- su是substitute user的缩写,表示使用另一个用户的身份。
- sudo命令用来以其他身份来执行命令,预设的身份为root。
- 用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
若其未经授权的用户企图使用sudo,则会发出警告邮件给管理员。
7.2 组管理
提示:创建组/删除组的终端命令都需要通过sudo执行
序号 | 命令 | 作用 |
---|---|---|
01 | groupadd 组名 | 添加组 |
02 | groupdel 组名 | 删除组 |
03 | cat /etc/group | 确认组信息 |
04 | chgrp 组名 文件/目录名 | 修改文件/目录的所属组 |
提示:
组信息保存在 /etc/group 文件中
/etc 目录是用来保存系统配置信息的目录
八,用户管理
8.1 用户基本终端命令
序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | useradd -m -g 组 用户名 | 添加新用户 | -m 自动创建用户家目录。 -g 指定用户所在的组,否则会建立一个和其相同的组。 |
02 | passwd 用户名 | 设置用户密码 | 如果是普通用户,直接用passwd可以修改自己的账户密码。 |
03 | userdel -r 用户名 | 删除用户 | -r选项会自动删除用户家目录 |
04 | cat /etc/passwdIgrep 用户名 | 确认用户信息 | 新建用户后,用户信息会保存在 etc/passwd 文件中 |
不使用-m,则系统不会帮我们创建家目录
提示:
- 创建用户时,如果忘记加-m选项指定新用户的家目录—最简单的方法就是删除用户,重新创建。
8.2 查看用户信息
id/who/whoami
序号 | 命令 | 作用 |
---|---|---|
01 | id [用户名] | 查看用户UID和GID信息 |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前登录用户的账号名 |
如果没有用户名,则查看当前的python组。
passwd文件
/etc/passwd 文件存放的是用户的信息,由6个分号组成的7个信息:
- 1.用户名
- 2.密码(x,表示加密的密码)
- 3.UID(用户标识)
- 4.GID(组标识)
- 5.用户全名或本地账户
- 6.家目录
- 7.登陆使用的Shell,就是登录之后使用的终端命令窗口,ubuntu默认是dash
时间表示上次开机的时间,
(:0)表示当前地址就是现在所使用的主机
usermod
usermod可以用来设置用户的主线/附加组和登录Shell。
- 主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组。
- 附加组:在etc/group中最后一列表示该组的用户列表,用来指定用户的附加权限。
提示:设置了用户的附加组之后,需要重新登录才能生效。
修改dash为bash:
which
提示:
- /etc/passwd 是用来保存用户信息的文件
- /user/bin/passwd 是用来修改用户密码的程序
which命令可以查看执行命令所在位置。
在Linux中,绝大多数可执行文件都保存在/bin,/sbin,/usr/bin,/usr/sbin。
- /bin 是二进制执行文件目录,主要用于具体应用。
- /sbin(System binary) 是系统管理员专用的二进制代码存放目录,主要用于系统管理。
- /usr/bin 后期安装的一些软件。
- /usr/sbin 超级用户的一些管理程序。
8.3 su 切换用户
序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | su - 用户名 | 切换用户,并且切换目录 | - 可以切换到用户家目录,否则保持位置不变 |
02 | exit | 退出当前登录用户 |
- su不接用户名,可以切换到root,但是不推荐使用,因为不安全。
8.4 修改文件权限
序号 | 命令 | 作用 |
---|---|---|
01 | chown | 修改拥有者 |
02 | chgrp | 修改值 |
03 | chmod | 修改权限 |
.chmod在设置权限时,可以简单使用三个数字分别对应拥有者,组和其他用户的权限。
-R :以递归的形式修改目录下的所有文件。
九,系统信息
通过远程终端维护服务器,查看服务器上当前系统日期和时间/磁盘空间占用情况/程序执行情况。
9.1 时间和日期
序号 | 命令 | 作用 |
---|---|---|
01 | date | 查看系统时间 |
02 | cal | calender查看日历,-y选项可以查看一年的日历 |
9.2 磁盘信息
序号 | 命令 | 作用 |
---|---|---|
01 | df -h | disk free 显示磁盘剩余空间 |
02 | du -h [目录名] | disk usage 显示目录下的文件大小 |
参数 | 含义 |
---|---|
-h | 以人性化的方式显示文件大小 |
9.3 进程信息
- 所谓进程,通俗地说,就是正在执行的程序。
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细状况 |
02 | top | 动态显示运行中的进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程,-9表示强行停止 |
ps 默认只会显示当前用户通过终端启动的应用程序。
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程。 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
要退出top可以直接输入q。
提示:使用kill命令时,最好只终止由当前用户开启的进程,而不用终止root身份开启的进程,否则可能导致系统崩溃。
十,其他命令
10.1 查找文件(find)
序号 | 命令 | 作用 |
---|---|---|
01 | find [路径] -name “*.py” | 查找指定路径下扩展名是.py的文件,包括子目录。 |
10.2 软链接(ln -s)
序号 | 命令 | 作用 |
---|---|---|
01 | ln -s 被链接的源文件完整路径(绝对路径) 链接文件名 | 建立文件的软链接,用通俗的方式讲类似于window下的快捷方式 |
10.3 硬链接(ln)
在使用ln创建链接时,如果没-s选项,会创建一个硬链接,而不是软链接。
创建硬链接后,删除源文件,硬链接不受影响,而软连接能够正常打开。
在Linux中,文件名和文件的数据是分开存储的。
10.3 打包压缩
不同操作系统,常用的打包压缩方式是不同的:
- Windows常用rar
- Mac常用zip
- Linux常用tar.gz
(1)打包/解包
- tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中。
(2)gzip
用gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz。
- 在tar命令中有一个选项-z可以调用gzip,从而可以方便实现压缩和解压功能。
(3)bzip2(two)
用bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2。
- 在tar命令中有一个选项-j可以调用bzip2,从而可以方便实现压缩和解压缩的功能。
选项 | 含义 |
---|---|
-C | 解压缩到指定目录,注意要解压缩的目录必须存在。 |
(4)软件安装
通过apt安装/卸载软件。
10.4 配置软件源
所谓镜像源,就是所有服务器的内容是相同的。