Linux
2019-06-06 14:49:03 0 举报
AI智能生成
linux入门
作者其他创作
大纲/内容
Linux基础知识
许可证
GNU GPL(GNU General Public License,GNU通用公共许可证)
只要软件中包含了遵循GPL协议的产品或代码,该软件就必须也遵循GPL许可协议且开源、免费,因此这个协议并不适合商用软件。遵循该协议的开源软件数量极其庞大,包括Linux系统在内的大多数的开源软件都是基于这个协议的。GPL开源许可协议最大的4个特点如下所示:
复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
传播自由:允许软件以各种形式进行传播。
收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
传播自由:允许软件以各种形式进行传播。
收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议
用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件。
1:如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。
2:如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议。
3:不允许用原始软件的名字、作者名字或机构名称进行市场推广。
1:如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。
2:如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议。
3:不允许用原始软件的名字、作者名字或机构名称进行市场推广。
Apache许可证版本(Apache License Version)许可协议
在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的4个条件。
1:该软件及其衍生品必须继续使用Apache许可协议。
2:如果修改了程序源代码,需要在文档中进行声明。
3:若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
4:如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议。
1:该软件及其衍生品必须继续使用Apache许可协议。
2:如果修改了程序源代码,需要在文档中进行声明。
3:若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
4:如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议。
MPL(Mozilla Public License,Mozilla公共许可)许可协议
相较于GPL许可协议,MPL更加注重对开发者的源代码需求和收益之间的平衡。
MIT(Massachusetts Institute of Technology)许可协议
目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。
Linux发展历程
早在20世纪70年代,UNIX系统是开源而且免费的。但是在1979年时,AT&T公司宣布了对UNIX系统的商业化计划,随之开源软件业转变成了版权式软件产业,源代码被当作商业机密,成为专利产品,人们再也不能自由地享受科技成果。
于是在1984年,Richard Stallman面对于如此封闭的软件创作环境,发起了GNU源代码开放计划并制定了著名的GPL许可协议。1987年时,GNU计划获得了一项重大突破—gcc编译器发布,这使得程序员可以基于该编译器编写出属于自己的开源软件。随之,在1991年10月,芬兰赫尔辛基大学的在校生Linus Torvalds编写了一款名为Linux的操作系统。该系统因其较高的代码质量且基于GNU GPL许可协议的开放源代码特性,迅速得到了GNU计划和一大批黑客程序员的支持。随后Linux系统便进入了如火如荼的发展阶段。
1994年1月,Bob Young在Linux系统内核的基础之上,集成了众多的源代码和程序软件,发布了红帽系统并开始出售技术服务,这进一步推动了Linux系统的普及。1998年以后,随着GNU源代码开放计划和Linux系统的继续火热,以IBM和Intel为首的多家IT企业巨头开始大力推动开放源代码软件的发展。到了2017年年底,Linux内核已经发展到了4.13版本,并且Linux系统版本也有数百个之多,但它们依然都使用Linus Torvalds开发、维护的Linux系统内核。RedHat公司也成为了开源行业及Linux系统的带头公司。
常见的Linux系统版本
红帽企业系统(RedHatEnterpriseLinux,RHEL.)
红帽公司是全球最大的开源技术厂商,RHEL是全世界内使用最广泛的Linux系统。
RHEL系统具有极强的性能与稳定性,并且在全球范围内拥有完善的技术支持。
RHEL系统也是本书、红帽认证以及众多生产环境中使用的系统。
RHEL系统具有极强的性能与稳定性,并且在全球范围内拥有完善的技术支持。
RHEL系统也是本书、红帽认证以及众多生产环境中使用的系统。
社区企业操作系统(Community Enterprise Operating System,CentOS)
通过把RHEL系统重新编译并发布给用户免费使用的Linux系统,具有广泛的使用人群。CentOS当前已被红帽公司“收编”。
Fedora由红帽公司发布的桌面版系统套件(目前已经不限于桌面版)
用户可免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到RHEL系统中,因此Fedora也称为RHEL系统的“试验田”。
运维人员如果想时刻保持自己的技术领先,就应该多关注此类Linux系统的发展变化及新特性,不断改变自己的学习方向。
运维人员如果想时刻保持自己的技术领先,就应该多关注此类Linux系统的发展变化及新特性,不断改变自己的学习方向。
openSUSE
源自德国的一款著名的Linux系统,在全球范围内有着不错的声誉及市场占有率。
Gentoo
具有极高的自定制性,操作复杂,因此适合有经验的人员使用。读者可以在学习完本书后尝试一下该系统。
Debian
稳定性、安全性强,提供了免费的基础支持,可以良好地支持各种硬件架构,以及提供近十万种不同的开源软件,在国外拥有很高的认可度和使用率。
Ubuntu
是一款派生自Debian的操作系统,对新款硬件具有极强的兼容能力。
Ubuntu与Fedora都是极其出色的Linux桌面系统,而且Ubuntu也可用于服务器领域。
Ubuntu与Fedora都是极其出色的Linux桌面系统,而且Ubuntu也可用于服务器领域。
红帽认证
高级认证:红帽认证架构师(RHCA)
★在Linux和开源方面的技术和架构领军人物
★从数据中心到终端桌面的Linux系统的设计、计划、部署及全面管理
★从数据中心到终端桌面的Linux系统的设计、计划、部署及全面管理
中级认证:红帽认证工程师(RHCE)
★安装和配置Linux服务器,网络设备,网络安全,实际问题的诊断和解决
熟练配置防火墙规则链与SElinux安全上下文;
配置iSCSI(互联网小型计算机系统接口)服务;
编写Shell脚本来批量创建用户、自动完成系统的维护任务;
配置HTTP/HTTPS网络服务;
配置FTP服务;
配置NFS服务;
配置SMB服务;
配置SMTP服务;
配置SSH服务;
配置NTP服务。
配置iSCSI(互联网小型计算机系统接口)服务;
编写Shell脚本来批量创建用户、自动完成系统的维护任务;
配置HTTP/HTTPS网络服务;
配置FTP服务;
配置NFS服务;
配置SMB服务;
配置SMTP服务;
配置SSH服务;
配置NTP服务。
初级认证:红帽认证系统管理员(RHCSA)
★安装和调试Linux系统,安全性并联结局域和广域网络
管理文件、目录、文档以及命令行环境;
使用分区、LVM逻辑卷管理本地存储;
安装、更新、维护、配置系统与核心服务;
熟练创建、修改、删除用户与用户组,并使用LDAP进行集中目录身份认证;
熟练配置防火墙以及SELinux来保障系统安全。
使用分区、LVM逻辑卷管理本地存储;
安装、更新、维护、配置系统与核心服务;
熟练创建、修改、删除用户与用户组,并使用LDAP进行集中目录身份认证;
熟练配置防火墙以及SELinux来保障系统安全。
Linux目录结构
/bin/
用来贮存用户命令。目录/usr/bin也被用来贮存用户命令
/sbin/
许多系统命令(例如 shutdown)的贮存位置。目录/sbin 中也包括了许多系统命令
/root/
根用户(超级用户)的主目录)
/mut/
该目录中通常包括系统引导后被挂载的文件系统的挂载点。例如,默认的U盘挂载点是/mnt/cdrom
/boot/
包括内核和其他系统启动期间使用的文件
/lost+found/
被 fsck 用来放置零散文件(没有名称的文件)
/lib/
用来存放系统动态连接共享库的
/dev/
贮存设备文件
/etc/
存放了系统管理时用到的各种配置文件和子目录
/var/
用于贮存variable(或不断改变的)文件,例如日志文件和打印机假脱机文件
/usr/
这是Linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下
/proc/
一个虚拟的系统目录,可以在这个目录下获取系统信息。这个信息是在内存中,有系统自己产生的
/initrd/
用来在计算机启动时挂载 initrd.img 映像文件的目录以及载入所需设备模块的目录
/tmp/
用户和程序的临时目录。用来存放不同程序执行时产品的临时文件
/home/
如果建立一个用户“××”,那么在/home目录下就有一个对应/home/××路径,作为用户的主目录
/opt/
可选文件和程序的贮存目录。该目录主要被第三方开发者用来简易的安装和卸载他们的软件包。
Linux的文件类型和文件属性
文件类型
普通文件
目录文件
类似windows下的文件夹
链接文件
类似windows下快捷方式
特殊文件
文件属性
(首字符分为:-、d、b、c)
(首字符分为:-、d、b、c)
-
普通文件
d
目录文件
b
块特殊文件,如硬盘和CDROM设备
c
字符文件设备
l
符号链接
p
管道和流,用于进程通讯
Linux命令
用户系统命令
su
切换到超级用户
su - root(切换环境变量)
useradd
添加用户账号
useradd [用户名]
usermod
设置用户账号属性
usermod [属性值]
userdel
删除对应用户账号
userdel [用户名]
groupadd
添加组账号
groupadd [组账号]
groupmod
设置组账号属性
groupmod [属性值]
groupdel
删除对应组账号
groupdel [组账号]
passwd
设置账号密码
passwd [对应账号]
sudo passwd root【普通用户身份设置超级用户密码)
id
显示用户ID、组ID和用户所属的组列表
id [用户名]
groups
显示用户所属的组
groups [组账号]
who
显示登陆到系统的所有用户
who
系统管理命令
ps
显示当前系统中该用户运行的进程列表
ps [选项]
例:ps -aux
top
动态显示系统中运行的程序(一般为每隔5s)
top
kill
输出特定的信号给指定PID(进程号)的进程
kill [选项] 进程号(PID)
uname
显示系统的信息(可加选项-a)
uname [选项]
setup
系统图形化界面配置
setup
crontab
循环执行例行性命令
crontab [选项]
shutdown
关闭或重新Linux系统
shutdown [选项] [时间]
shutdown -r now (重启系统)
shutdown -h now (关机)
uptime
显示系统已经运行了多长时间
uptime
clear
清除屏幕上的信息
clear
文件、目录操作命令
目录操作命令
echo $HOME
查询当前登录用户的“家目录”所在位置
主目录(家目录)
ls
ls(查看当前目录下文件)
ls -a(查看当前目录下文件[包含隐藏文件])
ls /home/xiaoxiaozhu(查看其它目录下文件)
ls -l(查看当前目录下文件具体属性)
ls -l /home/xiaoxiaozhu/test1(查看指定目录下文件具体属性)
ls -la(查看当前目录下所有文件[包含隐藏文件]的具体属性)
pwd
显示当前登录用户所在的目录位置
工作目录(当前目录)
cd
切换目录
绝对路径
cd /root
cd /home/ubuntu16
相对路径
cd ../../root(..=上个目录)
mkdir
创建一个空的目录文件/创建多个目录文件
mkdir test1(创建空的目录文件)
mkdir test1 test2 test3(创建多个空的目录文件)
mkdir -p test1/test11/test111/test1111(同时创建多层目录文件)
文件操作命令
cp
复制一个普通文件
cp test1 test11(将当前目录下的文件复制并重命名)
cp test1 /home/ubuntu16/tese11(将当前目录下的文件复制到其他目录并重命名)
cp /root/test1 ./test11(将其他目录下的文件复制到当前目录下并重命名)
cp /root/test1 /home/ubuntu16/test11(将其他目录下的文件复制到另外一个目录下并重命名)
复制一个目录文件
cp -r test1 test11(将目录文件test1在当前目录下复制并重命名)
rm
删除一个/多个普通文件(不进入回收站-删除无法还原)
rm test1(删除当前目录下文件)
rm /root/test1(删除其他目录下文件)
rm /root/test1 /hme/ubuntu16/test11(删除多个不同目录下文件)
rmdir
rm -r(删除一个/多个目录文件(可以删除非空的目录文件))
rm -r test*(删除当前目录下带有test前缀的所有文件(包含普通文件和目录文件,且匹配符前面不需要有\))
rm -rf(强制删除一个/多个目录文件(可以删除非空的目录文件))
rmdir(删除一个/多个目录文件(只能删除空的目录文件))
mv
移动/重命名一个普通文件/目录文件
移动文件
mv test1 /root(将当前目录下的文件移动到root目录)
mv /root/test1 ./(将其他目录下的文件移动到当前目录下)
mv /root/test1 /home/ubuntu16/(将其他目录下的文件移动到另外一个目录下)
重命名文件
mv test1 test11(将当前目录下的文件重命名)
mv test1 /root/test11(将当前文件移动到root目录并重命名)
file
(查看文件类型)查看文件属于普通文件还是目录文件
file tesr1
find
搜索一个普通文件
命令示例
find /root -name test(在root目录下搜索名称为test的文件)
匹配符
*
匹配0个或多个字符
find /root -name tese\*(在root的目录下搜索带有test前缀的文件)
find /root -name \*test(在root的目录下搜索带有test后缀的文件)
find /root -name \*es\*(在root的目录下搜索文件名称中间带有es的文件)
?
匹配1个字符
find /root -name test\?(在root目录下搜索名称带test的文件)
touch
创建一个/多个普通文件
touch test1 /home/test2 ../test3
touch test1(当前目录下创建文件)
touch /home/test2(绝对路径下创建文件)
touch ../test3(相对路径下创建文件)
文件权限示意图(示例:r--rw--rwx)(查询文件权限:ls -l /home/xiaoxiaozhu)
文件权限命令
chmod(修改文件权限命令)
符号法
u(文件拥有者)
g(文件拥有者所在组成员)
o(其他用户)
a(所有用户)
+(在原来权限的基础上添加权限)
-(在原来权限的基础上减少权限)
=(设置新的权限)
示例:chmod o+rwx test1
u+x(给其他用户添加“读”、“写”、“执行”权限)
test1(需要添加权限的文件名)
数字法
chmod 文件拥有者数字表示总和加上文件所属组用户数字表示总和加上其他用户数字表示总和 文件名
示例:chmod 527 test1
5(文件拥有者设置“读”、“执行”权限)
2(文件所属组用户设置“写”权限)
7(其他用户设置“读”、“写”、“执行”权限)
test1(文件名)
chown(设置文件的属主和属组)
格式:chown 文件拥有者:文件所在组 文件名
格式:chown 文件拥有者 文件名
格式:chown :文件所在组 文件名
示例:chown root:xiaoxiaozhu test1
root(将test1的文件拥有者改成root用户)
:xiaoxiaozhu(将test1的文件所在组改成xiaoxiaozhu用户)
文本文件查看命令
cat
查看普通文件内容
cat /etc/passwd
more
查看普通文件内容(显示第一页)
more /etc/passwd
回车键翻页、Q键退出预览
head
查看普通文件前几行内容
head -5 /etc/passwd(查看文件前5行内容)
tail
查看普通文件后几行内容
tail -5 /etc/passwd(查看文件后5行内容)
网络相关命令
ifconfig
网络信息查看与修改
ifconfig virbr0 192.168.1.123(修改ip地址)
ping
测试和远程计算机的联网状态
ping 192.168.1.456(用来测试远程计算机链接状态(返回值为空/错误则未链接状态))
ping www.baidu.com(用来测试链接外网状态)
telnet/ssh
远程登录主机
ftp
创建指定名称的目录
挂载外部存储设备
U盘
U盘需要格式成FAT32格式的,这样在Linux系统上可读可写
U盘的识别、挂载与卸载
识别:fdisk -l(查看分区与磁盘)
sda1、sda2、sda5代表的磁盘的不同分区
sda1、sdb1、sdc1代表着U盘的不同分区
挂载:mount -t vfat /dev/sdb1 /mnt(将U盘挂载到/mnt目录下)
卸载:umount /mnt(将/mnt中的U盘卸载掉)
归档命令(解压缩)
tar
-c(归档)
-x(解档)
-v(显示操作的所有文件)
-f(归档普通文件名称)
-z(调用gzip来压缩或解压缩)
压缩包后缀名:xxx.az
-j(调用bzip2来压缩或解压缩)
压缩包后缀名:xxx.bz2
-C=大写(指定归档文件到指定的某个目录)
压缩示例:tar -czvf xxx.gz test1 test2 test3 ceshi*
-czvf(表示命令选项)
xxx.gz(表示压缩后的文件名与后缀)
test1 test2 test3 ceshi*(表示需要归档的文件)
解压缩示例:
tar -zxvf xxx.gz(解压缩包到当前目录下)
tar -zxvf -C /home/xiaoxiaozhu(解压缩包到相应目录下)
Vi/vim编辑器
Vi
三种模式的切换方式
vim(创建空白的编辑器)
vim test.c(创建一个名为test.c的C语言文件)
vim(创建一个空白并且未命名的文件)
vi命令模式
删除
x
删除光标处的单个字符
dd
删除光标所在行
dw
删除当前字符到单词尾(包括空格)的所有字符
de
删除当前字符到单词尾(不包括单词尾部的空格)是所有字符
d$
删除当前字符到行尾的所有字符
d^
删除当前字符到行首的所有字符
J
删除光标所在行 行尾的换行符,相当于合并当前行和下一行的内容
复制/粘贴
yy
复制当前行整行的内容到vi缓冲区
yw
复制当前光标到单词尾字符的内容到vi缓冲区
y$
复制当前光标到行尾的内容到vi缓冲区
y^
复制当前光标到行首的内容到vi缓冲区
p
读取vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)
撤销
u
取消最近一次的操作,并恢复操作结果
U
取消对当前行进行的所有操作
Ctrl+r
对使用u命令撤销的操作进行恢复
vi插入模式
插入字符
i
在当前光标处进入插入状态
a
在当前光标后进行插入状态
A
将光标移动到当前行的行末,并进入插入状态
o
在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O
在当前行的上面插入新行,光标移动到新行的行首,进入插入状态
cw
删除当前光标到所在单词尾部的字符,并进入插入状态
c$
删除当前光标到行尾的字符,并进入插入状态
c^
命令删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态
vi末行模式
保存退出
w
保存文件
w test1.c
另存为新文件(test1.c为文件名)
q
未修改退出
wq
保存并退出
q!
不保存退出
设置行号
:set nu
在编辑器中显示行号
:set nounu
取消编辑器中的行号显示
1G
跳转到文件的首行
G
跳转到文件的末尾行
#G
跳转到文件的第#行
查找
/word
替换
:s/old/new
查找
/word
从上而下在文件中查找字符串“word”
?word
从下而上在文件中查找字符串“word”
n
定位下一个匹配的被查找字符串
N
定位上一个匹配的被查找的字符串
替换
:s/old/new
将当前行中查找到的第一个字符“old”串替换为“new”
:s/old/new/g
将当前行中查找到的所有字符串“old”替换为“new”
:#,#s/old/new/g
在行号“#,#”范围内替换所有的字符串“old”为“new”
:%s/old/new/g
在整个文件范围内替换所有的字符串“old”为“new”
:s/old/new/c
在替换命令末尾加上c命令,将对每个替换动作提示用户进行确认
同时编辑
同时打开多个文件
vim test.c test1.c(同时打开test.c和test1.c文件)
在不同的文件中进行切换编辑
:bn
切换到下个文件
:bp
切换到上个文件
编译器gcc
调试器gdb
0 条评论
下一页