Linux篇

什么是Linux

Linux是一套免费使用和自由传播的类似Unix操作系统,一般的WEB项目都是部署在Linux操作系统上。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行在主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Windows和Linux的区别

  • Windows是微软开发的操作系统,民用操作系统,可用于娱乐、影音、上网。 Windows操作系统具有强大的日志记录系统和强大的桌面应用。好处是它可以帮我们实现非常多绚丽多彩的效果,可以非常方便去进行娱乐、影音、上网。
  • Linux的应用相对单纯很多,没有什么绚丽多彩的效果,因此Linux的性能是非常出色的,可以完全针对机器的配置有针对性的优化,
  • 简单来说Windows适合普通用户进行娱乐办公使用,Linux适合软件开发部署

Unix和Linux有什么区别?

Linux和Unix都是功能强大的操作系统,都是应用广泛的服务器操作系统,有很多相似之处,甚至有一部分人错误地认为Unix和Linux操作系统是一样的,然而,事实并非如此,以下是两者的区别:

  1. 开源性:Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
  2. 跨平台性:Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。
  3. 可视化界面:Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。
  4. 硬件环境:Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。
  5. 用户群体:Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!

什么是 Linux 内核?

Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

  1. 系统内存管理
  2. 应用程序管理
  3. 硬件设备管理
  4. 文件系统管理

Linux的基本组件是什么?

就像任何其他典型的操作系统一样,Linux拥有所有这些组件:内核,shell和GUI,系统实用程序和应用程序。Linux比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。

Linux 的体系结构

从大的方面讲,Linux 体系结构可以分为两块:

在这里插入图片描述

  • 用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。
  • 内核空间(Kernel Space) :内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code) 。

为什么 Linux 体系结构要分为用户空间和内核空间的原因?

  • 现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。
  • Linux 从 CPU 的角度出发,为了保护内核的安全,把系统分成了两部分。

用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转移:

  • 系统调用;
  • 硬件中断。

Linux 文件系统?

在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。

也就是说在 Linux 系统中有一个重要的概念:一切都是文件。其实这是 Unix 哲学的一个体现,而 Linux 是重写 Unix 而来,所以这个概念也就传承了下来。在 Unix 系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

Linux 支持 5 种文件类型,如下图所示:

在这里插入图片描述

Linux 的目录结构是怎样的?

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:

在这里插入图片描述

  • /bin:存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
  • /etc:存放系统管理和配置文件;
  • /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
  • /usr:用于存放系统应用程序;
  • /opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root:超级用户(系统管理员)的主目录(特权阶级);
  • /sbin:存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev:用于存放设备文件;
  • /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot:存放用于系统引导时使用的各种文件;
  • /lib:存放着和系统运行相关的库文件 ;
  • /tmp:用于存放各种临时文件,是公用的临时文件存储点;
  • /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
  • /lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里

Linux基本命令

cd (change directory:改变目录)切换目录

cd ../ 跳到上级目录
cd /opt 不管现在到那直接跳到指定的opt文件夹中
cd ~ 切换当前用户的家目录。root用户的家目录就是root目录。

pwd (print working directory:显示当前工作目录的绝对路径)

pwd 
显示当前的绝对路劲

ls (ls:list的缩写,查看列表)查看当前目录下的所有文件夹(ls 只列出文件名或目录名)

ls -a 显示所有文件夹,隐藏文件也显示出来
ls -R 连同子目录一起列出来

ll (ll:list的缩写,查看列表详情)查看当前目录下的所有详细信息和文件夹(ll 结果是详细,有时间,是否可读写等信息)

ll -a 显示所有文件,隐藏文件也显示出来
ll -R 连同子目录内容一起列出来
ll -h 友好展示详情信息,可以看大小
ll -al 即能显示隐藏文件又能显示详细列表。 

touch 创建文件

touch test.txt  创建test.txt文件
touch /opt/java/test.java 在指定目录创建test.java文件

mkdir 创建目录

mkdir 文件夹名称 在此目录创建文件夹
mkdir /opt/java/jdk 在指定目录创建文件夹

