Linux,你必需知道的
磁盘、进程、内存
保存数据的磁盘
实际处理数据的进程
存储各种运行信息的内存
磁盘和文件
Linux系统没有盘符的概念,它和所有类UNIX系统一样,有一个树型结构的文件系统。
磁盘
查看系统已挂载文件系统情况,df只会显示已挂载的分区。
vdaX 指文件系统分区,v在这里代表KVM使用的virto虚拟文件系统,X是分区号。相应的,sata, ssd等磁盘使用s开头,传统的HHD机械硬盘使用h开头。
查看磁盘硬件情况,fdisk 并不显示系统分区,显示电脑上的所有磁盘(包括未挂载磁盘)。
进程
控制进程就等于控制Linux
:通过父进程创建一个子进程,子进程是父进程自身的一个副本。
:舍弃进程原本携带信息,在进程执行时用新的程序代码替代调用进程的内容。
后台执行
在执行命令的结尾加上 ,可以使程序在后台运行。如:
使用 命令,可使程序输出不打印到时前端(终端),默认将打印到 文件。
Ctrl+Z
使在前台运行的进程后台运行。
将后台进程拉回前台运行。
快速的数据处理管道
管道蕴含着Linux从Unix中继承的一个重要概念:
程序应该只关注一个目标,并尽可能把它做好。程序应能够互相协同工作。让程序处理文本数据流,这是一个通用的接口
stdin:标准输入,文件描述符
stdout:标准输出,文件描述符1
stderr: 标准错误输出,文件描述符2
管道
管道中常用的快捷命令
过滤并保存系统运行的所有进程号
cut 命令把 -d 选项指定的文字作为文字分隔符,仅抽取 -f 选项定位的数据(域)。这个例子中,使用空格作为分隔符。但是,由于连续的空格会被当作多个分隔符,因此要事先通过 tr 命令将连续空格转换成一个空格。
内存
物理地址空间和逻辑地址空间
物理内存分为Linux内核自身使用的区域和用户进程使用的区域。内核使用低端内存,高端内存被分配给了用户进程。低端内存中的空闲区域也将被分配给用户进程使用。
进程在访问物理内存时并不直接指定物理地址,而是指定逻辑地址。内存的内核数据区域中预先设置逻辑地址和物理地址的对应“页表”,
然后 CPU 上搭载的 MMU(Memory Management Unit)硬件会参照该页表,自动实现对映射后物理地址上的数据的访问。
为每个进程提供独立的内存空间,等于实现了进程之间的安全保护。
通过 系统运行内存信息文件查看内存状态
通过 命令查看内存状态
Linux 发行版
Linux本身指 GNU/Linux 内核,但只有内核一般用户是没法使用的。所以世面上就出现了很多 Linux 发行版,它打包并整理了一系列开箱即用的工具。
CentOS
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux
依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。
两者的不同,在于CentOS并不包含封闭源代码软件。
公司的服务器(测试、生产)环境使用的CentOS 7。
Ubuntu
Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,由全球化的专业开发团队(Canonical Ltd)打造的。
其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词 [2] ,类似儒家“仁爱”的思想,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观。
公司部分开发人员的开发电脑安装了 Ubuntu 16.04 操作系统。
虚拟化
Linux拥有强大的虚拟化能力。常见的有:
KVM:完全虚拟化,OpenStack默认使用它做为系统虚拟化工具
Xen:完全虚拟化,类似KVM的另一套虚拟化
Cgroup:半虚拟化,Docker/k8s等容器虚拟化的核心
一个邮件发送系统的虚拟网络构成。
开始使用Linux
终端
终端会话是用户与shell环境打交道的地方,如果你使用的是基于图形用户界面的系统,这指的就是终端窗口。如果没有图形用户界面(生产服务器或SSH会话),那么登录后你看到的就是shell提示符。
CentOS 7的终端提示如下:
$表示普通用户,#表示管理员用户root。root是Linux系统中权限最高的用户。
环境变量
环境变量通常保存了可执行文件、库文件等的搜索路径列表。例如 和 :
设置环境变量可以在命令行直接使用 命令:。但这样设置在系统重启后就无效了,我们可以把它写到配置文件里面。全局配置:/etc/profile,用户配置:~/.bash_prfile。若环境变量写在配置文件内,在重启系统前默认是不会生效的,需要手动使其生效。
安装软件
在Linux下一般有两种方式来安装软件:
使用包管理器自动安装
使用源码编译安装
RPM
CentOS 7 使用yum包管理器安装RPM格式的软件。常用命令有:
列出已安装包:
用yum安装软件:
用yum更新软件:
(更新系统)
用yum卸载软件:
yum工具和命令命令ls:查看文件
列出目录内容。
-a 列出所有文件
-l 列出文件明细
-h 使用 human 友好的方式显示文件内容大小
-F 将指示符添加到显示的项后面。如:* 可执行,/ 目录,@ 符号连接,= UNIX套接字,
tar(解)压缩
将多个文件压缩成一个单一文件,或相反。Linux tar 命令支持多种压缩格式。常用的有:gzip和bzip2
-c 压缩文件,
-z 使用 gzip 进行(解)压缩
-j 使用 bzip2 进行(解)压缩
-x 解压文件
-f 指定压缩生成/解压文件
cURL:数据传输命令行工具
cURL是传输数据到服务器或从服务器获取数据的工具,支持多种协议。如:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP。
上传文件
:使用HTTP POST方法
:上传文件字段设置为filename,引用本地目录的 app.jar 文件
常用选项
:显示进度条
:不显示进度信息
:设置远程文件下载到本地系统的目标文件名
:支持断点续传,后面的选项记cURL推断出正确的续传位置,也可以指定明确的字节偏移。
wget: 命令行HTTP客户端
下载文件
: 断点下载文件
镜像网站
:让wget耍流氓无视robots.txt协议
ps:查找进程
显示当前进程(所有或指定)的快照。
显示系统所有进程
显示系统所有终端所有用户进程
tail: 监控文件
实时监控 日志文件最新1024行内容:
top:查看系统运行状态
实时显示Linux系统运行状况
第一行:当前时间,系统运行时长,登录用户数,平均系统负载:1分钟、5分钟、15分钟
第二行:任务(进程)总数,运行数,休眠数,已停止数,僵尸进程数
第三行:CPU运行百分比。us: 用户空间占,用户进程空间内改变过优先级的进程占,空闲CPU占,等待输入输出的CPU,硬中断(Hardware IRQ)占,软中断(Software Interrupts)占
第四行:物理内存总数(KB),空闲内存,已使用内存,缓存的内存
第五行:交换空间总数,空闲交换内存,已使用,可使用
PID: 进程号
USER: 运行进程的用户
PR: 进程优先级
NI: nice值。负值表示高优先级,正值表示低优先级
VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES: 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR: 共享内存大小,单位kb
S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU: 上次更新到现在的CPU时间占用百分比
%MEM: 进程使用的物理内存百分比
TIME+: 进程使用的CPU时间总计,单位1/100秒
COMMAND: 进程名称(命令名/命令行)
用户管理
group
创建用户组:。创建一个组:devops,并指定组GID为1100
user
创建用户:。
: 指定用户UID
: 指定组GID,需要存在
: 指定附加组,需要存在
: 骨架目录中的文件和目录将被拷贝到用户主目录
: 若 指定目录不存在则创建
: 指定用户主目录
ssh
ssh
OpenSSH客户端
sftp
基于SSH协议的FTP客户端,可以通过SSH登录服务器并使用FTP协议上传、下载文件
put: 上传本地文件到服务器
get: 从服务器下载文件
!command: 命令前添加!,命令将在本地执行。
, 命令还有些参数可以设置,常用如下:
-P: 同步完整的文件权限的访问时间
-r: 递归拷贝目录内的所有文件
scp
基于SSH协议的文件拷贝工具,可以将本地文件拷贝到远程服务器。
VIM,编辑器之神
CentOS系统默认只安装了VI,要使用VIM需要安装:
VIM全称是:Vi IMproved。改进的Vi,程序员的文本编辑器。VIM被称为编辑器之神。使用 VIM 非常简单,在终端输入 即可。VIM支持全键盘操作,
不需要使用鼠标即可操作,可显著提供工作效率。
同时也可以指定要打开的文件。打开 vim 时可以使用参数,比如: 只读模式。在使用VIM查看比较大的日志文件等时候可以防止误操作修改文件。
VIM运行时有三种模式:
Normal模式:在Normal模式下,用户可以移动光标、操纵文字、输入各种控制操作
Edit模式:顾名思义,编辑模式下可以输入内容。
Command模式(指令模式):在Normal模式下,按 (输入英文冒号)则可进入指令模式。当编辑器下部出现闪烁的英文冒号时既进入指令模式。
使用VIM打开本文 ,默认处于 Normal 模式。
VIM 基本使用
这时,可以使用键盘上的 H、J、K、L 4个键移动光标,分别为:向左、上、下、右移动。当光标移动到期望的位置后可以有多种方法进入Edit(编辑)模式。
:在光标指定字符前进入编辑模式,:在光标指定字符后进入编辑模式,:替换光标指定字符并进入编辑模式。
退出Edit模式有两种方法:
按 键退出Edit模式并进入Normal模式
按 组合键
VIM技巧
保存和退出(Command模式)
输入 将保存当前编辑内容,若是打开的新文件可以在 后输入需要保存的文件名。
输入 将退出VIM,退出前必需保存已编辑内容。若想放弃当前编辑内容并退出,输入 。
, 可以组合输入。比如保存并退出:。
快速移动(Normal模式)
翻页
向前翻一页, 向后翻一页(向前翻页时VIM将保留之前页的最后两行)。
快速定位到文本开头或结尾
连按两次 键将光标移动到整个文本开头,将移动光标到整个文本结尾。
复制、粘贴行(Normal模式)
连续按两次 键复制单行,在需要粘贴的地方使用 键进行粘贴(将粘贴到光标所在行之下)。
复制多行
按 组合键可以高亮一行,这时可以使用 J、K 进行上下移动,选中需要的多行后再按 键即可复制多行。
撤销、恢复编辑(Normal模式)
在Normal模式下按 键将撤销最后一次编辑(每次保存文件算一次编辑)。按 将恢复撤销。撤销和恢复可进行多次。
自动补全(Edit模式)
在需要实例的文字后按 会弹出自动补全选择框,这里可以使用 或 进行向下、向下移动,选中需要实例的单词后按 键即可。
将本地路径录入文本(Edit模式)
使用 将弹出本地路径选择框(相对当前编辑文本路径),移动光标选中需要的路径,按 键后录入到文本中。
VIM配置
可以自定义VIM配置,VIM的配置文件为:,一般在用户主目录下。编辑配置文件:
输入以下内容打开高亮和自动缩进。
Shell
Shell是用户使用Linux的桥梁,它既是一种命令语言,又是一种程序。在Linux下,一般默认使用的是 Bash)。以下内容非特殊说明,默认使用的Bash。
Bash脚本
可以将一系列命令放到一个脚本文件中自动执行,一般这类脚本文件都以 结尾。
上面是一个普通的shell脚本,使用Bash执行。
领取专属 10元无门槛券
私享最新 技术干货