Linux学习手册大全

Posted 史莱姆君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习手册大全相关的知识,希望对你有一定的参考价值。

Linux大全

1、虚拟机安装

VMware15.5安装,傻瓜式安装,只记录变动步骤,其余都下一步,软件安装位置自己选择,最好别选c盘,软件地址https://www.nocmd.com/windows/740.html(内含激活码),安装时需要注意它文件不会在一个文件夹下,自己多建一个版本文件夹,方便管理。
在这里插入图片描述
在这里插入图片描述
文件》新建虚拟机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击安装计算机的设置》选择镜像后》点确定
在这里插入图片描述
开启虚拟机》选第一个install centos7
在这里插入图片描述
等待一段时间不要乱点,乱点会卡死,》软件选择》最小安装或gui服务器或gnome桌面,选好后点完成。开发中一般都选最小安装,需要什么软件在自行选择,但其它安装可以省略jdk,mysql等安装,会自行安装。
在这里插入图片描述
在这一步也可以选择自动配置分区,这里更快,这里我选择我要配置分区。
在这里插入图片描述
设置好/boot要1G,swap要2G,剩余都在根目录分区大小后,设备类型点标准分区,点完成。
在这里插入图片描述
点接受更改
在这里插入图片描述
网络和主机名设置,需要联网就打开以太网。
在这里插入图片描述
最后一个像一把锁的安检策略可以关闭。

点开始安装
在这个页面配置root账号密码,创建用户账号密码。在实际开发中root账号要复杂点,避免被破解。
在这里插入图片描述
等待完成后,点击重启。
在这里插入图片描述
在这里插入图片描述
再把网络连接打开。

2、虚拟机网络连接方式

1、桥接模式:同一网段中,最多只能连接255台机子,一旦超出容易造成IP冲突。IP地址的前3位就是网段(192.168.0.1)。

2、NAT(网络地址装换)模式:虚拟机和外部通信,不会造成IP冲突。虚拟机地址不再是以0开头,而是生成1-255之间的数,如192.168.6.1,然后主机会生成一个对应的虚拟网卡如192.168.6.6,两者能通信。这种模式下虚拟机能访问192.168.0.1,由于网段不同,192.168.0.1不能访问虚拟机。

3、主机模式:虚拟网络对主机可见,虚拟机不能上网。

3、安装vmtools

vmtools工具是实现虚拟机和主机文件进行共享,两个地方都能修改同一文件。安装步骤如下

1、右击虚拟机 install vmware tools
2、双击VMware Tools,复制XXX.tar.gz压缩包到/opt目录下
3、桌面上打开终端,cd /opt ,进入到opt目录下,使用解压命令tar -zxvfVM+tab键提示自动补全名称, 得到一个解压文件夹
4、进入该vm解压的目录cd vmxxx,/opt目录下
5、安装./vmware-install.pl
6、全部使用默认设置即可,一直按回车,就可以安装成功
注意:安装vmtools需有gcc ,可以使用gcc -v查看gcc版本

共享文件夹设置

点虚拟机设置》选项》共享文件夹》总是启用》添加》指定文件夹

4、虚拟机目录

4.1、目录含义

/bin :存放着最经常使用的命令

/home :存放普通用户的主目录,一般该目录名是以用户的账号命名

/root :该目录为系统管理员,也称作超级权限者的用户主目录(根目录)

/boot:Linux启动相关文件

/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。

/lost+ found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

/etc:系统管理所需配置和子文件目录

/user:用户应用程序和文件

/proc[不能动]:是虚拟目录,系统内存映射,访问这个目录获取系统信息

/srv[不能动]:存放服务启动后所需数据

/sys[不能动]:该目录安装了2.6内核新出现的文件系统

/tmp:存放临时文件

/mnt:存放挂载文件

/opt:给主机额外安装软件的目录,即软件存放目录

/user/local:软件安装后的目标目录,一般是编译源码的方式安装的程序

4.2、Linux颜色含义

蓝色表示目录,白色表示文件,红色表示压缩文件,绿色表示可执行权限

5、远程登录软件

XShell和XFTP下载地址:网站一

网站二推荐

虚拟机终端输入ifconfig,找到虚拟机地址,如果找不到ip地址就重新设置网络,编辑》虚拟网络编辑器》更改设置》还原默认设置。

6、编辑命令

vi、vim都是编辑命令,vim是vi的增强版,它们有三种模式,一般模式,编辑模式(能输入内容),命令模式。

一般模式:输入的内容看不见

编辑模式:可以自由输入内容,可见

命令模式:在文件末尾位置,可见

