1、什么是linux
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。使用者不仅可以直观地获取该操作系统的实现机
制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。Linux 系统主要是应⽤于服务器 和⼤型计算机领域。我们⽣活中的⼤部分的⽹⻚和 APP,其实都是基于 Linux 系
统运⾏的,这其中就包括我们经常 会使⽤的淘宝和微信。Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。Linux具有开放源码、没有版
权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。
2、Linux概述及命令
(1)bin:存放可执行的文件;
(2)dev:相当于磁盘;
(3)home:用户的主目录,在 Linux 中,每个用户都有⼀个自己的目录,⼀般该目录名是以用户的账号命名的,相当于windows的user文件夹;
(4)root:该目录为系统管理员,也称作超级权限者的用户主目录。
Linux登录账号 :
ssh 账户@服务器地址(ssh **@101.43.158.84 password: ******)
查询账户是否登录成功:
who am i
延时等待防止退出账户:
top 保证账户不退出,再次使用时输入q
查看命令:
(1)查看当前账户目录:pwd
(2)查看根目录:ls / ( / 表示根目录)
(3)查看所有文件,包括隐藏文件(.config .开头的):ls -a
(4)查看列表详细信息(只能查看非隐藏文件):ls -l
(5)仅查看文件目录(只能查看非隐藏文件, .表示当前目录):ls -d
(6)查看所有文件的详细信息(包含文件大小):ls -lh
(7)查看所有文件的详细信息(包含了隐藏文件):ls -la
(8)查看所有文件的详细信息以及文件大小和隐藏文件:ls -lah
别名alias
(1)查看别名:alias
(2)设置别名(把已有的命令ls -lah设置为a)alias a =”ls -lah”
(3)取消别名(取消别名a)unalias a
查看当前时间:date
创建文件:
(1)创建文件,如创建一个ww.txt的记事本:touch yl.txt
(2)树型目录,当你输入一个命令时如果出现以下命令提示,则表示需要安装:
[root@centos-mater ~]# tree
-bash:/user/bin/tree/:No such file or directory
那么如何安装呢?安装命令为:
安装树型目录:yum install tree
卸载树型目录:yum remove tree
(3)创建可视化的多层级的文件夹,如创建一个 a/b/c/d的多层级文件夹:mkdir -pv a/b/c/d,
其中-p:创建多层级的文件夹、-v:创建的过程可以可视化的看到。
(4)查看文件夹的目录层级,如查看a文件夹的目录层级:tree a(表示看a文件夹的所有目录层级)
(5)查看a文件夹的前n层目录层级,如查看前2个:tree -L 2 a
切换目录:
/ 代表根目录
. 代表当前目录
.. 进入当前目录的上一级目录
cd 返回到用户的根目录
(1)进入某个文件夹(如进入a文件夹):cd a
(2)进入当前文件夹,如当前文件夹为a:cd .
(3)进入当前目录的上一级目录,如当前在a文件夹:cd ..
(4)返回用户的根目录:cd
删除文件
(1)强制删除文件(如删除 ww.txt文件):rm -rf ww.txt
(2)询问确认删除文件,(如删除 we,txt文件): rm -i we.txt
(3)删除文件(可视化的只展示),如删除 a.py文件:rm -v a.py
(4)询问确认后再删除文件+可视化展示(如删除index.py文件):rm -iv index.py
删除目录:
(1)直接删除文件夹,(如删除a文件夹):rm -r a
(2)强制删除文件夹,强制删除,若目录不存在,此命令依旧可以执行,不报错,(如删除a文件夹):rm -rf a
(3)可视化的强制删除文件夹,(如删除a文件夹):rm -rv rm
(4)删除空的目录,(如删除e目录,首先进入e的上一级目录):rmdir e
复制
(1)复制文件:cp 文件名(源文件)文件名(定义复制后的文件名)
如:将index.txt 文件进行复制,复制后的文件命名为index.csv 命令如下:cp index.txt index.csv
(2)复制目录:就是把目录下的文件复制到另一个目录下
如:wrd文件夹下的目录的wr.txt文件复制到aa文件夹中,命令如下:cp wrd/c/b/wr.txt aa
剪切(移动):
(1)把一个文件剪切到一个文件夹下(移动后源文件不存在),mv 文件名(源文件)存放位置
如:把wr.txt 文件复制到wrd文件夹下的a目录中,命令为:mv wr.txt wrd/a
(2)把一个目录下的文件剪切到另一个文件夹下,mv文件储存位置/文件名 存放位置
如:把wrd文件下a目录的wr.txt文件移动到bb文件夹下的b目录下,命令如下:mv wrd/a/wr.txt bb/a/b
(3)修改文件(文件夹)名称,命令为:mv 文件位置/文件(文件夹)原名称 文件位置/文件(文件夹)修改后名称
如;将bb目录下的wr.txt修改为wr.csv命令为;mv bb/a/b/wr.txt bb/a/b/wr.csv
查看文件内容:
(1)正序查看文件所有内容:cat
具体命令为:cat -n/-A 文件名 (-n显示文件的所有内容并显示行数;-A显示文件所有内容但不显示行数)
(2)查看文件内容倒叙显示:tac,命令如下:tac 文件名
(3)一屏一屏的查看文件内容:more,按enter查看下一行或者空格键查看下一页,按q退出。具体命令为:more 文件名
(4)查看文件内容与more相似:less支持上下左右查看文件内容,具体命令为:less 文件名
(5)head是查看文件的前几行,具体命令为:head -n N(要看前几行)文件名
如:查看login.json 文件的前5行,命令如下:head -n 5 login.json
(6)tail 是查看文件的后几行,具体命令为:tail -n N(要看后几行)文件名
如:查看login.json 文件的后5行,命令如下:tail -n 5 login.json
(7)Linux中查看实时日志文件,具体命令为:tail -f 文件名
linux权限
文件权限
(1)r:表示读得权限(读的权限用数字4代表)
(2)w:表示写的权限(写的权限用数字2代表)
(3)x:表示执行的权限(执行的权限用数字1代表)
我们赋予权限都会用数字代替,比如要赋予 读写和执行的权力,我们就用7代替,读写的权限就用6代替,我们一般说的IO权限指的就是“读写权限”,我们赋予文件权限的命令为:chmod nnn 文件名(n表示权限的数字)
如:要赋予wr.txt 文件读写和执行的权限,命令为:chmod 777 wr.txt
文件权限详解:一个文件的基本权限就是3种用户身份(所有者、所属组、和其他人)其中u表示所有者(蓝色框),g表示所属组(绿色框),o表示其他人(红色框)a代表三种身份即a+g+o
(1)增加某一个用户的权限命令为:chmod 用户身份+用户权限字母 文件名
如增加所有者的写和执行的权限,命令为:chmod u+wx 文件名
(2)移除一个用户的权限命令为:chmod 用户身份-用户权限字母 文件名
如移除所有者的写和执行的权限,命令为:chmod u-wx 文件名
(3)设定文件的权限命令为:chmod=用户权限字母 文件名
如设定所属组的权限为读写和执行,命令为:chmod g-rwx 文件名
(4)默认权限umask
Linux 是注重安全性的操作系统,⽽安全的基础在于对权限的设定,不仅所有已存在的⽂件和⽬录要设定必要的访问权限,创建新的⽂件和目录时,也要设定必要的初始权限。umask默认权限是
由4位数组成,其中第一位数代表的是⽂件所具有的特殊权限(SetUID、SetGID、 Sticky BIT)。后面三位数则表示所有者(u)、所属组(g)和其他人(o)的权限,将其转变为linux显示的字⺟形式为—–w–w-。
在 Linux 系统 中,⽂件和目录的最⼤默认权限是不⼀样的,文件的最大权限时666,也就是读写;而目录的最大权限是777,也就是读写和执行。
资源产看
查看内存 free
(1)free命令默认是以KB为单位显示的,命令free -m/g表示单位以MB/GB显示;
(2)Mem行 : total = used + free 其中used为真实已占内存,free为真实可用内存,buffers和cached虽然计算在used内, 但其实为可用内存。
(3)Swap:内存交换区的使用情况。
在内存方面,我们着重需要注意的是total即总内存,used已占用内存和available即可用内存三部分。
ps auxw | head -1;ps auxw|sort -rn -k4|head -5 查看内存占用前五的进程
ps auxw|head -1;ps auxw|sort -rn -k3|head -3 查看cpu占用前三的进程
(1)top行:系统时间+系统运行时间+用户数+1/5/15分钟系统的平均负载(Load everage)。top行中我们需要着重关注的就是平均负载,那么什么是平均负载?平均负载是系统处于可运行状态和
不可中断状态的平均进程数,可以简单理解为平均活跃进程数。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。如系统只有一个CPU的时候,平均负载是2 ,那
么在理想状态下,就会有百分之50的进程抢占不到cpu。
(2)Taska行:进程总数(total)+正在运行的进程数(running)+睡眠的进程数(sleeping)+已经停止的进程数(stopped)+僵尸进程数(zombie)。
(3)%Cpu行:用户空间CPU占比(us)+内核空间CPU占比(sy)+CPU空置率(id)。
TOP详解
PID:进程ID
USER:用户名
PR:优先级
NI:负值表示⾼优先级,正值表示低优先级
VIRS:虚拟内存
RES:共享内存
SHR:真是内存
S:进程状态 D表示不可中断的睡眠状态; R表示运⾏; S表示睡眠 ;T表示跟踪/停止; Z表示僵尸进程
查询端口
计算机常用端口ssh:22、http:80、https:443、emial:25、mySQL:3306。在计算机中,运行中的服务,其端口就是被监听或者被占用,就会显示LISTEN。如果服务没有运行,就是没有被占用。
lsof命令
查询命令为:lsof -i:端口号
如查询80的端口
查询端口
查询命令为:
netstat -tunlp 查询所有端口
netstat -tunlp|grep 端口号 查询某一个端口
其中,-tunlp的含义如下:
t(tcp):仅显示tcp相关选项;
u(udp):仅显示udp相关选项;
n:拒绝显示别名,能显示数字的全部转化为数字;
l:仅列出在Listen(监听)的服务状态;
p 显示建立相关链接的程序名。
如:我们查询80端口,得到的结果我们需要关注信息如下:
(1)80的端口被监听(占用)
(2)80的端口被nginx应用程序占用
进程查看ps
进程是操作系统最基本的运行单位,线程是进程的最小运行单位。
进程的状态:
(1)开始启动
(2)启动中
(3)运行中:端口被占用(LISTEN)
(4)休眠/假死
(5)停止:端口未被占用
1、-aux 进程查看具体命令:ps -aux| grep 进程名称
如查看nginx的状态
(1)USER:启动该进程的用户账号名称;
(2) PID:该进程在系统中的数字 ID 号,在当前系统中是唯一的;
(3)%CPU:CPU占用的百分比;
(4) %MEM:内存的占用百分比;
(5) VSZ:占用虚拟内存(swap 空间)的大小;
(6) RSS:占用常驻内存(物理内存)的大小;
(7) TTY:表明该进程在哪个终端上运行:“ ?” 表示未知或不需要终端;
(8) STAT:显示进程当前的状态:S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程);
(9) START:启动该进程的时间;
(10) TIME:该进程占用的CPU时间;
(11)该进程储存的位置。
我们一般关注的信息主要是进程的ID(PID)。
2、-elf 进程查看命令为:ps -elf |grep 进程名称
如查看nginx的状态:
结束进程
杀死某一个进程的命令:kill 9 PID
如杀死python3的进程:
编辑器vim
1、windows中创建记事本文件的方式:
(1)先创建文件,然后编写内容,最后保存;
(2)win+r,输入notepad,然后输入内容,最后保存。
2、linux中创建记事本文件的方式:
(1)先创建文件,然后vim 文件名称打开编写文件内容,最后保存。该方法需要提前创建文件,才可进行编辑。
(2)vim 文件名称。该方式不用提前创建文件,直接输入命令就会自行创建文件,点击代表edit的字母即可进行编辑。
3.1vim编辑文件
vim编辑文件的操作步骤:
1、打开通知台,连接linux,输入命令:vim 文件名称,打开要操作的文件或者创建文件
2、进入vim的编辑器后,输入a或者i
3、在最下栏就会显示insert/插入,那么就说明可以编写内容了
4、开始编写内容,编写完成后,开始保存步骤
5、先按下esc键,再按下shift+:
6、最后点击wq就是保存;如果不保存,那么输入的是q!
-vim快速修改文件
vim修改文件的操作步骤:
(1)vim 文件名称,进入文件编辑界面,输入命令:/修改的内容
(2)点击enter搜索需要修改的内容,然后点击a进行修改;
(3)修改结束后按照编辑文件的步骤进行保存和退出即可。
vim编辑器快捷键:
(1)enter:回车键换行;
(2)Del:删除光标所在的字符;删除键删除光标前一个字符。
(3)方向键:前后左右移动光标;
(4)Home/END:移动光标到行首/行尾;
(5)Page Up/Page Down:上下翻页;
(7)X:进入编辑页面后,点击x可以进行删除。
注意:在整个操作过程中需要特别注意的是,除了对内容做修改外,其他操作都需将输入法切换为英文。
文件查找
根据文件名查找find
精准搜索
(1)find / -name “要查找的文件名”
如查找nginx文件:
模糊搜索
(1)find / -name 要查找的文件部分文件名
如查找nginx文件:
(2)根据文件大小查找命令:find / -size 文件大小(以kb为单位)
如查找100MB的文件:find / -size 102400
(3)whereis 主要用于查看文件的存储位置,查看命令为:whereis 文件名
(4)在环境变量中文件的查找命令为:which 文件名
如查找nginx文件和查找ls
which主要用于在环境变量中进行查找。那么什么是环境变量呢?环境变量在互联网中常称做PATH,Windows中设置环境变量是在此电脑的属性中;linux中设置环境变量是在.bash_profile文件中设置。
输出echo命令
将想要输出的内容输出,输出命令为:echo“输出内容”
如想要输出“my name is wangrong”
输出printf命令
将想要输出的内容输出,输出命令为:printf“输出内容”
如想要输出“my name is wangrong”
在输出的内容中,我们可以通过/n来表示换行、/t来表示空格、%s来表示字符串、%d来表示整数数字、%f来表示带小数点的数字。
如:我们要输出以下内容:我的名字是云中君,我的年龄是1,我今天花的钱是30,可以有以下两种输入方式:
常用得数据类型:
int :整型数字(用%d代替)
str/string:字符串(用%s代替)
float:带小数点得数字(用%f代替)
Boolean:逻辑真假,(真true;假flase)
用户管理
管理员相关(root账户)
与管理员(root账户)相关的用户管理(即只有root账户可以进行的操作)
(1)用户创建
创建用户的命令为:useradd 用户名
(2)用户删除
删除用户的命令为:userdel 用户名
(3)修改密码
修改密码的命令为:passwd 用户名
切换用户 ,具体命令:su -用户名(用户名和-之间有个空格)
文件传输scp
不同终端之间Linux的文件传输,具体命令为:scp 文件名 账户名@101.43.158.84(服务器IP地址):/传到那个目录下
如把 wr.txt文件传输到某个服务器的ln账户的home目录下,具体命令为:scp wr.txt ln@101.43.158.84:/home/ln
文件压缩
1、zip压缩方式
zip的压缩方式特点是压缩和解压后源文件还会被保留,可以把多个文件压缩到一个压缩包中,zip可以压缩文件夹。
(1)压缩
zip方式压缩文件的命令为:zip定义压缩后压缩包的名称.zip需要压缩的文件名
如把wr.sh和w.txt文件压缩到yy.zip压缩包中:zip yy.zip wr.sh w.txt
(2)解压
zip方式解压压缩包的命令为:unzip 要解压的压缩包名称
如把yy.zip压缩包解压:unzip yy.zip
2、gz压缩方式
gzip的压缩方式特点是压缩和解压后源文件不会被保留,只能把多个文件分别进行压缩,gzip不能压缩文件夹。
(1)压缩
gzip方式压缩文件的命令为:gzip 要压缩的文件名
如把wr.sh文件压缩为wr.sh.gz压缩包:gzip wr.sh
(2)解压
gzip方式解压压缩包的命令为:gunzip 要解压的压缩包名称
如把wr.sh.gz压缩包解压:wr.sh
3、tar压缩方式
tar的打包命令选项:
(1)-c:打包
(2)-f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别的,所以一定要正确指定扩展名。
(3)-v:显示打包文件过程(-cf必须结合使用,-v可以选择性使用)
(1)压缩
tar方式压缩文件的命令为:tar -选项 定义压缩后的文件名.tar需要压缩的文件
如把wr.sh和w.txt文件压缩到yl.tar压缩包中:
(2)解压
tar方式解压压缩包的命令为:tar – 选项 压缩包名称,”tar”解压命令选项:
-x:解压包
-f:指定压缩包的文件名
-v:显示解压包文件过程(与压缩同理-cf必须结合使用,-v可以选择性使用)
如把yl.tar压缩包解压:tar -xf yl.tar
4、tar.gz压缩方式
(1)压缩
tar.gz方式压缩文件的命令为:tar -j选项 定义压缩后的文件名.tar.gz需要压缩的文件,其中的选项与tar方式一致。
如把wr.sh和w.txt文件压缩到wr.tar.gz压缩包中:
(2)解压
tar.gz方式解压文件的命令为:tar -j选项 压缩包名称,其中的选项与tar方式解压方式一致
如把wr.tar.gz进行解压:
Tomcat端口
tomcat是干什么的呢?
简单来说,通过tomcat我们可以部署java程序的环境,进而访问程序,tomcat的默认端口是8080。
tomact的下载
(1)下载tomcat时需要注意我们要下载core下的文件,下载tomcat的网址为:https://tomcat.apache.org/download-80.cgi
(2)找到要下载的文件后,鼠标右键剪辑文件,选择复制链接地址
(3)打开控制台,链接到linux服务器,然后下载文件即可,下载的命令为:wget 复制的链接地址。
环境部署步骤
java程序环境部署的过程(开发写的程序的访问过程):
(1)通过maven把程序打包成文件名.war,如index.war;
(2)把java程序的index.war包放到tomcat的Webapps下;
(3)启动tomcat
(4)通过网址:http://IP(:8080/文件名,就可以访问开发写的程序了。
实战练习
下载tomcat,然后修改端口并且找到程序的开始与停止的文件,操作步骤如下:
(1)点击下载文件的网站链接,进入后找到core下面的taz.gz压缩包;
(2)鼠标右键点击taz.gz,复制链接地址;
(3)打开控制台,链接linux后,下载压缩包,下载命令为:wget 复制的链接地址;
(4)下载完成后进行解压,解压的命令为:tar -zxvf 压缩包名称;
(5)解压后进行端口修改的操作,操作步骤为:首先查询文件目录,然后进入conf目录下,编辑sever.xml文件,修改端口即可。
(6)最后进入到bin目录下,就可以看到程序的开始与停止的脚本。
tomact中目录的解读
bin:存放Tomcat的可执行文件,程序的开始与停止脚本就存放在bin目录中。
conf:存放Tomcat的配置文件,修改端口是在conf目录下的sever.xml中。
logs:存放Tomcat执行时的日志文件
lib:存放Tomcat运行需要的库文件
webapps:存放Tomcat的应用文件
temp:存放tomcat执行时的临时文件
1.1、场景:某个程序执行错误,如何查找错误信息?
如nginx执行时出错,找到的步骤:
(1)链接到nginx部署的服务器;
(2)文件查找,find / -name nginx,找到nginx的目录;
(3)进入到nginx(cd )的目录下,然后查看文件,找到logs,进入logs目录下,然后(pwd)查看当前目录;
(4)然后tail -f error.log就可以查看到实时的错误日志。
(5)截图给开发。
2.2、场景:tomcat启动不起来,如何查看日志排查错误信息;如果是端口(8080)被占用,如何修改默认端口?
解决步骤:
查找
(1)链接到tomcat部署的服务器;
(2)文件查找,find / -name tomcat,找到nginx的目录;
(3)进入到tomcat(cd )的目录下,然后查看文件,找到logs,进入logs目录下,然后(pwd)查看当前目录;
(4)然后tail -f error.log就可以查看到实时的错误日志。
(5)截图给开发。
修改
(1)从logs目录下返回到tomcat目录下(cd ..);
(2)然后查看ls目录,进入到conf目录下,找到sever.xml文件;
(3)vim编辑sever.xml文件,进入编辑页面后,/8080即可快速定位到要修改8080端口,然后点击a进行修改即可;
(4)修改结束后,点击esc,再点击shift+:后再输入wq进行保存和退出即可。
3.3、场景:创建一个.sh文件,然后令其执行时输出当前时间和root目录下的所有文件信息,包含隐藏文件。
操作如下:
(1)链接到linux服务器,登陆的是root账户;
(2)创建.sh文件,创建的命令为:touch 文件名;
(3)vim编辑器进入编辑页面进行编辑,命令为:vim 文件名(也可不先创建,直接这个命令进行创建和编辑),编辑的内容为:date 和 ls -la
(4)编辑成功后,按照vim保存步骤进行保存,然后查看文件内容
(5)内容写入成功后,赋予文件读写和执行的权限chmod 777 文件名
(5)最后输入命令./文件名 执行文件即可。
4.4、场景:如何快速定位程序的内存溢出错误?
可以找到日志文件(out of memory)?
(1)先找到程序的错误日志,进入日志所在的目录;
(2)使用vim编辑器,进入编辑页面,/out of memory 即可定位到错误位置。
如果日志被删除后,即找不到日志文件?
(1)运行出现内存溢出的程序;
(2)然后tail -f logs.txt查看实时日志即可。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279476.html