Liunx 基本操作
什么是操作系统?
- 操作系统严格意义上来讲就知识一个内核,是一套管理软硬件资源的软件组件。
- 我们平时所说的操作系统其实是发行版,包括:内核 + 桌面环境 + 常用软件
- 常见内核:
- windows:windows NT
- linux:linux
- 常见操作系统:
- 桌面版:windows系列、ubuntu desktop、ubuntu kylin、deepin
- 服务器:windows server、Linux系列(ubuntu、centos、redhat)、Unix系列
- 移动端:Andriod、iOS、Symbian、windows phone、Ali OS
- 32位与64位的区别?
- 简单理解就是4车道与8车道的区别,本质是寻址空间的区别。
- 32位:最大寻址空间2^32 = 4G,大概可以内存3.25
- 64位:2^64,但是常用的主板最大128G
Linux系统简介
- 说明:主要依赖以下5大支柱
- 基于Unix操作系统
- 参考Minix系统
- GNU计划
- POSIX标准
- 互联网的发展
Linux发行版
- 发行版就是在内核的基础上,添加桌面环境和常用软件,省去了用户进行筛选安装的麻烦
- 分类:
- 桌面版:ubuntu desktop、ubuntu kylin、deepin
- 服务器:debian、redhat、ubuntu server、centos
- 选择:ubuntu 16.04 desktop
操作系统安装
-
安装虚拟机软件,一路next即可
- VMWare:比较庞大,如果14版本不支持你的CPU,请自行下载12版本
- VirtualBox:必VMWare小的多。
-
ubuntu1604系统安装
-
新建虚拟机
-
稍后安装操作系统
-
选择Linux系统、Ubuntu64位
-
设置虚拟机名称,指定保存位置
-
处理器配置:分配处理器及核心数
-
分配内存:1G
-
网络类型:使用桥接网络
-
磁盘容量:20G,立即分配所有空间
-
指定磁盘文件存储位置
-
点击完成,即可完成空白磁盘的创建
-
点击刚才创建空白磁盘
-
点击编辑虚拟机设置
-
点击CD/DVD,使用ISO镜像文件,然后浏览选择即可
-
点击确定即可完成镜像文件的指定
- 点击开启此虚拟机
- 启动后选择中文(简体),然后点击安装ubuntu
- 用户设置:姓名、计算机名、用户名、密码等
- 点击继续,即可进行操作系统的安装,可能时间稍长
- 安装完成会提示重启,重启后输入密码即可登录桌面系统
安装VMWare Tools
- 点击工具条上的虚拟机,显然"安装VMWare Tools"
- 从弹出的目录中选择压缩包
- 右键提取到,选择一个目录,点击确定
- 进入到解压后的目录
- 右键新建终端,启动一个终端
- 输入:
sudo ./vmware-install.pl
,然后敲回车 - 提示输入密码,输入密码即可(密码是不可见的)
- 输入yes,然后一直回车即可完成安装
- 之后再进行全屏测试即可看到已经可以全屏显示了
ubuntu系统使用
- 状态栏
- 系统设置
- 文件系统
- 全局搜索
- vmware的使用(快照)
练习:
- 安装搜狗输入法
- 安装谷歌浏览器
- 安装pycharm
-
系统启动流程
-
基本输入输出系统(BIOS)
- 系统上电后,做基本的硬件检查
-
主引导分区(MBR)
- 拷贝启动引导代码(bootloader)
-
启动引导代码(Bootloader)
- 作用:启动硬件,引导OS
- 说明:是在OS运行之前执行的一段代码,做硬件初始化,拷贝OS到内存
-
操作系统(OS)
- 运行第一个程序(守护进程):/sbin/init
-
守护进程
-
读取配置文件:
/etc/init/rc-sysinit.conf
,里面有操作系统运行级别0 关机模式 1 单用户模式 2-5 多用户模式(桌面系统) 6 重启
-
查看运行级别:
runlevel、who -r
-
-
根据运行模式,执行对应目录下的脚本,如:
/etc/rc5.d
-
用户自定义启动脚本:
/etc/rc.local
-
用户登录页面
- 桌面:图形界面
- 终端:小黑屏
- 可以使用工具远程连接电脑
- 安装ssh服务:
sudo apt-get install openssh-server
- 启动ssh服务:
sudo service sshd start
- 安装ssh服务:
文件系统
- 说明:
- 文件系统就是操作管理存储设备或分区上的文件的方法和数据结构,也就是存储设备上组织文件的方式。
- 操作系统中负责管理和存储文件的软件机构叫文件管理系统,简称文件系统。
- 常见文件系统:
- fat16(MS-DOS 6.x),最大分区2G
- fat32(windows 95),单个文件最大4G,性能较弱,容易产生碎片
- ntfs(windows nt),提升了fat32的稳定性
- ext4(linux),扩展型日志文件系统
- hfs[+] (Mac),苹果设备的文件系统
- exfat(mac/win),支持4G以上的单个文件,适合于闪存
根目录结构
-
Linux和Windows文件系统差异很大,没有顶层的C/D/E等盘符,是从’/‘开始的,只有它没有上一级目录,它处于目录结构的最顶层。若把整个目录结构倒过来看像一颗树,’/'处于根部,因此也叫根目录。
-
根目录结构介绍
目录 说明 / 根目录 /bin 大多数的操作命令 /boot 系统启动相关文件 /cdrom 挂载光盘 /dev 设备文件(在linux下一切设备皆文件) /etc 配置文件目录(经常使用) /home 普通用户的家目录,每个用户对应一个文件夹 /root 超级用户的家目录 /lib 库文件 /lib64 64位的库文件 /lost+found 系统出现异常时保存信息以便恢复,平时是空的 /media 自动识别设备的挂载点 /mnt mount,专门用于挂载的目录 /opt option,用于安装可选的软件 /proc 是虚拟的文件系统,可以映射硬件信息 /run 存放系统运行时的文件,如:进程文件 /sbin 超级用户使用的命令 /snap ubuntu自己搞的包管理系统 /srv service,存储本机提供的数据或服务 /sys 类似于proc的虚拟文件系统,可以映射内核信息 /tmp 保存随时可能销毁的临时文件 /usr 之前的功能同/home,现在是unix system resource,用户安装软件目录 /var 系统产生的不能自动销毁的文件,如: 日志文件
VIM编辑器
-
简介:vi是linux系统默认自带的终端编辑器,后来有了vi的加强版vim。被誉为"终端编辑器之神"
-
安装:
sudo apt-get install vim
-
说明:所有的操作都是在终端完成的,需要切换不同的工作模式来完成不同的功能。
-
工作模式:
- 正常模式(命令模式):使用VIM打开文件的默认模式
命令/操作 说明 vim filename 打开/新建一个文件 ESC 切换到正常模式 ZZ(shift + zz) 保存退出 !v 打开最后使用vim打开的文件 光标定位 vim filename +n 打开文件,将光标定位到第n行 vim filename + 打开文件,将光标定位到最后一行 gg 定位到首行 ngg 定位到第n行 G 定位到尾行 0 定位到开头,无论开头是否是可见字符 ^ 定位到首字符 $ 定位到行尾 k ↑ j ↓ h ← l → ctrl + f 下翻一屏 ctrl + b 上翻一屏 ctrl + d 下翻半屏 ctrl + u 上翻半屏 内容处理 x 向右删除一个字符 nx 向右删除n个字符 X 向左删除一个字符 nX 向左删除n个字符 yy 复制光标所在的一行 nyy 复制从光标开始向下的n行 p 粘贴 dd 删除光标所在的一行,相当于剪切效果 ndd 删除从光标开始向下的n行 u 撤销 ctrl + r 反撤销 - 插入模式(输入模式):可以完成文件内容的输入编辑等,输入以下字符可以进入此模式:
命令 说明 i 在光标位置插入内容 I 在光标所在行第一个非空字符处插入内容 a 在光标后面的字符插入内容 A 在光标所在行的行尾插入内容 o 在光标下一行插入空行 O 在光标上一行插入空行 s 删除光标所在字符 S 删除光标所在行 - 单行模式(编辑模式):可以完成文件的整体编辑保存等操作,输入’:'即可进入该模式
命令 说明 :q 退出 :w 保存 :wq 保存退出,等价于ZZ :x 保存退出 :w! 强制写入 :q! 强制退出,不会保存修改 :w filename 另存为 :e! 放弃所有修改,恢复到打开时的状态 vim设置 :set nu[mber] 显示行号 :set nonu[mber] 隐藏行号 :set tabstop=4 设置一个tab为4个字符 :set mouse=a 启动鼠标点击功能 查找替换 [:]/内容 查找指定内容,n下翻,N上翻 [:]?内容 查找指定内容,N下翻,n上翻 :%s/原内容/新内容/[g] 全局使用新内容替换原内容,只能替换每行的第一处,g表示全局 :m,ns/原内容/新内容/[g] m到n行使用新内容替换原内容,只能替换每行的第一处,g表示全局 光标定位 :n 光标定位到第n行 -
使用说明:
-
默认使用vim打开文件后的设置是单次的,关闭后就失效了,若小永久生效,需要使用配置文件
- 在用户家目录下创建一个文件
.vimrc
- 在该文件中写入相关设置
set number set tabstop=4 set mouse=a
- 使配置文件生效,不想重启可以这样操作:
source ~/.vimrc
- 在用户家目录下创建一个文件
-
若非正常的关闭了vim,可能会产生临时交换文件,用于恢复等操作。再次使用vim打开时会出现特定的操作页面,引导你进行恢复等相关操作。可以根据提示删除交换文件即可,也可以手动删除。临时文件是不可见的,需要使用
ls -a
才可以看到
-
help使用
- 说明:大多数命令都有 --help/-h参数用来查看帮助文档
- 示例:
ls --help
man使用
-
简介:man其实是manual的缩写,是一个命令,可以查看系统标准帮助文档
-
使用:
命令 说明 man name 查看指定内容(命令、函数、系统调用)的帮助文档 q 退出查询 ↓ 或 enter键 下翻一行 ↑ 上翻一行 pageup 上翻一页 pagedown 或 空格键 下翻一页 ?内容 查找,也可以上下翻 -
总结:有问题,找男人
Linux文件操作
使用命令
-
命令格式:
命令 [选项] [参数]
[]表示可选的
-
示例:
ls -l /etc
常识命令
-
ls:查看指定目录的内容,不指定目录时查看当前目录下的内容
选项 说明 -l 列表显示,会显示更多信息 -a 显示所有文件,包括隐藏文件(以.开头的文件) -h 人性化的显示大小,如:K/M/G - -l选项显示结果说明:
类型及权限 | 引用数 | 用户 | 用户组 | 大小 | 月 | 日 | 年或时间 | 文件名
- 文件类型:
符号 类型 - 普通文件 d 目录文件 l 链接文件 c 字符设备文件 b 块设备文件 s 套接字文件 p 管道文件 -
cd:切换工作目录
符号 说明 . 当前目录 … 上一级目录 - 上次切换之前的目录 ~ 当前用户的家目录 / 表示根目录 - 不指定目标地址时,默认切换到家目录
- 凡是以’/'开头的目录都是绝对目录
- 以’.‘或’…'开头的目录都是相对目录
-
pwd:查看当前工作目录
-
alias:给命令起别名,如:ll、la、l
-
unalias:取消命令别名
查看文件
-
相关命令
命令 说明 cat 从上到下,显示文件全部内容 tac 从下到上,显示文件全部内容 head 查看开头指定行数的内容,默认10行,如:head -20 filename tail 查看末尾指定行数的内容,默认10行,如:tail -20 filename nl 功能同cat,但是会多显示行号 wc 统计内容:行数 | 单词数 | 字符数 | 文件名 more 一点一点查看内容 less 一点一点查看内容 -
more/less使用说明
- 显示一屏就停止
- q退出查看
- enter下翻一行
- 空格下翻一屏
- more查看结束会自动退出,less不会自动退出
- less可以使用上下按钮上下翻看一行,more不可以
- 以后经常结合管道使用,如:
ls /etc | more
文件及目录
-
相关命令
命令 说明 touch 新建文件,可以一次性创建多个 rm 删除文件或目录,删除目录时需要添加’-r’选项 cp 拷贝文件或目录,拷贝目录时需要添加’-r’选项 mv 移动文件或文件 mkdir 新建目录,可以一次性创建多个 rmdir 删除目录,但是只能删除空目录 -
使用说明:
- -r:删除拷贝目录时需要添加,表示递归操作
- -f:表示强制操作,没有提示信息
- *:表示模糊匹配,如:
rm *.txt
,表示删除所有的txt文件 - -p:创建目录时若需要创建中间目录,需要添加此选项
用户及用户组
-
相关命令
命令 说明 whoami 查看当前登录的用户名 useradd 新加用户,-d指定家目录,-m创建家目录,-s指定shell解析器 userdel 删除用户,-r可以删除用户相关的目录(家目录、邮件目录) passwd 设置指定用户密码,不指定用户时设置当前用户的密码 su - 切换用户,一定要加上’-’,加上它不但能够切换用户,而且还可以切换环境,不指定切换的用户时,默认切换到root(需要提前设置一下密码) sudo 以指定用户(root)身份执行命令 visudo 专门用来编辑/etc/sudoers文件的命令,需要添加相关配置才可以使用sudo执行命令,如:test ALL=(ALL:ALL) ALL。最好先修改系统默认文本编辑器(sudo update-alternatives --config editor) groupadd 新建用户组 groupdel 删除用户组 gpasswd 向指定用户组添加/删除指定用户,如:gpasswd -a/-d user group groups 查看指定用户的组信息 chsh 修改指定用户的shell解析器,如:sudo chsh test -s /usr/sbin/nologin(禁止登录) chgrp 修改指定文件所属组,如:sudo chgrp test 33.py chown 修改文件所有者[及所属组],如:sudo chown jerry[:jerry] 33.py, -R表示递归修改 -
涉及文件
- /etc/passwd:系统中的用户信息
- /etc/group:系统中的用户组信息
- /etc/shadow:系统用户的密码信息
-
涉及名词:
- uid:用户唯一身份标识
- gid:用户组唯一身份标识
文件权限
-
说明:在linux下,所有的文件都涉及权限,分为三组:所有者、所属组、其他用户
-
权限:所有权限可以分为:可读®、可写(w)、可执行(x),-表示没有此权限
-
原理:ls -l的结果,三个一组,刚好分为三组,对应:所有者、所属组、其他用户
-
修改权限:chmod,格式:
chmod [身份] [操作] [权限] 文件
选项 说明 身份 u 所有者(user) g 所属组(group) o 其他人(other) 操作 + 添加 - 删除 = 设置 权限 r 读 w 写 x 执行 - 示例:
sudo chmod o+x 33.py
,给33.py文件的其他用户添加可执行权限
- 示例:
-
本质:使用一组(3位)8进制的数来表示权限, 如:0755,展开如下
转换为二进制:0755 => 111 101 101 对应三个身份:所有者 所属组 其他人 每一组的权限:都包括读、写、执行,1表示拥有,0表示没有 示例解析:所有者拥有可读可写可执行权限,所属组可读可执行,其他人可读可执行
-
简化:
sudo chmod 0755 33.py
,递归操作需要添加’-R’选项
链接文件
-
命令: ln
-
作用:创建一个文件或目录的链接
-
格式:
ln [-s] 原文件 新文件
-
查看:ls -l结果集中的第一列的第一部分就是文件类型,l就是链接
-
硬链接与软链接
硬链接:创建时不加-s选项创建的就是硬链接,相当于给文件多起了个名字,极少用到 1.不能给目录创建 2.不能跨文件系统 软链接:创建时添加-s选项创建的就是软链接,相当于windows中的快捷方式,比较常用 1.可以给目录创建 2.可以跨文件系统
文件操作及系统服务
文件搜索
-
find:
-
作用:任意文件的搜索,功能非常强大
-
格式:
find [目录] 条件
-
选项:
-name:指定名字,如:sudo find / -name passwd -maxdepth:指定最大层级深度,如:sudo find / -maxdepth 3 -name passwd -type:指定类型(d/l/s/p/c/b) -size:指定大小,单位:k/M/G,+表示大于,-表示小于,如:find . -size +5k -mtime/-atime/-ctime:指定修改/访问/创建时间,单位是天,+表示几天前,-表示几天内 -mmin/-amin/-cmin:功能同上,单位是分钟 -user:指定用户 -group:指定组
-
-
whereis:
-
作用:显示命令的详细信息, 如:
whereis ls
,结果如下:ls: /bin/ls /usr/share/man/man1/ls.1.gz 命令 位置 标准帮助文档
-
-
grep:
-
作用:正则表达式搜索(文件内容)
-
选项:
-i:忽略大小写 -n:显示行号
-
示例:
grep -n /bin/bash /etc/passwd 在/etc/passwd中查找包含/bin/bash的行,并显示行号 grep -i abc 11.py 在11.py文件中忽略大小写的查找包含abc的行 ls /bin | grep '^m' 查找/bin下以m开头的命令
-
压缩解压
-
zip/unzip,文件后缀zip
压缩:zip 123.zip *.txt 解压:unzip 123.zip
-
gzip/gunzip,文件后缀gz
压缩:gzip 1.txt # 会生成1.txt.gz,源文件删除 解压:gunzip 1.txt.gz 解压:gzip -d 1.txt.gz # 功能同上
-
bzip2/zunzip2,文件后缀bz2
压缩:bzip2 3.txt # 会生成3.txt.bz2 解压:bunzip2 3.txt.bz2 # -k选项可以保留原压缩包文件 解压:bzip2 3.txt.bz2 # 功能同上
-
tar:打包解包命令,文件后缀tar
选项: -c:创建新文件 -x:解包 -t:查看包(不解包) 说明:以上三个选项不能同时使用 -f:指定操作文件 -v:显示相关信息 -z:调用gzip/gunzip命令进行压缩解压 -j:调用bzip2/bunzip2命令进行压缩解压 -C:执行解压位置 --exclude:排除指定文件 示例: tar -cvf 12.tar 1.py 2.py # 将1.txt、2.txt打包成12.tar tar -tf 12.tar # 查看包12.tar中的内容 tar -xvf 12.tar # 将12.tar解包 tar -zcvf 12.tar.gz 12.tar # 将12.tar文件使用gzip压缩成12.tar.gz tar -jcvf 12.tar.bz2 12.tar # 将12.tar文件使用bzip2压缩成12.tar.bz2 tar -zcvf 123.tar.gz *.txt --exclude 3.txt # 打包并压缩除3.txt以外的所有txt文件 tar -zxvf 12.tar.gz # 可以不指定解压命令,会自动识别,z/j选项可以省略 tar -jxvf 12.tar.bz2 提示: .tar.gz可以简写为.tgz .tar.bz2可以简写为.tbz2 或 .tbz
网络服务
- ping:检查网络连通性,’-c’可以指定发送包的次数
- ifconfig:查看或配置网卡,windows下ipconfig
- ifup:启动网卡
- ifdown:关闭网卡
- 网络服务:
sudo service networking start|stop|restart
服务监测
-
netstat
- 说明:查看网络端口占用情况
- 示例:
netstat -tunpl
-
free
- 说明:查看内存使用情况
- 使用:
free -h
,-h可以人性化的显示大小
-
w
- 说明:查看系统正在做的事情,就是what的意思
-
top
- 说明:是w的详细信息,3s会自动刷新一次,q退出查看
- 结果:
第一行:与W相同 第二行:任务信息 第三行:CPU信息 第四行:内存信息 第五行:交换分区 其他:系统进程信息
进程管理
-
ps:
- 作用:查看进程信息
- 使用:
ps -ef ps aux
- 说明:查看进程是经常结合grep进行过滤
-
kill
- 作用:杀死进行
- 示例:kill -9 PID
- 说明:强制杀死进程
远程连接(ssh:22)
- 说明:远程连接服务器,可以完全操控,图形界面的ubuntu默认是没有提供ssh服务
- 安装:
sudo apt-get install openssh-server
- 控制:
sudo service sshd start|stop|restart
- 连接:putty、xshell等工具,类unix平台可以直接使用
ssh user@host
- 配置:
/etc/ssh/sshd_config
,修改配置后需要重启服务才能生效。
软件安装
-
(方式一)apt-get安装:无需考虑复杂的软件依赖
-
install:安装
-
remove:卸载
-
update:更新软件包的列表信息
-
upgrade:进行一次更新
-
更换软件源:更换为阿里的软件源
- 备份文件:
sudo mv /etc/apt/source.list /etc/apt/source.list.bak
- 新建文件:
sudo vim /etc/apt/source.list
- 添加内容:之后保存退出
deb http://mirrors.aliyun.com/ubuntu/ xenial main deb-src http://mirrors.aliyun.com/ubuntu/ xenial main deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
- 更新软件包列表信息:
sudo apt-get update
- 备份文件:
-
-
(方式二)dpkg安装:文件后缀.deb,可能需要依赖其他的软件包
- -i:安装
- -r:卸载
- -l:查看软件包信息
- -L:查看软件安装目录
- 示例:安装wps
安装WPS: sudo dpkg -i wps-office_10.1.0.5672~a21_amd64.deb 安装缺失字体库: unzip wps_symbol_fonts.zip sudo mv *.ttf *.TTF /usr/share/fonts/
-
(方式三)源码安装:需要对源代码文件进行编译,然后安装
-
基本步骤:
- 配置:configure
- 编译:make
- 安装:make install
-
命令执行:
- cmd1; cmd2 # 执行完cmd1之后执行cmd2,无论前面的命令执行成功与否
- cmd1 || cmd2 # 先执行cmd1,cmd1执行失败才会执行cmd2
- cmd1 && cmd2 # 先执行cmd1,cmd1执行成功后才会执行cmd2
- 示例:
make && make install
-
示例演示:安装nginx
-
解压压缩包:
tar -zxvf nginx-1.13.7.tar.gz
-
进入解压后的目录:
cd nginx-1.13.7
-
编译之前的配置:
./configure --prefix=/usr/local/nginx
- 查看配置帮助:
./configure --help
- 配置出错,如:缺少相关的依赖,需要手动安装:
sudo apt-get install libpcre3-dev zlib1g-dev gcc
- 查看配置帮助:
-
编译和安装:
make && make install
- 若安装时没有权限,请使用sudo或切换到root用户
-
测试:nginx简介
- sbin/nginx:可执行程序,运行:
sudo ./nginx
- 在浏览器中输入:127.0.0.1,看到welcom to nginx表示启动成功
- 网站默认根目录:html
- sbin/nginx:可执行程序,运行:
-
-
系统服务
防火墙(ufw)
- 说明:简单版本的防火墙,底层依赖于iptables。
- 安装:
sudo apt-get install ufw
- 查看状态:
sudo ufw status
- 开启/关闭:
sudo ufw enable|disable
- 默认允许/禁止:
sudo ufw default allow|deny
- 允许/禁止:
sudo ufw allow|deny 服务|port
,如:sudo ufw deny ssh
- 移除规则:
sudo ufw delete deny ssh
管道及xargs
- |:管道,将前面命令的输出作为后面命令的输入参数,如:
ls /bin | grep '^m'
- xargs:有些命令无法接收管道参数,可以通过xargs解决,如:
find -name 1.sh | xargs rm -rf
重定向
-
三个数据流:标准输入(stdin)、标准输出(stdout)、标准错误(stderr)
-
在linux,启动任意的进程,系统会自动创建上面三个数据流,其实就是三个文件
-
三个文件的描述符分别是:0、1、2,都指向了终端
-
重定向就是改变原来的表现位置。
-
示例演示:
输出重定向: ls > 1.txt # 将ls的输出结果保存到1.txt文件中,会新建文件1.txt,若文件存在则会清空 ls >> 1.txt # 将ls的输出结果追加到1.txt文件中,文件不存在也会创建 错误重定向: ls /xxx 2> 2.txt # 将错误信息保存到2.txt 同时重定向输出和错误: ls /xxx /home &> 3.txt # 同时将错误和输出保存到3.txt文件中