命令模式》一般模式:vimvi

一般模式》编辑模式:ioar等按键

编辑模式》一般模式:esc

一般模式》命令模式::/

:wq:保存退出

:q:不保存退出

:q!:强制退出

自动补全文件名:tab

拷贝当前行(一般模式):yy,并粘贴输入p

拷贝当前行向下的i行:iyy

删除当前行:dd

删除当前行向下的iidd

在文件中查找某个单词(命令模式)敲/,回车查找,输入n就是查找下一个

设置文件的行号(:进入命令模式):命令行下set nu

取消文件的行号:set nonu

使用快捷键到该文档的最末行[G]和最首行[gg](一般模式下)

在一个文件中输入"hello"然后又撤销这个动作,一般模式下按u

立即关机:shutdown -h now

一分钟后关机:shutdown -h 1

重启计算机:reboot

获取帮助信息:man 【命令或配置文件】(按空格显示更多帮助信息)

获取内置命令帮助信息:help 命令

7、用户管理

切换用户:su - 用户名

权限高的用户切换到低权限用户不需要输入密码,反之需要。返回原来用户时,exitlogout

添加用户:useradd 用户名

给用户指定密码:passwd 用户名

显示当前用户所在目录:pwd

删除用户(保留家目录):userdel 用户名

删除用户(删除包括家目录):userdel -r 用户名

查询用户信息:id 用户名

查看当前登录用户:who am i

用户组:系统对有权限的用户同一管理

新增组:groupadd 组名

删除组:groupdel 组名

新增用户直接分组:useradd -g 用户组 用户名

修改用户组:usermod -g 用户组 用户名

8、CentOS7找回root密码

1、启动系统,进入开机页面,按e键进入编辑页面

2、光标向下移动,找到以“Linux16”开头的行数,行末输入init=/bin/sh,接着按ctr+x进入单用户模式。

3、在光标闪烁位置输入:mount -o remount,rw /,完成后回车

4、接着输入passwd,完成后回车,输入密码后回车,再次输入密码。修改成功后会显示passwd……

5、接着在光标位置输入:touch /.autorelabel,完成后回车,等待系统重启,新密码就生效了。

9、文件目录指令

pwd指令

显示当前目录的绝对路径

ls指令

查看当前目录的所有内容信息:ls 【选项】【目录或文件】
常用选项有:

-a ,查看所有文件和目录包括隐藏文件

-l,以列表形式显示信息

cd指令

切换目录:cd 【参数】

cd~cd:回到自个家目录

返回当前目录的上一级目录:cd ..

mkdir指令

创建一个目录:mkdir 创建的目录

创建多个目录:mkdir -p /test/one

rmdir指令

删除一级目录:rmdir 删除的空目录

如果删除的目录下有内容,非得删除的话使用:rm -rf 要删除的目录

touch指令

创建空文件:touch 文件名称

cp指令

cp 【选项】 源文件 目标文件

选项:-r 递归复制整个文件夹

强制覆盖不提示方法:\\cp cp -r src dest

rm指令

移除文件或目录:rm 【选项】要删除的文件或目录

常用选项:

递归删除文件夹:-r

强制删除不提示:-f

mv指令

用于移动文件与目录或重命名

两个文件同一目录会重命名:mv 旧文件名 新文件名

两文件不同目录会移动:mv 要移动的文件 移动到的位置

cat指令

查看文件内容:cat 【选项】要查看的文件

常用选项:

显示行号:-n

cat只能浏览,不能修改,为浏览方便,一般会带上 管道命令|(|是或符号不是大写i,表示前一个指令结果交给后面的指令处理):|more

例:cat -n /etc/profile | more

more指令

操作功能
空格翻页
回车向下一行
ctr+f向下滚动一屏
ctr+b返回上一屏
=输出当前行号
:f输出文件名和当前行

less指令

less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

分屏查看文件内容:less 要查看的文件

操作功能
空格 、pagedown向下翻页
pageup向上翻页
/子串查找字符串内容,n向下找,N向上找

echo指令

输出内容到控制台:echo 【选项】 【输出内容】

head指令

用于显示文件开头部分内容,默认只显示前10行:head 文件

查看文件头5行:head -n 5[数字] 文件

tail指令

查看文件中尾部的内容,默认显示文件的尾10行内容:tail 文件

查看文件尾5行:tail -n 5[数字] 文件

实时追踪该文档的所有更新:tail -f 文件

指令>和指令>>

输出重定向(覆盖)>,追加>>

将列表内容覆盖写入文件:ls -l > 文件

将列表内容追加写入文件:ls -al >> 文件

