前言
学习笔记仅供参考
该笔记是作者根据b站狂神说视频以及自己翻阅的一些资料而写
视频连接:狂神Linux视频链接
如果有兴趣的小伙伴可以前去观看
如果购买过服务器的话,可以直接使用宝塔进行傻瓜式安装,解放双手!!!
文章目录
Linxu基础使用
1、入门概述
学习方式:
1、认识Linux
Linux 一切皆文件:文件就 读、写(权限)
2、基本的命令
3、软件的安装和部署!(java、tomcat、docker)
4、为什么要学习Linux
Kali Linux:安全渗透测试使用!
5、服务器
在阿里云购买服务器
1、关于安全组的说明:
配置安全组非常重要,自己需要开放什么端口来这里配置就可以了。
2、购买后获取服务器的ip地址,重置服务器密码,就可以远程登录了。
1、获取公网ip地址,外部访问你的ip地址
3、下载XShell工具
由于服务器默认端口号为22端口,这样会造成有被暴力破解密码的风险,因此设置新端口号10022,
为了修改ssh的端口号,我们需要在服务器中进行修改,
1、编辑SSH服务的配置文件,添加一个非22的端口号,比如10022,方法:
vim vi/etc/ssh/sshd_config
2、在这个文件中添加一行port 10022,并且删除当前的22端口号,然后退出并且保存这个文件。
按下esc键然后按 :wq 即可
3、之后重启SSHD这个服务,方法:
输入:systemctl restart sshd.service
之后就可以通过10022端口号进行远程登录了。
登录成功就是如下界面:
上传文件使用xftp即可,这个按钮就是xftp
2、配置Linux环境
1、配置jdk1.8
1、解压jdk1.8
$ tar -zxvf jdk-8u291-linux-x64.tar.gz
2、创建文件夹
我们要将解压后的【jdk1.8.0_291】里面的所有数据移动到我们需要安装的文件夹当中,我们打算将jdk安装在usr/java当中,我们在usr目录下新建一个java文件夹
mkdir /usr/java
3、移动jdk到java文件夹中
将【jdk1.8.0_291】里的数据拷贝至java目录下
mv /home/jdk1.8.0_291 /usr/java
4、修改环境变量
至此,我们最后需要修改环境变量,通过命令
vim /etc/profile
用vim编辑器来编辑profile文件,在文件末尾添加一下内容(按“i”进入编辑):
export JAVA_HOME=/usr/java/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
然后,保存并退出(按:wq!)
保存完之后,我们还需要让这个环境变量配置信息里面生效,要不然只能重启电脑生效了。
通过命令source /etc/profile让profile文件立即生效,如图所示
5、、测试是否安装成功
①、使用javac命令,不会出现command not found错误
②、使用java -version,出现版本为java version “jdk1.8.0_291”
③、echo $PATH,看看自己刚刚设置的的环境变量配置是否都正确
如图所示:
至此,安装结束
卸载java环境
rpm -ga|grep jdk //检测jdk版本信息
rpm -e --nodeps [jdk名字]
安装
rpm -ivk rpm包
2、安装Tomcat
1、解压包
$ tar -zxvf apache-tomcat-8.5.69.tar.gz
2、修改包名为tomcat8
mv apache-tomcat-8.5.69 tomcat8
3、移动tomcat8到usr/local文件夹
mv /home/tomcat8 /usr/local
4、配置环境变量
vim /etc/profile
5、添加环境变量
export TOMCAT_HOME=/usr/local/tomcat8
export CATALINA_HOME=/usr/local/tomcat8
6、通过命令source /etc/profile让profile文件立即生效,如图所示
source /etc/profile
7、启动tomcat
./startup.sh
3、使用宝塔面板安装(重点)
宝塔面板使用官方教程
在xshell中输入下列代码进行安装宝塔
如果是centos系统直接使用下列代码安装即可
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
如果是Ubuntu使用下列代码即可
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
如果是上述其他的,具体请看官方教程
直接安装成功
直接通过宝塔面板安装最省时省力
遇到的问题:
解决方法:在SSH终端输入以下一种命令来解决
1.查看面板入口:/etc/init.d/bt default
2.关闭安全入口:rm -f /www/server/panel/data/admin_path.pl
3、走进Linux
1、开机登录
开机会启动很多程序。他们在Windows叫做“服务”(service),在Linux就叫做“守护线程“(daemon)。
开机成功后,他会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传输给login程序来验证用户的身份,密码是不显示的,输完回车即可!
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
最高权限账户为root,可以操作一切!!
2、关机
在Linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非在特殊情况下,才不得已关机。
关机指令为:shutdown
sync #将数据由内存同步到硬盘中。
shutdown #关机指令,你可以man shutdown 来看一下帮助文档。
shutdown -h 10 # 这个指令告诉大家,计算机将在10分钟后关机
shutdown -h now #立马关机
shutdown -h 20:25 #系统将在20:25关机
shutdown -h +10 #十分钟后关机
shutdown -r now #系统立马重启
shutdown -r +10 #系统十分钟后重启
reboot #就是重启,等同于shutdown -r now
halt #关闭系统,等同于shutdown -h now
总结:不管是重启系统还是关闭系统,首先要运行sync命令,吧内存中的数据写到磁盘中。
在Linux中如果没有输出,就代表的成功。
3、系统目录结构
1、一切皆文件
2、根目录 / ,所有的文件都挂在在这个节点上
ls /
以下是对这些目录的解释:
- /bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。
- /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev:dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里面的内容了。
- /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /srv:该目录存放一些服务启动之后需要提取的数据。
- /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs。
- /tmp:这个目录是用来存放一些临时文件的。用完即丢的文件可以放在这里,安装包
- /user:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /user/bin:系统用户使用的应用程序。
- /user/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
- /user/src:内核源代码默认的放置目录。
- /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
- /www:存放服务器网站相关的东西
4、常用的基本命令☆
1、目录管理
绝对路径、相对路径
cd :切换目录命令
./ :当前目录
cd .. :返回上一级目录
ls :列出当前目录下的所有文件
参数:
-a 参数:all,查看全部的文件,包括隐藏文件
-l 参数:列出所有的文件,包括文件的属性和权限,没有隐藏文件
所有的linux命令都可以组合使用
如果你想看到所有的文件信息,包括隐藏文件的文件信息可以使用组合参数,
cd 命令 切换目录
cd 目录名(绝对路径,绝对路径都是以/开头的,相对路径)
cd ~ :回到当前的用户目录
pwd :打印当前目录
创建目录的基本方法
mkdir :创建文件夹
mkdir -p :采用递归的方法,创建多级目录
删除目录
rmdir [文件夹名]:移除一个空目录,无法删除多级目录
rmdir -p [多级文件夹路径] :删除一个多级目录,文件夹必须为空
复制文件到指定目录
cp [当前文件名] [要复制的文件夹]:复制文件到指定目录
如果已经存在了,可以选择覆盖
[root@iZwz967ax5d1xzi4imlmmhZ test1]# cp 2.txt test2
cp: overwrite 'test2/2.txt'? y
移除目录或文件
rm [文件名(目录名)]:删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
命令参数:
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 输出版本信息并退出
可以使用组合参数 -rf 直接删除文件夹包括其中的文件
删库跑路:rm -rf /
移动文件或目录!!
mv :移动文件或目录,还可以重命名文件
命令参数:
-f 强制移动
-u 只替换已经更新过的文件
2、基本属性
看懂文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组,如:
实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
第一列
在第一列中,第一个字符代表这个文件是目录、文件或链接文件等等:
- 当为[d]则是目录
- 当为[-]则是文件
- 若是[l]则表示为连接文档(link file)
- 若是[b]则表示为装置文件里面的可供存储的接口设备(可随机存取装置)
接下来的字符中,以三个为一组,且均为『rwx』的三个参数的组合。
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ ×]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)︰
从左至右用O-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中:
第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"∵"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用""字符表示,则没有执行权限。
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,boot 文件是一个目录文件,属主和属组都为root。
第二列
数字代表的是文件中含有文件的个数
第三列
所属的主
第四列
所属的用户组
第五列
文件大小
第六列
创建时间
第七列
因为开头为 l 所以是个连接,这个bin(文件名)指向usr/bin
在以上实例中,boot 文件是一个目录文件,属主和属组都为root。
3、修改文件属性
1、chgrp :更改文件属组
chgrp [-R] 属组名 文件名命令参数: -R:递归更改文件属组,就是在更改某个文件的数组时,如果加上-R的参数,那么改目录下的所有文件的数组都会更改
2、chown :更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名chown [-R] 属主名:属主名 文件名
3、chmod :更改文件9个属性
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据∶文件的权限字符为︰『-wxrwxrwx』,这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
可读可写不可执行 rw- 6
可读可写可执行 rwx 7
每种身份(owner/group/others)各自的三个权限(rlw/x)分数是需要累加的,例如当权限为︰[-wXrWx–]分数则是∶
- owner = rwx = 4+2+1=7
- group = rwx = 4+2+1=7
- others = — = 0+0+0 = 0
chmod 770 filename
4、文件内容查看
Linux系统中使用以下命令来查看文件的内容︰
- cat 由第一行开始显示文件内容
-
tac 从最后一行开始显示,可以看出tac是cat的倒着写!
-
nl 显示的时候,顺道输出行号!看代码的时候,希望显示行号
-
more 一页一页的显示文件内容,使用空格键进行翻页!
-
less 与 more类似,但是比more更好的是,他可以往前翻页,(使用空格键进行翻页,上下键代表翻动页面!按Q命令离开,使用 / 来向下查找想要查找的字符串,?向上查询想要查询的字符串,n继续下一个大写往上查询,小写往下查询)
-
head 只看头几行,-n参数代表行数
-
tail 只看尾巴几行
你可以使用man [命令]来查看各个命令的使用文档,如 : man cp。
网络配置目录:cd /etc/sysconfig/network-scripts
ifcfg-eth0 默认的网络配置文件
ipconfig windows命令:查看windows网络配置
ifconfig 命令:查看网络配置
5、硬链接与软链接
Linux的链接分为两种:硬链接、软连接!
硬链接:A----B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要的文件上去,防止误删!
硬链接是新的目录条目,其引用系统中的现有文件。文件系统中的每一文件默认具有一个硬链接。为节省空间,可以不复制文件,而创建引用同一文件的新硬链接。新硬链接如果在与现有硬链接相同的目录中创建,则需要有不同的文件名,否则需要在不同的目录中。指向同一文件的所有硬链接具有相同的权限、连接数、用户/组所有权、时间戳以及文件内容。指向同一文件内容的硬链接需要在相同的文件系统中。
新硬链接创建后,无法区别哪一现有硬链接是原始链接。即使原始链接被删除,使用新的硬链接依然可以访问原内容。
软连接:软连接就相当于Window下的快捷方式,删除源文件,快捷方式就访问不了了!
创建连接使用ln
命令
硬链接:ln [文件名] [文件名]:源文件,创建的硬链接文件软连接:ln -s [文件名] [文件名]:源文件,快捷键
touch
命令创建文件
echo
:输入字符串
echo "字符串" >> [指定的文件] :向文件中输入字符串
如果将源文件删除的话:
会出现以下结果:
硬链接内容不变,可以正常访问;软连接无法找到源文件!!并且变红
6、Vim编辑器
vim可以通过一些插件是可以实现IDE一样的功能!
Vim是从 vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.简单的来说,vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
vim 则可以说是程序开发者的一项很好用的工具。
1、Vim键盘图:
2、三种使用模式
基本上vivim 共分为三种模式,分别是命令模式(Command mode ),输入模式( Insert mode)和底线命令模式(Lastline mode )。这三种模式的作用分别是︰
命令模式
用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i
,并不会输入一个字符,i
被当作了一个命令以下是常用的几个命令:
i
:切换到输入模式,以输入字符。×
:删除当前光标所在处的字符。:
:切换到底线命令模式,以在最底一行输入命令。如果是编辑模式,需要先退出,按ESC键即可。
若想要编辑文本:启动Vim,进入了命令模式,按下i
,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键︰
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESc,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号)︰
q
退出程序w
保存文件
按ESC键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
完整的vi/vim工作模式
3、Vim 按键说明
除了上面简易范例的i,Esc,:wq之外,其实vim还有非常多的按键可以使用。
1、一般模式可用的光标移动
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或向下箭头键(↓) | 光标向下移动一个字符 |
k 或向上箭头键(↑) | 光标向上移动一个字符 |
i 或向右箭头键(→) | 光标向右移动一个字符 |
[ctrl]+[f] | 屏幕『向下』移动一页,相当于[Page Down]按键(常用) |
[ctrl]+[b] | 屏幕『向上』移动一页,相当于[Page up]按键(常用) |
[Ctrl]+[d] | 屏幕『向下』移动半页 |
[ctrl]+[u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n<space> | 那个n表示『数字』,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符。 |
0 或功能键[Home] | 这是数字『0』:移动到这一行的最前面字符处(常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n为数字。移动到这个档案的第n行。例如20G则会移动到这个档案的第20行(可配合:set nu) |
gg | 移动到这个档案的第一行,相当于1G啊!(常用) |
n+[Enter] | n 为数字。游标向下移动 n 行 (常用) |
2、搜索与取代
按键 | |
---|---|
/word | 在当前游标所在位置往下寻找关键字为 word 的字符串 (常用) |
?word | 在当前游标所在位置往上寻找关键字为 word 的字符串 |
n | 这里的 n 是按键 n。代表重复前一个搜索动作 |
N | 这里的 N 是按键 N。功能与 n 相反,代表反向执行前一个搜索动作 |
:n1,n2s/word1/word2/g | n1 与 n2 都为数字,表示行数。可在第 n1 行与第 n2 行之间寻找 word1 字符串,并替换为 word2 (常用) |
:1,$s/word1/word2/g | 表示从第一行到最后一行,将 word1 字符串替换为 word2 (常用) |
:1,$s/word1/word2/gc | 表示从第一行到最后一行,也是将 word1 字符串替换为 word2,不同之处是在替换前显示提示字元,由用户确认是否最终替换 (常用) |
* 使用 /word 的同时,配合使用 n 或者 N,搜索可以变得很方便
3、删除、复制以及粘贴
按键 | 说明 |
---|---|
[Del] 或 x | 向后删除一个字元 (常用) |
X | 向前删除一个字元 (常用) |
nx | n 为数字,表示连续向后删除 n 个字元 |
dd | 删除游标所在的那一行 (常用) |
ndd | n 为数字,删除游标所在的那一行往下数 的 n 个行 (常用) |
d1G | 删除游标所在的那行到第一行的所有数据 |
dG | 删除游标所在的那行到最后一行的所有数据 |
d$ | 删除游标所在处到该行的最后一个字元 |
d0 | 是数字 0,删除游标所在处到该行的第一个字元 |
yy | 复制游标所在的那一行 (常用) |
nyy | n 为数字, 复制游标所在的那一行往下数 n 行 (常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制游标所在的字元到该行行首的所有数据 |
y$ | 复制游标所在的字元到该行行尾的所有数据 |
p | 将已复制的数据粘贴在游标所在的那一行的下一行 (常用)原来游标所在的那一行会被推后一行 (常用) |
J | 将游标所在的行与下一行的数据合并为一行 |
u | 撤销前一个操作 (常用) |
[ctrl]+r | 重做上一个被撤销的操作 (常用) |
. | 这是小数点,表示重复前一个操作 (常用) |
4、一般指令模式切换到编辑模式
按键 | 说明 |
---|---|
i | 进入插入模式;从目前游标所在处插入 |
I | 进入插入模式;从目前游标所在行的第一个非空白字元处插入 (常用) |
a | 进入插入模式;从目前游标所在处的下一个字元开始插入 |
A | 进入插入模式;从目前游标所在行的最后一个字元开始插入 (常用) |
o | 是字母,表示进入插入模式;从目前游标所在行的下一行处插入新的一行 |
O | 是字母,表示进入插入模式;从目前游标所在行的上一行处插入新的一行 (常用) |
r | 进入取代模式;只会取代游标所在的那个字元一次 |
R | 进入取代模式;会一直取代游标所在的文字,直到按下 [Esc] 为止 (常用) |
[Esc] | 从编辑模式返回到一般指令模式 (常用) |
在左下角处看到 INSERT 或 REPLACE 时,才表示已经进入编辑模式。
5、一般指令模式切换到指令列模式
按键 | |
---|---|
:w | 将编辑的文件写入硬盘 (常用) |
:w! | 如果文件为只读状态,可以强制写入硬盘,是否写入成功,与你所拥有的文件权限有关 |
:q | 离开 vi (常用) |
:q! | 即使文件未保存,仍强行离开 vi |
:wq | 文件写入硬盘后(即保存)离开 vi (常用) |
:wq! | 文件强制写入硬盘后(即保存)离开 vi |
ZZ | 大写字母 Z,如果文件没有修改,则直接离开;如果文件被修改,则保存后离开 |
:w[filename] | 将当前文件另存为另一个文件,这个新文件的保存路径为当前路径 |
:r[filename] | 在当前文件中读入另一个文件的数据,插入到当前游标所在列的后面 |
:n1,n2 w [filename] | 将第 n1 行到第 n2 行的数据储存为新的文件 |
:! command | 暂时离开 vi 到指令列模式下执行 command 的显示结果 |
! 表示强制执行
6、vim 特有功能
6.1区域选择
按键 | 说明 |
---|---|
v | 字符选择,移动游标,游标经过的地方会反白选择 |
V | 行选择,移动游标,游标经过的行会反白选择 |
[Ctrl]+v | 区块选择,移动游标以长方形方块的方式反白选择 |
y | 复制反白选择的地方 |
d | 删除反白选择的地方 |
p | 将之前复制的区块,粘贴在游标所在处 |
6.2 多文件编辑
按键 | 说明 |
---|---|
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出 vim 所打开的所有文件 |
使用 vim a.txt b.txt … 指令,就能一次打开多个文件
6.3多视窗
按键 | 说明 |
---|---|
:sp [filename] | 开启一个新视窗。如果有加 filename,表示是在新视窗开启一个新文件;否则,表示两个视窗为同一个文件的内容(即同步显示) |
[ctrl]+w+向下方向键 | 先按下[ctrl]不放,然后再按下 w 后放开所有按键,最后再按下向下方向键,游标就会移动到下方的视窗 |
[ctrl]+w+向上方向键 | 按键方法同上,游标会移动到上方的视窗 |
[ctrl]+w+q | 关闭当前游标所在的视窗 |
6.4补齐
按键 | 说明 |
---|---|
[ctrl]+x -> [ctrl]+n | 依据目前正在编辑的文件内容作为关键字,予以补齐(语法依据副档名) |
[ctrl]+x -> [ctrl]+f | 依据当前目录下的文件名,予以补齐 |
[ctrl]+x -> [ctrl]+o | 以副档名作为语法关键字,予以补齐 |
6.5 环境设定参数
按键 | 说明 |
---|---|
:set nu | 设定行号 |
:set nonu | 取消行号 |
:set hlsearch | 搜索到的关键字反白显示 (默认) |
:set nohlsearch | 搜索到的关键字取消反白显示 |
:set autoindent | 自动缩排 (默认) |
:set noautoindent | 不自动缩排 |
:set backup | 自动存储备份档(备份档名为 filename~) |
:set ruler | 显示右下角状态说明 |
:set showmode | 显示左下角状态说明(比如 INSERT) |
:set backspace=(012) | 倒退键设置;2:可以删除任意值;0 或者 1,仅可删除刚刚输入的字符,无法删除原来就存在的字符 |
:set all | 显示所有环境参数设定值 |
:set | 显示与系统默认值不同的设定值 |
:syntax on | 开启语法着色 |
:syntax off | 关闭语法着色 |
:set bg=dark | 开启语法着色深色方案 |
:set bg=light | 开启语法着色浅色方案 (默认) |
7、账号管理
一般在公司中使用的都不是root账户!
简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面︰
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
属主,属组
添加用户
useradd :添加用户
useradd -选项 用户名
选项:
-c :comment 指定一段注释性描述
-d :目录 指定用户主目录,如果此目录不存在则同时使用m选项,可以创建主目录。
-g 用户组 :指定用户所属的用户组。
-G 用户组 :指定用户所属的附加组
-m :使用者目录如不存在则自动建立 /home/用户名
-s Shell文件 指定用户的登录Shell
-u 用户号 : 指定用户的用户名,如果同时有-o选项,则可以重复使用其他用户的表示号。
用户名:
指定先后在那个户的登录名
Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入了用户的信息了! /etc/passwd
删除用户
userdel -r [用户名]:删除用户,并且删除目录
-r 的作用:把用户的主目录一起删除
修改用户
usermod
修改用户 usermod 对应修改的内容 修改哪个用户
usermod [选项] [用户名]:
选项:包括 -c,-d, -m, -g, -G, -s, -u以及-o等
这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
修改完毕之后查看配置即可!!
切换用户
1、切换用户的命令为: su username 【username是你的用户名哦】
⒉、从普通用户切换到root用户,还可以使用命令 : sudo su
3、在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4、在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
$表示普通用户
#表示超级用户,也就是root用户
更改主机名字
hostname [想要更改的名称]修改完毕之后,需要重启连接
设置密码
设置密码: passwd 用户名在设置时,直接正常输入即可,Linux不会显示密码
如果是超级用户的话:
passwd username:new password:re password:
如果是普通用户的话:
passwd(current)UNIX password: [输入当前密码]new password:re password:
锁定账户
root,比如张三辞职了!冻结这个账号,一旦冻结,这个人就登录不上系统了
passwd -l [用户名]
一旦执行这个用户,这个用户就不能登录了
passwd -d [用户名]
没有密码也不能登录
passwd -u [用户名]
解锁
passwd -S [用户名]
查看用户状态
拓展:用户管理
/etc/passwd
完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd,/etc/shadow,letc/group等。
下面分别介绍这些文件的内容。
/etc/passwd文件是用户管理工作涉及的最重要的一个文件。
Linux系统中的每个用户都在letc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。他的内容类似下面的例子
# cat /etc/passwd
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:996:993:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
cockpit-ws:x:995:991:User for cockpit-ws:/:/sbin/nologin
setroubleshoot:x:994:990::/var/lib/setroubleshoot:/sbin/nologin
sssd:x:993:989:User for sssd:/:/sbin/nologin
insights:x:992:988:Red Hat Insights:/var/lib/insights:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:991:987::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
exim:x:93:93::/var/spool/exim:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
www:x:1000:1000::/home/www:/sbin/nologin
mysql:x:1001:1001::/home/mysql:/sbin/nologin
rngd:x:990:986:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
redis:x:1002:1002::/home/redis:/sbin/nologin
kun:x:1003:1003::/home/kun:/bin/bash
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
这个文件中的每一行都代表这一个用户,我们可以从这里看出这个用户的主目录在那里,可以看到属于哪一个组!|
1)"用户名"是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。
为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
2)"口令"一些系统中,存放着加密后的用户口令字。
虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如"“×"或者“*”。
密码已经被加密过了,在/etc/shadow中
3)"用户标识号"是一个整数,系统内部用它来标识用户。
一般情况下它与用户名是—―对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shel等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
4)"组标识号"字段记录的是用户所属的用户组。
它对应着/etc/group文件中的一条记录。
5)"注释性描述"字段记录着用户的一些个人情况。
例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用作finger命令的输出。
8、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
1、创建一个用户组
groupadd [用户组名]参数:-g [id] 指定id,如果不指定,会自动自增cat /etc/group :查看用户组 ,用户组的所有信息都在这
创建完一个组之后可以得到这个组的id,这个id可以指定
2、删除用户组
groupdel [用户组名]
3、修改用户组的权限和名字
groupmod
参数:
-g :切换id
-n [新名字]:切换名字
4、用户切换用户组
#登录当前用户 kun$ newgrp root
9、磁盘管理
df :列出文件系统的整体的磁盘使用量
参数:
-h : 使用mb为单位,默认为字节
du : 检查当前磁盘的空间使用量,千万别再/中使用
参数:
-a :查看因此文件夹
du -sm /* :检查根目录下每个文件所占的容量
umount -f [名字]:强制卸载
10、进程管理
1、在linux中,每一个程序都有自己的一个进程,每一个进程都有一个id号!
2、每一个进程,都有一个父进程!
3、进程可以有两种存在方式:前台!后台运行!
4、一般的话服务都是后台运行的,基本的程序都是前台运行的!
命令
ps命令
ps 查看当前系统中正在执行的各种进程的信息!!
pd [-xx] :
参数:
-a :显示当前终端运行的所有的进程信息
-u :以用户的信息显示进程
-x :显示后台运行进程的参数!
# ps -aux| 查看所有的进程
ps -aux|grep mysql #查看mysql信息
ps -aux|grep redis #查看redis信息
# | 在Linux中这个 | 叫做管道符
A|B :把A命令的结果输出用来操作B命令
# grep 查找文件中符合条件的字符串
ps -ef :可以查看到父进程的信息
ps -ef|grep mysql #看父进程我们一般可以通过目录树结构来查看
pstree -pu
参数:
-p : 显示父id
-u : 显示用户组
结束进程
kill -9 [进程的id]
但是我们写的java代码死循环了,可以结束进程
11、java项目打包
1、在项目能够正常运行时,点击clean
2、然后点击package进行打包到target目录下
3、先确保在本地可以进行运行
4、发布到我们的服务器上,通过xftp上传
5、我们的这个项目需要8080端口开启,那么我们就需要做一下准备工作,查看防火墙是否开启8080端口
firewall-cmd --list-ports
确保防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开发的!
#查看firewall服务状态
systemctl status firewalld
#开启、重启、关闭、 firewalld.service服务
#开启
service firewalld start
#重启
service firewalld restar
# 关闭
service firewalld stop
#查看防火墙规则
firewall-cmd --list-all #查看全部信息
firewall-cmd --list-ports #只看端口信息
#开启端口
开端口命令 : firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙: systemctl restart firewalld.service
命令含义:
--zone #作用域
--add-port= 80/tcp#添加端口,格式为:端口/通讯协议
--permanent#永久生效,没有此参数重启后失效
因为我们需要开启8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
刚添加过端口号之后,我们需要进行防火墙的重启
systemctl restart firewalld.service
具体准备工作
#查询所有的防火墙端口号
firewall-cmd --list-ports
#开启防火墙端口号
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#重启防火墙服务
systemctl restart firewalld.service
6、执行
如果想要以后台方式执行直接使用nohup命令执行
如果想要使用前端方式执行,直接java -jar [项目名]
上传完毕的项目直接购买自己的域名,备案解析过去即可
域名解析后,如果端口是80 - http或者443-https 可以直接访问,如果是9000 8080,就需要通过Apcahe或者Nginx做一下反向代理即可,配置文件即可,十分之简单,大家如果想要上线自己的网站,到目前为止,那么你可以如愿以偿了
12、安装Doker
官网:https://docs.docker.com/engine/install/centos/
1、检测CentOS 8
cat /etc/redhat-release
2、安装我们的准备环境
yum -y install 包名
#yun install 安装命令
#-y 所有提示都为y
yum -y install gcc
yum -y install gcc-c++
3、清除以前的版本!后面根据官网安装即可。
1、移除以前的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
3、安装docker镜像,使用国内的镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、更新yum软件包索引
yum makecache ----centos8
yum makecache fast ----centos7
5、安装Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
6、启动docker
systemctl start docker
如果没有报错则代表docker启动成功
7、测试
docker version
docker run hello-world
docker images
扩展:Vmware使用
快照
保存当前系统信息为快照,随时可以恢复,以防未来系统被你玩坏,就好比游戏中的归档!!
平时我们每配置一个东西就可以拍摄一个快照,保存信息!
本地网络配置
1、需要保证Linux虚拟机和本机处在同一个网段! 计算机网络原理
查看windows ip 配置
ipconfig
Windows网段
10.212.111.1
Linux 也必须配置到 对应的网段 10.212.111.110
cd /etc/sysconfig/network-scripts/
进入这个路径之后,可以看到一个配置文件
vim ifcfg-eno16777736
桥接模式: 10.212.111.110 10.212.111.140
静态的:自己设置ip