Linux-01
总体规划
1.常见指令以及权限理解
2.Linux环境基础开发工具使用
3.Linux进程概念 2.5 (14)
4.Linux进程控制 1.5
5.基础IO 2
6.进程间通信 1.5
7.进程信号 1.5
8.Linux多线程 5
9.网络基础1 1 (10)
10.网络编程套接字 2
11.网络基础2 4.5
12.网络基础3
13.高级IO 2.5
14.扩展
本节目标
1.初始Linux操作系统
2.初始shell命令,了解软件背景知识
3.使用常用Linux命令
4.了解Linux权限概念与思想,能深度理解“权限”
5.初步了解Linux目录结构含义
1.Linux背景
1.1发展史
要说Linux,还得从UNIX说起。
UNIX发展的历史
1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。Multics开发失败
汤姆森放暑假的一段时间,想玩飞机大战,当时电脑是汇编语言,开发了一个UNIX操作系统,小而精巧,可以自己添加或删除模块。
丹尼斯里奇开发了c语言,c语言有良好的跨平台性。用c语言把UNIX重写了一遍,发到学校里用于教学。
Linux发展历史
美苏冷战期间UNIX飞速发展,公司开始商业化收钱。学校里有个老教授,写了一个Minix,并授权说只能用于教学,不能用于商业。他的研究生Linus Benedict Torvalds完成了Linux操作系统。
整个Linux社区完善了Linux。目前已有5000万行代码,Linus自己贡献占比很少
GUN发明了很多开源软件,目的是打造开源的操作系统,x吸纳了linus作为成员,使Linux成为开源操作系统
Linux操作系统内核
操作系统:管理计算机软硬件资源的一个软件
发行版:系统内核+外部应用
RedHat(收费) Debian
CentOs Ubuntu
1.2软件
Windows下的软件:
Oracle VMVirtualBox软件:
安装下载和创建虚拟机方法:https://blog.csdn.net/s_lisheng/article/details/77850179
镜像文件CentOs-7下载地址
在当前的操作系统下再虚拟出一个硬件环境,在VirtualBox中可以安装
凡是我们能通过命令来操作虚拟机的,都成称之为终端
1.3连接Xshell
Linux下的操作都是在命令行终端下进行的
无法使用鼠标,只能使用命令行完成功能
命令名称 [操作选项] [操作对象]
- 先连接Xshell,Xshell软件下载完成以后,打开VirtualBox软件,创建新的虚拟机。
- 创建完成后,在命令行输入
ifconfig
查看ip地址
- 打开Xshell,新建会话窗口,名称随便起,最好与ip地址相同方便查看,在主机输入框输入已经打开的虚拟机IP地址,后根据提示输入用户名和密码即可
- 完成后就可以在Xshell中敲命令了
Xshell下
复制Ctrl+Ins
粘贴Shift+Ins
2.基础指令
2.1目录相关命令
目录就是文件夹
ls命令(文件/目录)
ls //浏览目录的内容,默认浏览当前目录的内容
- 第一次打开终端时,默认会处于一个目录下,这个目录称之为家目录,(每个用户都有一个)~为家目录的表示
- 蓝色为目录
- 红色为压缩包
- 绿色为可执行程序
- 黑色为普通文件
exit //退出当前用户
退出了当前用户,Xshell出现[D:~]说明掉了,没有登录连接任何虚拟机
通过命令
ssh [IP地址] //可以快速重连
ls -a //显示当前目录下所有文件,包括隐藏文件
ls -a WorkSpace //显示当前目录下的WorkSpace目录下的所有文件
多了很多以.开头的文件都是隐藏文件
ls -l 详解
ls -l //查看当前目录下文件的详细信息
第一列为文件权限d文件类型(目录)-(普通文件)
第三列是所有者用户,第四列为所属组名称
第五列的“6”为文件大小是6个字节,并不是指这个文件夹下的所有文件有多大,而是指这个文件夹这个文件有多大
1.文件类型
“-”表示普通文件;
“d”表示目录;
“l”表示链接文件;
“p”表示管理文件;
“b”表示块设备文件;
“c”表示字符设备文件;
“s”表示套接字文件;
2. 文件权限
r(Read,读取权限):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入权限):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行权限):对文件而言,具有执行文件的权限;对目录来说,该用户具有进入目录的权限。
第一段表示文件创建者/所有者对该文件所具有的权限,第二段表示创建者/所有者所在的组的其他用户所具有的权限,第三段表示其他组的其他用户所具有的权限。
-rw-r–r-- 1 root root 762 07-29 18:19 exit //表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)
3.目录/链接个数
该字段表示此文件是属于哪个用户。linux类系统都是多用户系统,每个文件都有它的拥有者。只有文件的拥有者才具有改动文件属性的权利。当然, root用户具有改动任何文件属性的权利。对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利。
对于目录文件,表示它的第一级子目录的个数。注意此处看到的值要减2才等于该目录下的子目录的实际个数。
4. 所有者及组
该文件的所有者/创建者(owner)及其所在的组(group)。一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。
5. 文件大小
如果是文件,则表示该文件的大小,单位为字节。
如果是目录,则表示该目录符所占的大小,并不表示该目录下所有文件的大小。请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小。
6. 修改日期
文件最后修改的日期时间
7. 文件名称,字体颜色
如果是一个符号链接,那么会有一个 “->" 箭头符号,后面根一个它指向的文件名;
灰白色表示普通文件;
亮绿色表示可执行文件;
亮红色表示压缩文件;
灰蓝色表示目录;
亮蓝色表示链接文件;
亮黄色表示设备文件;
pwd命令(目录/文件)
pwd //显示当前我们所在文件夹的路径(绝对路径),最后一个目录为我当前所在目录
第一次进入目录默认为当前用户的家目录用符号~表示
目录结构:linux下目录结构唯一(目录结构与磁盘分区的多少没有关系)的树形结构
绝对路径:唯一路径,起始位置从根目录表达的路径
相对路径:起始路径从当前目录表达的路径
../qixuexue//省略./
./../qixuexue
当前路径的上一层路径下的qixuexue这个目录
".
" (一个点) 表示当前所在路径
"..
"(两个点)表示当前所在路径的上一层路径
当前路径的表示./是可以忽略的
swap分区:怎么才能让在内存(一般为8G)不够用的情况下,继续执行。把僵尸数据挪到硬盘上。当内存不够用时,作为交换内存使用。
内存吞吐量30GB左右,硬盘只有几百MB。
先有名字,再有分区
mkdir命令(目录)
mkdir test //在当前路径下创建test目录
mkdir -p test/abc/bcd //在当前路径下创建目录test包含目录abc,abc下包含目录bcd,自外而内
//递归多层级创建目录,哪一层不存在则创建哪一层
rmdir 命令(目录)
rmdir tmp //删除目录
rmdir test/bac/bcd //递归多层级删除目录,自内而外 ,哪一层为空则删除哪一层
rm命令(文件)
rm //默认删除普通文件
rm -r //递归删除目录下所有文件,包括目录自身
rm -ri //递归删除目录下所有文件并弹出提示信息
rm -f //忽略提示信息,直接操作
rm /* //删除根目录下的所有文件,Ctrl+C中断当前操作,
//如果加了-f就没有提示信息了
cp命令(文件/-r目录)
cp //将一个文件拷贝
cp -r //递归拷贝目录下所有文件,包括目录自身,而不是只拷贝目录
注意,这里rm是删除文件操作而非删除目录操作,但是rm -r为递归删除该目录下所有文件包括该目录,所以删掉了目录tmp
mv命令(文件/目录)
mv //剪切文件或目录,将一个文件或目录移动到指定路径下
mv -i //增加提示信息
当前路径下和test内都有nihao文件,将当前路径下的挪去test目录下
移动的目录肯定包含之前目录里有的文件
cd命令(改变当前路径)
//改变当前所在路径
cd .. //返回上级目录
cd - //返回最近访问目录
2.2文件相关命令
touch命令(创建文件,主更新时间属性)
touch qixue.txt //若文件不存在则创建新的空文件,若存在则刷新文件的时间属性
touch -d "2018-2-18 12:30:00" qixue.txt //使用指定时间刷新文件的时间属性
cat命令(打印到终端显示)
cat passwd //打印文件的内容到终端显示
cat -n passwd //增加行号
more 命令(按页查看文件)
more passwd //按页查看
回车向下按行滚动
空格向下翻页
按q退出
缺陷:向上翻页有点问题,Ctrl+B和Ctrl+F
less命令(按页查看文件,带匹配)
less passwd //对文件内容进行分页显示
Ctrl+F/B上下翻页
上下箭头或JK都可上下按行滚动
按Q退出
/string
在文件内容中向下匹配string字符串
?string
在文件内容中向上匹配string字符串
按n下一个匹配位置
未显示完全时下方显示passwd
已经查看到底部显示END
输入?root
head命令(显示文件内容)
head passwd //默认显示文件的前十行
head -n num //指定显示文件的前num行内容
head -n 1 passwd // 显示文件第一行
head -n 3 passwd //显示passwd文件的前三行
tail命令(显示文件内容)
tail passwd //默认显示文件的末尾十行内容
tail -n num passwd //显示passwd文件末尾num行内容
tail -f //持续等待刷新文件末尾新内容 Ctrl+C中断操作即退出,动态持续等待刷新文件内容末尾新内容
复制会话在~/WorkSpace/5-9/01-command目录下执行echo “tianqizhenhao” >> passwd
后,此端末尾刷新出tianqizhenhao
tail -n 3 passwd //显示文件末尾3行内容
echo命令(打印到终端)
echo “要输出的数据”//打印一串数据到终端显示
>> //为输出重定向符号,将原本要写入标准输出的数据追加到新文件末尾
> //为输出重定向符号,清空文件内容,将原本要写入标准输出的数据写入文件
先创建a,txt后将ls的内容放进去
2.3压缩和解压命令
思考:文件是怎么从大变小的,例如一个字符串用一个字符表示,相同的字符串都用对应字符表示
zip/unzip命令
zip zipname file1 file2//zip格式的压缩解压缩命令,把后面的文件全部打包到一起生产一个新压缩包
unzip zipname.zip //解压后原压缩包仍在
- zip格式压缩后,原文件仍在,可一次压缩多个,自动添加后缀.zip
- zip解压后,原压缩文件仍在,需选择覆盖原文件
gzip /gunzip命令
gzip hello.txt //直接压缩原文件,后缀加gz,可一次压缩多个
gunzip hello.txt.gz //解压
因为压缩时还需添加一些信息,所以小文件进行gzip压缩,文件反而变大
zip hell.zip hello.txt //生成一个新的压缩包,可自定义命名,命名时带不带.zip都可以会自动添加
值得注意的是,linux里不以后缀名区分文件类型,只是方便用户识别
bzip2 /bunzip2命令
bzip2 hello.txt //压缩比例较其他高,也是在原文件上压缩
bunzip2 hello.txt.bz2 //解压缩
tar 命令
tar //可以将大量的目录/文件进行打包生成一个文件,也可以在打包/解包的同时进行压缩和解压缩
-c //打包 -v 打包/解包的同时显示详细信息
-x //解包 -f必备选项-打包/解包指定压缩包名称,通常是最后一个选项,因为其后紧跟压缩包名称,
//意思为将打包后的数据写入到指定文件中
-z //打包/解包的同时进行gzip格式的压缩/解压缩 -j 打包/解包的同时进行bzip2格式的压缩/解压缩
tar -czvf hello.tar.gz file1 file2 ....
tar -xzvf hello.tar.gz
tar -cjvf hell0.tar.bz2 file1 fiel2....
tar -xjvf hello.tar.bz2
tar -xvf //会自动检测是哪种格式
2.4匹配查找文件
find命令
在指定路径下查找文件
!
grep 命令
grep "qixuexue" file 在文件内容中匹配包含有指定字符串的行
-i //忽略大小写进行匹配
-n //显示行号
-v //反向匹配,匹配哪些不包含指定字符串的行 grep -iv "string" file
-R //对指定的路径下的所有文件进行内容匹配 grep -R "string" ./
管道符|
取第三行
产生了一个中间文件a.txt 有点麻烦
| //管道符起到一个连接命令的作用,将符号前的输出作为符号后命令的输入,避免产生中间文件
2.5其他命令
ifconfig命令
ifconfig
ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。
用ifconfig命令配置的网卡信息,网卡重启后配置就清除。要想将ifconfig配置的信息永久保存,需要修改网卡的配置文件。
参数:
add<地址>:设置网络设备IPv6的ip地址;
del<地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
io_addr:设置网络设备的I/O地址;
irq:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;
网络设备:指定网络设备的名称。
查看 inet 后为主机ip地址
man命令(人类手册)
手册
man ls //查看ls怎么使用
打开一个解释文件,按键q退出
su 命令
su root //切换到管理员,需输入密码
su qixuexue //切换到qixuexue用户,管理员切换普通用户,无需密码
echo
打印一串数据到终端显示
> >>
>>
输出重定向符号,将原本要写入标准输出的数据追加到新文件的末尾
>
输出重定向符号,清空文件内容
2.6 根目录下文件的含义
/bin 二进制可执行命令。该目录下存放着普通用户的命令
/dev 系统的设备文件,即设备的驱动程序
/home 用户主目录的基点
/lost-found 这个目录平时是空的,当系统非正常关机而留下的“无家可归”的文件便会储存在这里
/misc 储存着一些特殊的字符的定义
/net 存放着和网络相关的一些文件
/proc 存放着用户与内核的交互信息
/sbin 系统的管理命令,这里存放的是系统管理员使用的程序
/srv 系统启动服务时可以访问的数据库目录
/tmp 临时文件,重启后自动清空
/var 某些大文件的溢出区,比如各种服务的日志文件
/boot 启动Linux的核心文件
/etc 系统所有的配置文件都在这个目录中
/lib 存放着和系统运行相关的库文件
/media 存放着可移除的设备,比如软盘,光盘
/mnt 挂载目录,是系统管理员临时安装文件的系统安装点
/opt (option : 自由选择)主要给源码安装软件时选择的安装目录位置
/root 超级用户的目录
/selinux 主要用来加固操作系统,提高系统的安全性
/sys 管理设备文件
/usr 最大的目录,存放着应用程序和文件
20
常用操作
Ctrl + C: 中断当前操作
Tab: 命令操作中的文件名自动补全
shutdown -h now
立即关机
shutdown -t
3 3秒后关机
reboot
重启
shell命令及其运行原理
操作系统:系统内核+外部应用
系统内核是不允许用户直接操作的,因此操作系统向外提供了一系列的函数接口–系统调用接口
通过这些函数,可以让用户告诉操作系统自己想干什么
因为系统调用接口不好用,因此大佬们将常见的功能直接进行接口封装,封装成一个个的程序,
用户想要完成什么功能,直接运行程序就可以了
把这些一个个的程序称之为shell命令
shell(命令行解释器)作为沟通的桥梁,连接着内核和用户,
解析用户的输入,执行相关的shell指令完成功能
Windows的ui(图形界面)就是一个shell(bash ,tcsh 等等)
ls -l /bin/
查看文件
ls -l /bin/ls
查看文件ls
3 权限
3.1 权限的表示
用户对操作系统所能进行的操作进行权利限制:管理员-root/普通用户
文件的权限:
对文件操作的用户分类:
u :文件的所有者
g:文件所属组
o:其他用户
a:所有用户
用户对文件进行的操作分类:
r | w | x | |
---|---|---|---|
针对文件 | 可读 | 可写 | 可执行 |
针对目录 | 可浏览 | 是否可在目录下创建/删除文件 | 是否可以进入目录 |
提问:一个文件所有者可读可写可执行,所属组可读可写,其他用户可执行怎么表示
答:rwxrw---x
用111111101
来存储用三位8进制表示775
提问:763 其他用户的权限可写可执行
3.2 设置权限
touch一个文件
发现权限为664即110 110 100 rw-rw-r--
因为是普通文件默认权限为0666-权限掩码
666 &(~002)= 110 110 110 &(111 111 101) =110 110 100 =664
umask命令
umask查看/设置文件默认权限的掩码
umask
查看创建文件默认的权限为rwxrwxr-x
普通touch一个文件,这个文件并非是可执行程序,不能具有可执行权限,所以把x去掉后为664
0002为文件默认创建权限的掩码,掩码决定了我们创建出的文件的权限。在我们的shell终端里面默认创建一个文件的权限为777。理解为777-002 =775==(仅在777的情况适用)==
- 专业的计算方法777&(~umask) =775。(umask = 002)
如果默认权限为666 666-032 = 634 是错误的权限,正确计算方法为666&(~032)=110 110 110 &(111 100 101) = 110 100 100 =644 是正确的权限。
问 umask : 032 创建一个文件的权限是?
777 - 032 = 745
777&(~032)= 777 &(745)=745 = rwxr–r-x
- umask设置掩码为0111的情况(首位为特殊权限位,一般默认设置为0)
777&(~111)= 111 111 111 & 110 110 110 = 666 即rw-rw-rw- - umask设置掩码为0222的情况
777&(~222) = 111 111 111 &101 101 101 = 555 即r-xr-xr-x但是不同文件并不是可执行文件即为444 r–r--r–
chmod :修改一个文件的权限
chmod 777 file1 file2 // 将file1 file2的权限改为777
chmod g-w file //将file中文件所属组的w(读权限)去掉
chmod [ugoa] +/- [rwx] file1 //改变不同用户对file1的权限
useradd 创建用户(root下)
如图其他组用户zhy对passwd该文件没有写权限
chown改变文件所有者chgrp改变文件所属组
3.3 沾滞位:常用于设置目录权限,设置了沾滞位权限的目录,其他用户在目录下可以创建文件,但是只能删除自己的文件,不能删除别人的
chmod +t 目录名/
若使用 chmod o+w WorkSpace/ //设置为目录WorkSpace为其他用户可读写,其他用户可在WorkSpace目录下创建文件,也可以删除文件,不合理。
- 目录WorkSpace 所有者和所属组都为qixue。
- 在用户qixue下操作,
chmod +t WorkSpace/
将目录WorkSpace的权限改为rwxrwxrwt
- 切换到其他用户zhy时,可以在该目录下创建文件和删除自己创建的文件,但不可删除非自己创建的文件。
- 目录所有者qixue可以删除目录WorkSpace的所有文件,包括zhy创建的文件
4 补充:虚拟机连接xshell可能出现的问题及解决方法
4.1 ip地址不是192.168开头例如为10.1等等
1.查看虚拟机的ip地址,输入ifconfig,如图192.168.56.102为主机ip地址,若ip地址不是198开头。可能是虚拟机没有联网。参考虚拟机连网
2.打开xshell软件,如图为xshell未连接虚拟机的断开状态
3.选择左上角“文件”,“新建”
4.新建完成后,双击建立的会话名称,输入在虚拟机上创建好的用户名及密码
5.如图连接成功
6.下次直接连接时,可一直输入指令ssh 192.168.56.102
4.2 virtualbox虚拟机安装centos的时候安装完成了,但是重启之后却要重新安装
解决方法:把虚拟机中的光驱中的centos光盘卸掉。
4.3 xshell安装失败重新安装(要继续使用此程序,您必须应用最新的更新或使用新版本)
4.3.1.卸载重新安装(可能出现评估期已过)
打开网址
https://xshell.en.softonic.com/download
2.开始下载
3.下一步
选择安装地址,最好不要在C盘
装完发现评估期过了
4.3.2 下载学生版
1.打开学生版下载界面,填邮箱
https://www.netsarang.com/zh/free-for-home-school/
2.在邮箱里点击下载链接