将文件1内容覆盖到文件2:cat 文件1 > 文件2

将内容追加到文件:echo 内容 >> 文件

ln指令

给源文件创建一个链接:ln -s [源文件或目录] [链接名]

history指令

查看所有历史命令:history

查看最近5条命令:history 5

执行历史编号为5的命令:!5

10、日期指令

显示当前日期:date

显示今年:date +%Y

显示当前月份:date +%m

显示当前天数:date +%d

指定格式显示年月日时分秒:date "+%Y-%m-%d %H:%M:%S"

设置日期:date -s 字符串日期

查看日历:cal 【选项】,不指定选项, 默认当前月日历

11、查找指令

1、find指令

find指令从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。
find [搜索范围] [选项]
常用选项
-name<查询方式>
按照指定的文件名查找模式查找文件
-user<用户名>
查找属于指定用户名所有文件
-size <文件大小n>
按照指定的文件大小查找文件,+n大于,-n小于,n等于,+单位k,M,G

2、locate指令

快速查找指定文件的路径:locate 文件

由于该指令是基于数据库查询,第一次使用必须用updatedb指令创建数据库,

3、which指令

查看指令在哪个目录下:which 指令

4、grep指令

过滤查找:grep 【选项】 查找内容 源文件

-n:显示匹配行和行号

-i:忽略字母大小写

12、压缩解压指令

1、gzip和gunzip指令

压缩文件:gzip 文件,只能将文件压缩为*.gz格式

解压文件:gunzip 需要解压的文件.gz

2、zip和unzip指令

项目打包发布时常用命令

压缩文件:zip 【选项】 XXX.zip

常用选项-r:递归压缩目录

解压文件:unzip 【选项】 XXX.zip

常用选项-d 目录:指定解压后文件存放目录

3、tar指令

既可打包又可解压,打包后文件后缀是.tar.gz

打包目录:tar 【选项】 XXX.tar.gz

常用选项功能
-c产生.tar打包文件
-z打包同时压缩
-x解包.tar文件
-v显示详细信息
-f指定压缩后的文件名

例:

压缩多文件:tar -zcvf dc.tar.gz /hmoe/bbb/cat.txt /home/bbb/dog.txt

将bbb文件夹压缩成myb.tar.gz:tar -zcvf myb.tar.gz bbb

将文件解压到当前目录:tar -zxvf myb.tar.gz

将myb.tar.gz解压到tom目录下:tar -zxvf myb.tar.gz -C tom

13、Linux组

一个文件有个所有者,所有者又归于一个组。

13.1、所有者和组

所有者:文件谁创建就归谁所有

查看文件所有者:ls -ahl

修改所有者:chown 用户名 文件
在这里插入图片描述
组的创建:groupadd 组名

新增用户直接分组:useradd -g 用户组 用户名

修改文件所在组:chgrp 组名 文件名

其他组:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
改变用户所在组(需要root的管理权限)

  1. usermod -g 新组名 用户名
  2. usermod -d 目录名 用户名 (改变该用户登陆的初始目录,注意这里的用户需要有进入新目录的权限)

13.2、权限介绍

Is -I中显示的内容如下:
d rwx r-x r-x. 2 root root 53 7月 9 20:08 bbb
0-9位说明
1.第0位确定文件类型(d,-,I,c,b)

d是目录,相当于windows的文件夹
-是普通文件
l是链接,相当于windows的快捷方式
c是字符设备文件,如鼠标,键盘
b是块设备,比如硬盘

2.第1- 3位rwx该文件的所有者拥有该文件的权限。——User
3.第4 - 6位r-x所属组的用户拥有该文件的权限。——Group
4.第7 - 9位r-x其他用户拥有该文件的权限——Other

rwx作用:r表示读,w表示写,x表示可执行(作用到文件是可执行,作用到目录是可进入)

其他说明:

数字2 :文件数和子目录数和

第一个root所有者,第二个root所在组

53:文件大小(字节),如果是文件夹,显示4096字节

7月 9 20:08:文件最后修改日期

13.3、修改权限chmod

方式一:+、一、=变更权限

u:所有者,g:所有组,o:其他用户,a:所有人

给文件的所有者读写执行权限,给所在组读执行权限,给其他用户执行权限:chmod u=rwx,g=rx,o=x 文件/目录名
给其他人增加写权限:chmod o+w 文件/目录名/所有者/所有组

该文件不让所有人执行:chmod a-x 文件/目录名/所有者/所有组

方式二:数字变更权限

r=4,w=2,x=1

chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751 文件/目录名

