Linux学习方向
Linux运维工程师:服务器的规划、调试优化、日常监控、故障处理、数据备份、日志分析,服务器瘫痪了,要迅速的恢复
Linux嵌入式工程师:熟练掌握Linux下各种驱动程序开发,还有就是在嵌入式系统中进行程序开发
Linux的应用领域
个人桌面领域的应用:此领域是传统Linux最薄弱的环节,传统Linux由于界面简单、操作复杂、应用软件少的缺点,一直被windows所压制,但近些年来随着ubuntu、fefora等优秀桌面环境的兴起,同时各大硬件厂商对齐支持的加大,Linux在个人桌面领域的占有率在逐渐的提高。
服务器领域:Linux在服务器领域的应用是最强的。Linux免费、稳定、高效等特点在这里得到了很好的体现,近些年来Linux服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛。
嵌入式领域:近些年来Linux在嵌入式领域的应用得到了飞速的提高。Linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点,使其近年来在嵌入式领域的应用得到非常大的提高。
Linux怎么读【里妞克斯,利尼克斯,里纳克斯】
Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发特别强悍,现在很多的企业级的项目都部署到Linux/unix服务器运行
目前主要的操作系统有:windows,android,车载系统,linux
Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
深刻理解linux树状文件目录是非常重要的,记住一句经典的话,在Linux世界里,一切皆文件
/bin(重点,/usr/bin,/usr/local/bin)
是Binary的缩写,这个目录存放着最经常使用的命令
/sbin(/usr/bin,/usr/local/sbin)
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
/home(重点)
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/root(重点)
该目录为系统管理员,也称作超级权限者的用户主目录
/lib
系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里都存放了一些文件
/etc(重点)
所有的系统管理所需要的配置文件和子目录
/usr(重点)
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
/boot(重点)
存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
/proc
这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv
service的缩写,该目录存放一些服务启动之后需要提取的数据
/sys
这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp
这个目录是用来存放一些临时文件的
/dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储
/media(重点)
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
/mnt(重点)
系统提供该目录是为了用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了
/opt
这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录上。默认为空。
/usr/local(重点)
这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
/var(重点)
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
/selinux(security-enhanced linux)
SELinux是一种安全子系统,它能控制程序只能访问特定文件
所有的Linux系统都会内建vi文本编辑器。
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
正常模式
以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、贴上】来处理你的文件数据
插入/编辑模式
按下i,I,o,O,a,A,r,R
等任何一个字母之后才会进入编辑模式,一般来说按i
即可
命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的
快速入门案例
使用vim开发一个Helloword.java程序,保存步骤说明和演示
//创建helloworld.java文件
touch helloworld.java
//进入helloworld.java文件,正常模式
vim helloworld.java
//进入编辑模式
i
//编辑代码
public class helloworld {
public static void main(String[] args){
System.out.println("hello,world~");
}
}
//切入命令行模式,保存代码
esc //先退出编辑模式,然后:可以切入命令行模式
:wq //保存代码,并退出命令行模式
一般模式拷贝当前行(yy),拷贝当前行向下的5行(5yy),并粘贴§
一般模式删除当前行(dd),删除当前行向下的5行(5dd)
一般模式下,在文件中查找某个单词,[命令模式下:(/关键字),回车查找,输入(n)就是查找下一个]
一般模式下,使用快捷键到达文档的最首行[gg]和最末行[G]
一般模式下,在一个文件中输入“xxx”,然后又撤销这个动作(u)
一般模式下,并将光标移动到10行shift+g
第一步:输入10
第二步:输入shift+g
第三步:回车
命令行模式下,设置文件的行号,取消文件的行号。[命令行下(: set nu)和(: set nonu)]
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
Linux系统的用户需要至少要属于一个组。
添加用户
useradd 用户名
useradd -d 指定目录 新的用户名
,给新创建的用户指定家目录指定/修改密码
passwd 用户名 //只有根目录才能指定用户密码
删除密码
userdel 用户名
查询用户信息
id 用户名
切换用户
在操作Linux中,如果当前用户的权限不够,可以通过su -
指令,切换到高权限用户,比如root
su - 切换用户名
查看当前用户/登录用户
whoami/ who am I
用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理
//新增组
groupadd 组名
//删除组
groupdel 组名
//增加用户时直接加上组
useradd -g 用户组 用户名
//修改用户的组
usermod -g 用户组 用户名
init [0123456]
找回root密码
进入单用户模式,然后修改root
密码。因为进入单用户模式,root
不需要密码就可以登录。
当我们对某个指令不熟悉时,我们可以使用Linux提供的帮助指令来了解这个指令的使用方法。
//man获得帮助信息
man [命令或配置信息] (功能描述: 获得帮助信息)
//help指令
help命令 (功能描述: 获得shell内置命令的帮助信息)
百度帮助更直接
pwd:显示当前工作目录的绝对路径
ls
ls [选项] [目录或是文件]
/*
常用选项
a) -a: 显示当前目录所有的文件和目录,包括隐藏的
b) -l: 以列表的方式显示信息
*/
cd
cd [参数] (功能描述: 切换到指令目录)
/*
常用参数
绝对路径或相对路径
a)cd ~ 或者cd : 回到自己的家目录
b)cd .. 回到当前目录的上一级目录
*/
mkdir:用于创建目录
mkdir [选项] 要创建的目录
/*
常用选项
-p 创建多级目录
*/
rmdir:删除空目录
rmdir [选项] 要删除的空目录
rmdir删除的是空目录,如果目录下有内容是无法删除的
如果需要删除非空目录,需要使用rm -rf 要删除的目录
touch:创建空文件
touch 文件名称
cp:重要,拷贝文件到指令目录
cp [选项] source dest
/*
常用选项
-r 递归复制整个文件夹
*/
强制覆盖不提示的方法:\cp
rm:移除文件或目录
rm [选项] 要删除的文件或目录
/*
常用选项
a)递归删除整个文件夹
b)强制删除不提示
*/
强制删除不提示的方法:带上 -f
参数就行
mv:移动文件与目录或重命名
mv oldNameFile newNameFile //重命名
mv /temp/movefile /targetFolder //移动文件
cat:查看文件内容
cat [选项] 要查看的文件
/*
常用选项:
a)-n 显示行号
*/
cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
more:是一个基本vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键,详见操作说明
more 要查看的文件
less:用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更强大,支持各种显示终端。less指令在显示文件内容时,**并不是一次将整个文件加载之后才显示,**而是根据显示需要加载内容,对于显示大型文件具有较高的效率
less 要查看的文件
>
(输出重定向)和>>
(追加)指令
1)ls -l > 文件 //列表的内容写入文件a.txt中(覆盖写)
2)ls -al >> 文件 //列表的内容追加到文件aa.txt的末尾
3)cat 文件1 > 文件2 //将文件1的内容覆盖到文件2
4)echo "内容" >> "文件"
echo:输入内容到控制台
echo [选项] [输出内容]
head:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
head 文件 \\查看文件头10行内容
head -n 5 文件 \\查看文件头5行内容,5可以是任意行数
tail:输出文件中的尾部内容,默认情况下tail指令显示文件的后10行内容
1)tail 文件 \\查看文件后10行内容
2)tail -n 5 文件 \\查看文件后5行内容,5可以是任意行数
3)tail -f 文件 \\实时追踪该文档的所有更新,工作经常使用
ln:软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他方式的路径
ln -s [原文件或目录] [软链接名] \\功能描述: 给原文件创建一个软链接
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
history:查看已经执行过历史命令,也可以执行历史指令
history \\查看已经执行过历史命令
date:显示当前日期
1)date \\显示当前时间
2)date+%Y \\显示当前年份
3)date+%m \\显示当前月份
4)date+%d \\显示当前是哪一天
5)date "+%Y-%m-%d %H:%M:%S" \\显示年月日时分秒
cal:查看日历
cal [选项] \\不加选项,显示本月日历
find:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find [搜索范围] [选项]
locate:可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
locate 搜索文件
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
grep 指令和管道符号 |
grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
gzip/gunzip:用于压缩文件,gunzip用于解压文件
gzip 文件 \\压缩文件,只能将文件压缩为*.gz文件
gunzip 文件.gz \\解压缩文件命令
zip/unzip:zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用的
zip [选项] XXX.zip 将要压缩的内容 \\压缩文件和目录的命令
unzip [选项] XXX.zip \\解压缩文件
/*
zip 常用选项
-r 递归压缩,即压缩目录
unzip 常用选项
-d<目录> 指定解压后文件的存放目录
*/
tar:打包指令,最后打包后的文件是.tar.gz的文件
tar [选项] XXX.tar.gz 打包的内容 \\打包目录,压缩后的文件格式.tar.gz
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
文件/目录所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
//查看文件的所有者
ls -ahl
//修改文件所有
chown 用户名 文件名
组的创建
groupadd 组名
文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
// 查看文件/目录所在组
ls -ahl
// 修改文件所在的组
chgrp 组名 文件名
其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组
1)usermod -g 组名 用户名
2)usermod -d 目录名 用户名 改变该用户登陆的初始目录
修改权限-chmod
chgrp newgroup file //改变文件的所在组
crontab 进行定时任务的设置
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:
crontab [选项]
/*
常用选项
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
*/
conrtab -r \\终止任务调度
crontab -l \\列出当前有哪些任务调度
service crond restart [重启任务调度]
原理介绍
对Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个跟目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间一个目录下获得
硬盘介绍
~
代表分区,前4个分区用数字1到4表示,他们分别是主分区或扩展分区,从5开始就是逻辑分区。例如,hda3
表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2
表示为第二个IDE硬盘上的第二个主分区或扩展分区使用lsblk指令查看当前系统的分区情况
查询系统整体磁盘使用情况
df -h
df -l
df -lh
查询指定目录的磁盘占用情况
du -h /目录
/*
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
*/
终止进程kill和killall
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
kill [选项] 进程号 \\通过进程号杀死进程
killall 进程名称 \\通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
/*
常用选项
-9 表示强迫进程立即停止
*/
查看进程树pstree
pstree [选项] \\可以更加直观的来看进程信息
/*
-p 显示进程的PID
-u 显示进程的所属用户
*/
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点
service 服务名 start|stop|restart|reload|status
//在CentOS7后,不再使用service,而是systemctl
查看服务名
方式1:使用setup->系统服务就可以看到
方式2:/etc/init.d/服务名称
服务的运行级别
//查看或者修改默认级别: vi/etc/inittab
Linux系统有7种运行级别:常用的是级别3和5
开机的流程说明
通过chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭
chkconfig --list|grep xxx //查看服务
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
动态监控进程
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
top [选项]
查看系统网络情况netstat
netstat [选项]
/*
-an 按一定顺序排列输出
-p 显示哪个进程在调用
*/
检测主机连接命令ping
是一种网络检测工具,它主要是用于检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障
ping 对方ip地址
一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。
rpm包的简单查询指令
查询已安装的rpm列表
rpm -qa|grep xx
rpm包名基本格式
一个rpm包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用操作系统:el6.centos.x86_64
表示centos6.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用
rpm包的其它查询指令
rpm -e RPM包的名称
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
//查询yum服务器是否有需要安装的软件
yum list|grep xx软件列表
//安装指定的yum包
yum install xxx x