cat (concatenate:显示或把多个文本文件连接起来)查看文件命令(可以快捷查看当前文件的内容)(不能快速定位到最后一页)

cat lj.log 快捷查看文件命令 
Ctrl + c 暂停显示文件
Ctrl + d 退出查看文件命令

more (more:更多的意思)分页查看文件命令(不能快速定位到最后一页)

回车:向下n行,需要定义,默认为1行。
空格键:向下滚动一屏或Ctrl+F
B:返回上一层或Ctrl+B
q:退出more

less (lese:较少的意思)分页查看文件命令(可以快速定位到最后一页)

less -m 显示类似于more命令的百分比。
less -N 显示每行的行号。(大写的N)
两参数一起使用如:less -mN 文件名,如此可分页并显示行号。

空格键:前下一页或page down。
回车:向下一行。
b:后退一页 或 page up。
q:退出。
d:前进半页。
u:后退半页

tail(尾巴) 查看文件命令(看最后多少行)

tail -10 文件名 看最后10行

cp(copy单词缩写,复制功能)

cp /opt/java/java.log /opt/logs/ 把java.log 复制到/opt/logs/下
cp /opt/java/java.log /opt/logs/aaa.log 把java.log 复制到/opt/logs/下并且改名为aaa.log
cp -r /opt/java /opt/logs 把文件夹及内容复制到logs文件中

mv(move单词缩写,移动功能,该文件名称功能)

mv /opt/java/java.log /opt/mysql/ 移动文件到mysql目录下
mv java.log mysql.log 把java.log改名为mysql.log

rm(remove:移除的意思)删除文件,或文件夹

-f或--force 强制删除文件或目录。删除文件不包括文件夹的文件	
-r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并删除。 
-rf 强制删除文件夹及内容