13.4、修改文件所有者

改变所有者:chown 改成的所有者 文件/目录

改变所有者和所在组:chown 新所有者:新所有组 文件/目录

14、定时任务调度

任务调度:系统在某个时间执行特定的命令或程序。

14.1、任务调度分类

1.系统工作:某些重要工作周而复始的进行,如病毒查杀

2.个别用户工作:个别用户执行某些程序,如打开qq

定时任务的设置:crontab [选项]

选项功能
-e编辑crontab定时任务
-l查询当前任务调度
-r删除当前用户所有的定时任务

14.2、重启任务调度

service crond restart

crontab -e 回车然后输入 */1 * * * * ls

*号位置含义
第一个一小时当中的第几分钟(分钟)
第二个一天当中的第几小时(小时)
第三个一月当中的第几天(天)
第四个一年中第几个月(月)

| 第五个 | 一周当中的星期几
范围0-7 ( 0和7都代表星期日) |

特殊符号说明

特殊符号含义
*表示任何时间,比如第一个*,表示一小时每分钟执行一次
,表示不连续时间,比如“0 8,10 * * * * 命令”,表示每天8点0分,10点0分执行一次命令
-表示连续的时间范围,比如“0 2 * * 1-6 命令”,表示周一到周六凌晨2点执行命令
*/n表示每隔多久执行一次,比如“*/10 * * * * 命令”,表示没10分钟执行一次命令

特定时间执行案例
在这里插入图片描述

14.3、at定时任务

at命令是一次性定时计划任务 ,at的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下, atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间四配,则运行此作业。at命令只执行一次。
在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看

检测当前进程有哪些:ps -ef

检测acd进程是否在运行:ps -ef | grep atd

命令格式:at 【选项】【时间】,ctr+d结束at命令输入

选项功能
-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-Iatq(显示系统中待执行的任务列表)的别名
-datrm(删除待执行任务队列中的任务)的别名
-v显示任务将被执行的时间
-V显示版本信息
-c打印任务的内容到标准输出
-q 队列使用指定的队列
-f 文件从指定文件读入任务而不是从标准输入读入
-t 时间参数以时间参数的形式提交要运行的任务

14.4、at指定时间的方式

1、hh:mm(小时:分钟)24小时制指定时间,如果该时间已过,会放到第二天执行。

2、使用midnight (深夜), noon (中午), teatime (饮茶时间,一般是下午4点)等模糊词来指定时间。
3、采用12小时计时制,即在时间后面加上am (上午)或pm (下午)来说明是上午还是下午。
4、指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy (月/日/年)或dd.mm.yy
(日.月.年) ,指定的日期必须跟在指定时间的后面。 例如: 09:00 2021-07-1
5、使用相对计时法。指定格式为: now + count time- units , now就是当前时间, time-units是时间单位,这里能够是minutes、hous、days、weeks。count是时间的数量,几天,几小时。例如 : now + 5 minutes
6、直接使用today (今天)、tomorrow (明天)来指定完成命令的时间。

例1:一天后凌晨12点执行 /bin/ls /home

at 12am + 1 day,然后输入/bin/ls /home,接着ctr+d

例2 : atq命令来查看系统中没有执行的工作任务
在这里插入图片描述

例3 : 2分钟后,输出时间到指定文件内比如/root/date200.log
在这里插入图片描述
例4 :删除已经设置的任务, atrm 编号

atrm 1

15、Linux磁盘分区

15.1、分区原理

Linux来说无论有几个分区,分给哪一目录使用,归根结底就只有一个根目录,一个独立且唯一的
文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
Linux采用了一种叫“载入的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一
个分区和一个目录联系起来。一个分区挂载一个目录。

15.2、硬盘说明

1.Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2.对于IDE硬盘,驱动器标识符为"hdx~" ,其中"hd" 表明分区所在设备的类型,这里是指IDE硬盘。“x"为盘号( a为基本盘, b为基本从属盘,c为辅助主盘,d为辅助从属盘)。~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
3.对于SCSI面则标识为"sdx~” , SCSI硬盘是用"sd" 来表示分区所在设备的类型的,其余的和IDE硬盘的表示方法一样。

查看设备挂载情况:lsblk或lsblk -f
在这里插入图片描述

查询磁盘使用情况:df -h 【/目录】,不写目录默认查询当前目录

统计/opt下文件个数:ls -l /opt | grep "^-" | wc -l(^-是以-开头的文件,wc统计个数)

统计/opt下目录个数:ls -l /opt | grep "^d" | wc -l

统计/opt文件夹下文件的个数,包括子文件夹里的:ls -lR /opt | grep "^-" | wc -l

统计/opt文件夹下目录的个数,包括子文件夹里的:ls -lR /opt | grep "^d" | wc -l

以树状显示目录结构:tree 目录,注意默认是没有安装tree的,安装要root权限,安装tree命令:yum install tree

16、网络配置

IP地址配置

1、自动获取

2、指定IP地址,避免虚拟机因自动获取IP造成地址变更,导致找不到

修改指定IP命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改内容如下

BOOTPROTO=static
#IP地址
IPADDR=192.168.200.66
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2

虚拟机改完IP地址后,vmnet8也要修改在同一网段192.168.200.X,只有在同一网段中才能ping通。

虚拟机工具栏下》编辑》虚拟网络编辑器》修改子网IP》应用》确定
在这里插入图片描述
重启网络服务或重启Linux系统生效:service network restart 或 reboot

查看主机名:hostname

修改主机名:vim /etc/hostname,之后需要reboot重启生效

设置hosts映射

设置目的是为了通过主机名来ping通

Windows下:找到C:\\Windows\\System32\\drivers\\etc\\hosts 文件指定即可,

指定内容:192.168.200.200 smile200

Linux下:/etc/hosts 文件指定,内容:192.168.200.200 smile

17、进程管理

程序:静态的,是躺在硬盘上。

进程:动态的,程序运行在内存中就是进程。

线程:进程的不同执行路径。

每个进程都可能以两种方式存在的。前台和后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

17.1、查看当前系统中哪些进程正在执行

ps  【选项】

PS -aux执行后,参数含义
在这里插入图片描述

参数 含义

USER 用户

PID 进程号

%CPU 执行命令时候进程占用的CPU

%MEM 执行命令时候进程占用的CPU

VSZ 进程占用虚拟内存的大小(单位kb)

RSS 进程占用物理内存的大小(单位kb)

TTY 终端机号

STAT 运行状态

​ R: 正在运行

​ S:睡眠

​ D:短期等待

​ T:被跟踪或者被停止

​ Z:僵死进程(进程可能死掉,没有释放)

​ s:该进程是会话的先导进程

​ +:该进程为前台进程

​ l:该进程是多线程进程

​ N:低优先级进程

​ <:高优先级进程

​ []:表示这个一个内核线程

START 执行开始的时间

TIME 进程消耗cpu的时间

COMMAND 进程名,执行该进程的指令

全格式显示所有进程,查看父进程:ps -ef

UID:用户名

PPID:父进程

C : CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;
数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动时间

CMD:启动进程所用命令和参数

其余和上面一样

选项功能
-a显示当前终端的所有进程信息
-u以用户的格式显示进程信息
-x显示后台进程运行的参数
-e显示所有进程
-f全格式

17.2、终止进程

kill 【选项】 进程号

killall 进程名称

常用选项:-9:强迫进程立即停止

17.3、查看进程树

pstree 【选项】
常用选项
-p :显示进程的PID
-u :显示进程的所属用户

17.4、服务管理

service管理指令

service 服务名 [start I stop | restart | reload | status]
在CentOS7.0后很多服务不再使用service ,而是systemctl
查看服务名
查看全部系统服务:setup

带*号的服务是自动启动的,光标移至 * 号,按空格就会删除,按tab键进行切换。
在这里插入图片描述
查看service指令管理的服务:ls -l /etc/init.d

17.5、指定运行级别

CentOS7后运行级别说明
指定运行级别:init 数字0-6,常用运行级别是3和5

级别说明

0:关机
1:单用户(找回丢失密码用)
2:多用户状态无网络
3:多用户状态有网络
4:系统未使用保留给用户
5:图形界面
6:虚拟机重启

在/etc/initab进行了简化, 如下:
multi-user.target: analogous to runlevel 3
graphical.target : analogous to runlevel 5

查看当前的运行级别是什么:systemctl get-default

修改运行级别:systemctl set-default multi-user.target

17.6、chkconfig指令

查看服务:chkconfig --list [| grep xxx]

给服务在指定的运行级别下设置开关:chkconfig --level 5 服务名 on/off

注意:使用了chkconfig指令服务自启或关闭,需要reboot重启生效

17.7、systemctl指令

语法:systemctl 服务名 [start I stop | restart | reload | status]

查看管理的服务:ls -l /usr/lib/systemd/system

systemctl设置服务的自启动状态

  1. systemctl list-unit-files [ I grep服务名] (查看服务开机启动状态)

  2. systemctl enable 服务名(设置服务开机启动)

  3. systemctl disable 服务名(关闭服务开机启动)

  4. systemctl is-enabled 服务名(查询某个服务是否是自启动的)