rm 文件名 ;安全删除命令  (yes删除 no取消)
rm -rf 强制删除文件夹及内容
rm -rf *  删除当前目录下的所有内容。
rm -rf /* 删除Linux系统根目录下所有的内容。系统将完蛋。   

find (find:找到的意思)查找指定文件或目录

* 表示0~多个任意字符。

find -name 文件名;按照指定名称查找在当前目录下查找文件
find / -name 文件名按照指定名称全局查找文件
find -name '*文件名' ;任意前缀加上文件名在当前目录下查找文件
find / -name '*文件名*' ;全局进行模糊查询带文件名的文件 

vi、vim

输入”vim 文件名” 打开文件,刚刚时是”一般模式”。

一般模式:可以浏览文件内容,可以进行文本快捷操作。如单行复制,多行复制,单行删除,多行删除,(退出)等。
插入模式:可以编辑文件内容。
底行模式:可以进行强制退出操作,不保存   :q!
		 可以进行保存并退出操作       :wq

按下”i”或”a”或”o”键,从”一般模式”,进入”插入模式(编辑模式)”。
在编辑模式下按”Esc” 即可到一般模式
在一般模式下按”:”,冒号进入底行模式。

在一般模式下的快捷键
	dd ;删除一整行
	X ;向前删除  等同于windowns系统中的删除键
	x ;向后删除和大写x相反方向
	Ctrl + f ;向后看一页
	Ctrl + b ;向前看一页
	u ;撤销上一步操作
	/word ;向下查找word关键字  输入:n查找下一个,N查找上一个(不管是哪个查找都是全局查找 只不过n的方向相反)
	?log ;向上查找log关键字  输入:n查找上一个,N查找下一个
	:1,90s/redis/Redis/g ;把1-90行的redis替换为Redis。语法n1,n2s/原关键字/新关键字/g,n1代表其实行,n2代表结尾行,g是必须要的
	:0 ;光标移动到第一行
	:$ ;光标移动到最后一行
	:300 ;光标移动到300行,输入多少数字移动到多少行
	:w  ;保存
	:w! ;强制保存
	:q  ;退出
	:q! ;强制退出
	5dd ;删除后面5行,打一个参数为自己填写
	5x ;删除此光标后面5个字符
	d1G ;删除此光标之前的所有
	d0 ;从光标当前位置删除到此行的第一个位置
	yy ;复制
	p ;在光标的下面进行粘贴
	P ;在光标的上门进行粘贴

| 管道命令(把多个命令组合起来使用)

管道命令的语法:命令1 | 命令2 | 命令3。

grep 正则表达式,用于字符串的搜索工作(模糊查询)

单独使用:
grep String test.java ;在test.java文件中查找String的位置,返回整行
一般此命令不会单独使用下面列几个常用的命令(地下通过管道命令组合起来使用)

ps aux|grep java ;查找带java关键字的进程
ll |grep java ;查找带java关键字的文件夹及文件

yum install -y lrzsz 命令(实现win到Linux文件互相简单上传文件)

#(实际上就是在Linux系统中下载了一个插件)下了了此安装包后就可以实现win系统到linux之间拉文件拉文件
#等待下载完了就可以输入:
rz  从win系统中选择文件上传到Linux系统中
sz  文件名 选择Linux系统的文件复制到win系统中

tar (解压 压缩 命令)

常用的组合命令:
-z 是否需要用gzip压缩。
-c 建立一个压缩文件的参数指令(create) –压缩
	-x 解开一个压缩文件的参数指令(extract) –解压  
	-v 压缩的过程中显示文件(verbose)
	-f 使用档名,在f之后要立即接档中(file)
	常用解压参数组合:zxvf
	常用压缩参数组合:zcvf 

解压命令:
tar -zxvf redis-3.2.8.tar.gz ;解压到当前文件夹
tar -zxvf redis-3.2.8.tar.gz -C /opt/java/ ;解压到指定目录

压缩命令:(注意 语法有点反了,我反正每次都搞反)
tar -zcvf redis-3.2.8.tar.gz  redis-3.2.8/  ;语法 tar -zcvf  压缩后的名称  要压缩的文件
tar -zcvf 压缩后的文件(可指定目录)  要压缩的文件(可指定目录) 

ps (process status:进程状态,类似于windows的任务管理器)

常用组合:ps -ef     标准的格式查看系统进程
	  ps -aux    BSD格式查看系统进程
	  ps -aux|grep redis  BSD格式查看进程名称带有redis的系统进程(常用技巧)
//显示进程的一些属性,需要了解(ps aux)
USER     //用户名
PID		 //进程ID号,用来杀死进程的
%CPU     //进程占用的CPU的百分比
%MEM     //占用内存的的百分比
VSZ      //该进程使用的虚拟內存量(KB)
RSS      //该进程占用的固定內存量(KB)
STAT     //进程的状态
START    //该进程被触发启动时间
TIME     //该进程实际使用CPU运行的时间

kill命令

kill 命令用来中止一个进程。(要配合ps命令使用,配合pid关闭进程)
(ps类似于打开任务管理器,kill类似于关闭进程)
	kill -5 进程的PID ;推荐,和平关闭进程
	kill -9 PID ;不推荐,强制杀死进程

ifconfig命令

用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。(一般是用来查看的,很少更改)
如果此命令输入无效,先输入yum -y install net-tools
ifconfig

ping (用于检测与目标的连通性)语法:ping ip地址

测试:
1、在Windows操作系统中cmd ipconfig,查看本机IP地址:
2、再到LInux系统中输入 ping ip地址
按Ctrl + C 可以停止测试。

free 命令 (显示系统内存)

#显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合

top 命令

#显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等
-c 显示完整的进程命令
-s 保密模式
-p <进程号> 指定进程显示
-n <次数>循环显示次数

同步时间命令

ntpdate ntp1.aliyun.com

更改为北京时间命令

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看时间命令

date

file (可查看文件类型)

file 文件名

linux如何查看端口被哪个进程占用的方法

lsof -i:端口号
netstat -tunlp|grep 端口号

 

posted @ 2021-12-22 23:31  残城碎梦  阅读(107)  评论(0编辑  收藏  举报