例:查看当前防火墙的状况,关闭防火墙和启动防火墙

1.systemctl status firewalld.service

2.systemctl stop firewalld.service

3.systemctl start firewalld.service

17.8、防火墙

在这里插入图片描述

防火墙打开情况下,xshell6访问Linux需要打开22端口号,不然访问不到。防火墙关闭后,xshell6可以直接访问,不需要打开端口号。

打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但此时外部请求数据包却不能跟服务器监听端口通讯。这时需要打开指定的端口,比如80、22、 3306等。

17.8.1、firewall指令

打开端口: firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入才能生效: firewall-cmd --reload
查看所有开放端口:firewall-cmd --zone=public --list-port
查询端口是否开放: firewall-cmd --query-port=端口/协议

17.9、动态监控进程

top与ps命令相似,都是用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

指令:top 【选项】

选项功能
-d 秒速指定top命令每隔几秒更新,默认3秒
-i使top不显示任何闲置或者僵死进程
-P通过指定监控进程ID来仅仅监控某个进程的状态

在这里插入图片描述

交互操作说明

操作功能
P以CPU使用率排序,从大到小,默认就是此项
M以内存的使用率排序,从大到小
N以PID排序,从大到小
Q或q退出top

例1:监视特定用户,比如我们监控tom用户
top命令下,输入“u"回车,再输入用户名,输错可按向下键清空。
例2 :终止指定的进程
top命令下,输入"k"回车,再输入要结束的进程ID号

18、rpm和yum

18.1、rpm

rpm用于下载包的打包及安装工具,它生成具有.rpm扩展名的文件。RPM是RedHat Package Manager ( RedHat软件包管理工具)的缩写,类似windows的setup.exe。

查询所有安装rpm软件包:rpm -qa

查询软件包是否安装:rpm -q 软件包名

查询软件包信息:rpm -qi 软件包名

查询软件包中的文件:rpm -ql 软件包名

查询文件所属的软件包:rpm -qf 文件全路径名

卸载软件包:rpm -e 软件包

安装软件包:rpm -ivh 安装的全路径

18.2、yum

yum是个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

查询yum服务器是否有需要安装的软件:yum list l grep xx软件列表

安装指定的yum包:yum install xx下载安装

19、Java环境安装

19.1、jdk安装

安装步骤
1、创建jdk文件夹:mkdir /opt/jdk
2、通过xftp传输Linux版本的jdk安装包到/opt/jdk目录下
3、进入jdk目录:cd /opt/jdk
4、解压jdk安装包:tar -zxvf jdk-8u261-linux-x64.tar.gz
5、创建java文件夹:mkdir /usr/local/java
6、移动jdk安装文件:mv /opt/jdk/jdk1.8.0_261/ /usr/local/java/
7、配置环境变量:vim /etc/profile
8、在profile文末添加

export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH

9、让编辑过的环境变量生效:source /etc/profile

19.2、Tomcat安装

安装步骤

1、新建tomcat目录:mkdir /opt/tomcat

2、通过xftp传输Linux版本的tomcat安装包到/opt/tomcat目录下

3、进入tomcat目录:cd /opt/tomcat

4、解压tomcat安装包:tar -zxvf apache-tomcat-8.5.69.tar.gz ,下载core核心包地址https://tomcat.apache.org/download-80.cgi
5、进入tomcat的bin目录:cd apache-tomcat-8.5.69/bin,启动tomcat:./startup.sh
6、开放端口8080

防火墙打开8080端口号:firewall-cmd --permanent --add-port=8080/tcp

重新载入生效:firewall-cmd --reload

测试是否打开端口号:firewall-cmd --query-port=8080/tcp

也可以通过虚拟机ip地址:8080/,查看是否可以登录tomcat首页。

19.3、MySQL安装

1、新建mysq文件夹,并进入:mkdir /opt/mysql

2、Xftp将安装包传输到/opt/tomcat目录下,

下载地址 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,

或直接执行:wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

3、进入tomcat目录:cd /opt/mysql

4、解压tomcat安装包:tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

5、查询mariadb: rpm -qa | grep mari。注意centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。

5、卸载mariadb:rpm -e --nodeps mariadb-libs ,rpm -e --nodeps marisa

6、开始安装mysql

rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm 

7、启动服务:systemctl start mysqld.service

8、开始设置root密码

Mysql自动给root用户设置随机密码,运行grep “password” /var/log/mysqld.log可看到当前密码
在这里插入图片描述
运行mysql -u root -p,复制粘贴输入上述密码

开发环境中密码要复杂,平时自己用就设简单密码,避免不能输入简单需修改设置策略,默认值为1,带分号输入。

mysql密码设置有三种策略:0策略密码设置最低8位,1策略要求长度,数字,大小写,特殊符号,3策略在2的基础上还多了个字典文件。

set global validate_password_policy=0;

最后开始设置密码,带分号

set password for 'root'@'localhost' = password('root6666');

9、运行如下命令使密码生效

flush privileges;

20、Shell编程

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

20.1、Shell脚本执行方式

  • 脚本格式要求

    脚本以#!/bin/bash开头,需要可执行权限

例:创建shell脚本,输出hello world
在这里插入图片描述
在这里插入图片描述

  • 常用执行方式

    方式1:输入脚本的绝对路径或相对路径(./xxx.sh)
    说明:首先要赋予hello.sh脚本的 +x权限,再执行脚本

    方式2:sh+脚本
    说明:不用赋予脚本 +x权限,直接执行即可。
    在这里插入图片描述

20.2、shell变量

介绍
1)Linux Shell中的变量分为系统变量和自定义变量。
2)系统变量: $HOME等
3)显示当前shell中所有变量: set
shell变量的定义
基本语法

  1. 定义变量:变量名=值

  2. 撤销变量: unset 变量

  3. 声明静态变量 : readonly 变量,静态变量不能unset

变量定义实操

#!/bin/bash
#定义变量A
A=100
#输出变量需加上$
echo A=$A
echo "A=$A"
#撤销变量,变量A便没了
unset A
echo A=$A
#声明静态的变量B=2
readonly B=2
echo "B=$B"
C=`date`
D=$(date)
echo C=$C
echo D=$D

定义变量的规则
1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
2.等号两边不能有空格
3.变量名称一般习惯为大写,这是一个规范,虽然小写也可运行。

将命令的返回值赋给变量

A=`date`反引号,运行里面的命令,并把结果返回给变量A,如果没有反引号表示的是将单词date给A
A=$(date)等价于上面的语句

20.2.1、设置环境变量(全局变量)

基本语法

export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
source 配置文件 (功能描述:让修改后的配置信息立即生效)
echo $变量名 (功能描述:查询环境变量的值)
案例
在/etc/profile文件中定义TOMCAT_ HOME环境变量,profile文件修改后,需刷新生效

vim /etc/profile
输入如下内容
#定义一个tomcat环境变量
export TOMCAT_HOME=/opt/tomcat
保存退出
刷新profile
source /etc/profile

查看环境变量TOMCAT HOME的值

echo $TOMCAT_HOME

shell多行注释

:<<!
注释内容
!

20.2.2、位置参数变量

  • 用途

当我们执行一个shell脚本时 ,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

  • 基本语法

    $n ( 功能描述: n为数字, $0代表命令本身,$1-$9代表第一到第九个参数, 10以上的参数需要用大括号包含,如${10}
    $* (功能描述:命令行中所有的参数,$*把所有参数看成一个整体)
    $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待,分别输出)
    $# (功能描述:命令行中所有参数的个数)
    

案例:编写一个shell脚本position.sh,在脚本中获取到命令行的各个参数信息。

vim myshell.sh
输入如下内容
#!/bin/bash
echo "0=$0 1=$1 2=$2"
echo "所有的参数=$*"
echo "$@"
echo "参数的个数=$#"
sh myshell.sh 10 20

在这里插入图片描述

20.2.3、预定义变量

含义:事先定义好的变量,直接在脚本中使用

基本语法

$$(功能描述:当前进程的进程号(PID)
$! (功能描述:后台运行的最后一个进程的进程号( PID) )
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一 个命令正确执行;
    如果这个变量的值为非0 (具体是哪个数,由命令自己来决定), 则证明上一个命令执行不正确了。)

应用实例
在一个shell脚本中简单使用一下预定义变量

vim preVar.sh 
输入内容
#!/bin/bash
echo "当前进程的进程id=$$"
#以后台方式运行脚本,并获取进程ID
/root/shcode/myshell.sh &
echo "最后一个进程的进程号id=$!"
echo "将执行结果返回=$?"

20.3、运算符

基本语法

$((表达式))或 $[表达式] 或expr m + n
注意expr(expression表达式简写)运算符间要有空格,m,n为数字。
希望某个结果赋值给变量,使用``反引号,单引号就相当于字符串拼接
expr m - n
expr \\*(乘),/(除),%(取余)

应用实例

#!/bin/bash
#案例1:计算(2+3)*4的值
#方式1
RES1=$(((2+3)*4))
echo "res1=$RES1"
#方式2,推荐使用
RES2=$[(2+3)*4]
echo "res2=$RES2"
#方式3
TEMP=`expr 2 + 3`
RES3=`expr $TEMP \\* 4`
echo "temp=$TEMP"
echo "res3=$RES3"
#案例2:请求出命令行的两个参数的和
SUM=$[$1+$2]
echo "sum=$SUM"

在这里插入图片描述

20.4、条件判断

判断语句基本语法
[ condition ] (注意condition前后要有空格)
#非空返回true ,可使用$?验证( 0为true , > 1为false )

应用实例
[ smile ] ,返回true
[ ],返回false
[ condition ] && echo OK II echo notok,条件满足,执行后面的语句

常用判断条件

1)=字符串比较
2)两个整数的比较
-It 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
3)按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
4)按照文件类型进行判断
-f 文件存在并且是一 个常规的文件
-e 文件存在
-d 文件存在且是一个目录

20.5、流程控制

20.5.1、if使用

基本语法

#单分支
if [ 条件判断 ]
then
代码
fi

#多分支
if [ 条件判断 ]
then
代码
elif [ 条件判断 ]
then
代码
fi

注意事项:[ 条件判断 ],中括号和条件之间必须有空格

案例

#!/bin/bash
#如果输入的参数,大于等于60,则输出及格了,如果小于60,则输出不及格
if [ $1 -ge 60  ]
then  
        echo  "及格了"
elif [ $1 -lt 60  ]
then
        echo "不及格"
fi

在这里插入图片描述

20.5.2、case语句

基本语法

case $变量名 in
"值1")
如果变量的值等于值1 ,则执行程序1
;;两分号代表结束
"值2")
如果变量的值等于值2,则执行程序2
;;
其他分支
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

案例

#!/bin/bash
#当命令行参数是1时,输出"周一"是2时,就输出"周二”,其它情况输出"other" 
case $1 in
"1")
        echo "周一"
;;
"2")
        echo "周二"
;;
*)
        echo “other”
;;
esac

在这里插入图片描述

20.5.3、for使用

基本语法

语法1:
for 变量 in 值1 值2 ...
do
代码
done

语法2:
for (( 始值;循环控制条件;量变化 ))
do
代码
done

应用实例

案例1:打印命令行输入的参数

#!/bin/bash
#$*输出方式  
for i in "$*"
do 
        echo "num is $i"
done
#$@方式
echo "==========="
for j in "$@"
do 
        echo "num is $j"
done

案例2:从1加到100的值输出显示

#!/bin/bash
SUM=0
for(( i=1; i<=100; i++  ))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"

20.5.4、while使用

基本语法

while [ 条件判断式 ]
do
代码
done

案例:从命令行输入一个数n,统计从1+……n的值是多少?

#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "结果=$SUM"

20.5.5、read读取控制台输入

基本语法
read [选项] [参数]
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒), 如果没有在指定的时间内输入,就不再等待。
参数
变量:指定读取值的变量名
应用实例

#!/bin/bash
#案例1 :读取控制台输入一个num1值
read -p "请输入指定的num1=" NUM1
echo "输入的num1=$NUM1"
#案例2 :读取控制台输入一个num2值,在5秒内输入
read -t 5 -p "请输入num2=" NUM2
echo "输入的num2=$NUM2"               

在这里插入图片描述

20.6、函数

系统函数
basename基本语法

basename [pathname] [suffix](功能:返回完整路径最后/的部分,常用于获取文件名)
basename [string] [suffix]  (功能:basename命令会删掉所有的前缀包括最后一个/,然后将字符串显示出来)
suffix为后缀,如果suffix被指定了, basename会将pathname或string中的suffix去掉。

dirname基本语法

dirname 文件绝对路径 (功能描述:绝对路径中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

自定义函数

基本语法

[function] funname (参数){
  Action;
  [return int;]
}
[]表示可有可无
调用直接写函数名: funname [值]

应用实例

#!/bin/bash
#案例:计算输入两个参数的和,getSum
function getSum(){
        sum=$[$n1+$n2]
        echo "和是=$sum"
}
#输入两个值
read -p "第一个值=" n1
read -p "第二个值=" n2
#调用函数
getSum $n1 $n2

在这里插入图片描述

20.7、数据备份案例

以上是关于Linux学习手册大全的主要内容,如果未能解决你的问题,请参考以下文章

超级便捷:实用Linux命令大全手册+安全的Linux系统下载站

Linux命令行大全

Linux命令大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全