微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux基本命令

Author:Exchanges

Version:9.0.1

目录

一、引言


1.1 开发环境(dev)

外部用户无法访问,开发人员使用,版本变动很大

平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发,在开发环境中安装大量的软件,这样会导致环境的稳定性和安全性降低.

1.2 测试环境(test)

外部用户无法访问,专门给测试人员使用的,版本相对稳定

一般克隆一份生产环境,会将开发环境中的程序部署到测试环境中,这个环境的主要目的是去程序进程检测,收集程序中的各种问题,并交给开发人员进行修改.

1.3 生产环境(prod)

面向外部用户的环境,连接上互联网即可访问的正式环境

是将程序运行在此环境中,供用户去使用。这个环境是有专业的人员去维护,一般人是没有权限去操做生产环境的.

三个环境也可以说是系统开发的三个阶段:开发 --> 测试 --> 上线,其中生产环境也就是通常说的真实环境。

1.4 操作系统的选择

生产环境中,常用的操作系统有Windows 2003 service,Linux,Unix等等,Linux操作系统,在生产环境中占据了大量的市场份额,Linux主要以稳定,可靠,免费的特点成为全球使用最多的服务器操作系统。

Linux操作系统现在已经成为后台开发人员必备的技能,并且后期学习的各种知识都会涉及到Linux操作系统。

二、Linux介绍


2.1 Linux介绍

在Linux操作系统出现之前,还有一个操作系统叫做Minix,Minix操作系统是由Andrew的大学教授研发出来的,当时大学教授是为了给学生上课,买了一套Unix操作系统,参考Unix自己写了一个操作系统,并且命名为Minix。同时将Minix开源,供学校内部的研究和教学,到了2000年,Andrew将Minix操作系统完全对外开源。

Minix由于完全对外开源之后,在互联网上迅速的传播,但是大家在使用时,发展Minix不时很完美,内部存在各种各样问题。用户问题解决后,编写了一个补丁,将补丁以邮件的方式发给Andrew,但是Andrew教授最初的目的只是为了教学和研究。

于此同时,一位芬兰的大学生出现了,叫Linus,在Minix操作系统基础上,自己添加了一些补丁和插件,并将其命名为Linux操作系统,并且完全对外开源,而且开始维护Linux操作系统。

之前学习的Git也时Linus研发的。

Linus Torvalds 和 Linux

2.2 Linux的版本

Linux的版本分为两种,一种是Linus团队正在维护的开源内核版本。另一种是一些厂商基于内核版本封装的发行版本。

  • Linux的内核版本官网:https://www.kernel.org/

  • Linux的发行版本,咱们需要学习的发行版本就时CentOS

Linux的常见发行版本

2.3 Linux和Windows区别

  • Linux是严格区分大小写的,Windows无所谓。
  • Linux中一切皆是文件
  • Linux中文件是没有后缀的,但是他有一些约定俗成的后缀。
  • Windows下的软件一般是无法直接运行的Linux中。

Ps:我们在学习Linux时,参考Windows下做了什么,就在Linux中做什么

三、Linux安装


安装Linux,我们需要一个虚拟机,为了安装虚拟环境:VMware或者Virtual Box(采用VMware)

因为Linux也是一个系统,本质上跟我们电脑的Window没有区别,我们可以在我们电脑上安装一个软件,这个软件可以模拟一台或多台虚拟的电脑机器,这就是虚拟机。

​ 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机(Parallels Desktop ,Vmware,VirtualBox,Virtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动windows系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且虚拟机需要模拟底层的硬件指令,所以在应用程序运行速度上比虚拟系统慢得多。流行的虚拟机软件有VMware(VMWare ACE)、Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出多个计算机

3.1 安装VMware,Xshell,FileZilla

VMware 可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就像标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。 使我们可以在同一台PC机上同时运行Windows 、Linux、FreeBSD……可以在使用Linux的同时,即时转到Windows中运行Word。如果要使用Linux,只要轻轻一点,又回到Linux之中。就如同你有两台计算机在同时工作。实现的工具就是:虚拟计算平台——Vmware。

3.2 在VMware中安装Linux

参考安装图解

四、Linux的目录结构


/ 根目录

/bin:是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:存放的是启动Linux时使用的一些核心文件包括一些连接文件以及镜像文件

/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的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:存放一些服务启动之后需要提取的数据。

/sys:linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs,sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:是用来存放一些临时文件的。

/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:系统用户使用的应用程序。

/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码认的放置目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件

五、Linux的命令


5.1 常用命令

Ctrl + C 停止当前进程

Ctrl+L 清屏

ifconfig 查看ip地址

Tap 补全

5.2 目录切换命令

cd切换目录

​ cd /usr 切换到usr目录

​ cd .. 切换到上一层目录

​ cd ../.. 跳到目前目录的上上两层

​ cd / 切换到系统根目录

​ cd ~ 切换到用户主目录(root)

​ cd - 切换到上一个所在目录

5.3 目录操作命令
  pwd	显示当前目录

  ​	ls	查看该目录下的所有的目录和文件

  ​	ls -a	查看该目录下的所有文件和目录,包括隐藏目录

  ​	ls -l	查看该目录下的所有目录和文件的详细信息(ls -l 可以缩写成ll)

  ​	ls -al	查看该目录下的所有目录(包括隐藏目录)和文件的详细信息

  ​	ls -l |grep xxx	 查看筛选后的目录和文件的详细信息
5.4 vi/vim编辑器 【重点】

首先切换到桌面:[root@localhost ~]# cd /root/桌面

​ 拷贝系统中的文件做练习:[root@localhost 桌面]# cp /etc/kdump.conf a.conf

​ 分别使用vi和vim测试,vim对文件中注释的内容会改变其颜色,退出文件编辑输入 :q 然后回车即可

​ [root@localhost 桌面]# vi a.conf

​ [root@localhost 桌面]# vim a.conf

vim的三种模式:命令模式 输入模式 底线命令模式

进入到文件中以后认就是命令模式

:set nu 显示行号

:set nonu 隐藏行号

dd 删除当前行

u 撤销当前操作

yy 复制

p 粘贴

shift+g 光标移动至文件末尾

输入N,然后shift+g 光标移动到第N行

进入到文件中以后输入i/a/o进入输入模式

i 光标前编辑

a 光标后编辑

o 光标移至下一行编辑

[Esc] 退出编辑模式

编辑完成之后,点击[Esc],然后 shift+: 进入底线命令模式

:q! 强制退出修改内容,不保存)

:wq 保存并退出

5.5 文件操作命令

mkdir xxx 创建单个目录

mkdir -p x/y/z 创建多级目录

touch xxx 创建文件

vim xxx 创建文件并编辑

rmdir xxx 删除空目录

rm -rvf xxx 不会询问,显示删除信息

rm -rf xxx 不会询问,不显示删除信息

cp xxx(被复制文件) xxx(复制到某个位置) 拷贝文件

cp -rv xxx xxx 连同子目录一起拷贝,并显示信息

mv xxx(源文件名) xxx(新文件名) 重命名

mv xxx /目录名 移动xxx文件到某个位置(如果只有一个目录不用加 / )

cat xxx 查看文件,一般查看较小的文件

more xxx 查看文件,一般查看较大的文件 //回车 和 空格 (显示百分比)

less xxx 和more类似,操作键不同 // 上下键(显示底行命令,q直接退出

tail xxx 从尾部开始查看

tail -N xxx 从尾部查看N行

tail -f xxx 跟随查看,一般用于查看日志( 可以通过echo命令进行测试:echo 内容 >> 文件

find 查找文件或目录

如果没有指定搜索路径,认从当前目录查找

-name 按名称查找,精准查找

-iname 按名称查找,忽略大小写

*:匹配所有

?:匹配单个字符

比如find /etc -name “init???”在目录/etc中查找以init开头的,且后面有三位的文件

5.6 解压文件

tar -zcvf xx.tar.gz xxx.txt 压缩文件

-z 使用gzip压缩

-c 创建压缩文件

-x 解开压缩文件

-v 显示文件信息

-f 指定压缩后的文件

-C /路径名:表示将压缩包解压到指定路径

tar -zxvf xxx.tar.gz 解压缩

5.7 查看进程

ps -aux 查看系统中的进程信息

-a 显示所有进程信息

-u 以用户格式显示进程信息

-x 显示后台进程运行参数

ps -aux|grep xxx 筛选进程

ps -ef 以全格式显示当前所有进程

5.8 关闭进程

kill pid 通过进程pid杀死当前进程

kill -9 pid 强行杀死进程(常用)

例如:在vm上的虚拟机桌面上右键打开终端,然后在Xshell上找到 bash 对应的进程pid

​ 使用 kill 3577 和 kill -9 3577 进行测试

5.9 系统命令

systemctl start 服务名(xxx.service) 启动该服务

systemctl restart 服务名(xxx.service) 重启该服务

systemctl stop 服务名(xxx.service) 停止该服务

systemctl status 服务名(xxx.service) 查看该服务

例如:

systemctl status firewalld.service 查看防火墙

systemctl stop firewalld.service 关闭防火墙

因为防火墙会随着虚拟机开机自动运行,避免麻烦,我们可以永久关闭防火墙

[root@localhost 桌面]# systemctl list-unit-files |grep firewalld 找到防火墙

[root@localhost 桌面]# systemctl disable firewalld.service 关闭防火墙

netstat -anp |grep 8080 查看8080端口是否被占用

5.10 用户以及用户组【了解】

useradd xxx(用户名) 新增用户(创建成功后会在home目录下创建对应文件夹)

passwd xxx(用户名) 设置该用户密码

su - xxx(用户名) 切换至该用户

userdel xxx(用户名删除用户(如果无法删除,需要kill掉当前用户进程再执行)

groupadd xxx(组名) 新增用户

usermod -g xxx(组名) yyy(用户名修改用户用户

groups xxx(用户名) 查看当前用户所在的组

5.11 文件权限命令

文件权限管理:执行ls -l(ll)

第0位:文件类型(d 目录,- 普通文件,l 链接文件

第1-3位:所属用户(所有者)权限,用u(user)表示

第4-6位:所属组权限,用g(group)表示

第7-9位:其他用户(其他人)权限,用o(other)表示

r:代表权限是可读,r也可以用数字4表示

w:代表权限是可写,w也可以用数字2表示

x:代表权限是可执行,x也可以用数字1表示

修改文件/目录的权限的命令:chmod

示例:

修改a.txt的权限为属主有全部权限,属主所在的组有读写权限,其他用户只有读的权限

chmod u=rwx,g=rw,o=r a.txt 或者 chmod 764 a.txt(常用)

注意:root用户是超级用户,不管有没有权限,root都能进行更改, 且不能在root目录下,因为这是root用户独有的目录,使用普通用户进行权限测试,如果想有写的权限必须要先有读的权限。

设置用户以及用户组命令:

chown [ 主 : 组 ] 文件名 :可以改变文件或目录的用户用户组,例如:chown jack:jack test.txt

5.12 软件包安装命令

RPM(Red-Hat Package Manager) Red-Hat软件包管理

rpm –qa 查看已安装软件

rpm –qa|grep xxx 筛选查看已安装软件

rpm -e xxx 卸载已安装软件

rpm -ivh xxx 安装软件

​ -i 安装(install)

​ -v 查看信息

​ -h 查看进度条

例如:可以使用自带的火狐浏览器进行测试

[root@localhost 桌面]# rpm -qa|grep firefox

[root@localhost 桌面]# rpm -e firefox

再次查看

[root@localhost 桌面]# rpm -qa|grep firefox

再次安装,需要下载 firefox对应的版本的 *.rpm 文件(但是需要环境,比较麻烦,一般使用yum方式安装)

[root@localhost Packages]# rpm -ivh firefox-6.0.1-1.2.mga1.x86_64.rpm

[root@localhost Packages]# rpm -qa|grep firefox

YUM(yellowdog updater modified)软件包管理工具

应用yum的好处:

自动解决软件包依赖关系(类似MAVEN)

方便的软件包升级

[root@localhost Packages]# yum list|grep firefox 自动联网查看firefox可用安装包

[root@localhost Packages]# yum install firefox 自动选择安装firefox

六、Linux软件安装【重点


6.1 JDK安装

可直接安装我们的JDK,如有问题再来删除系统自带的openjdk即可(1.7和1.8各有两个)

[root@localhost 桌面]# rpm -qa | grep java 查看系统中认安装的jdk

[root@localhost 桌面]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64

[root@localhost 桌面]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64

[root@localhost 桌面]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64

[root@localhost 桌面]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64

[root@localhost 桌面]# java -version

bash: java: 未找到命令...

把下载好的jdk安装包拷贝到当前虚拟机root目录下,一般我们解压到/usr/local目录下

[root@localhost ~]# tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local

配置环境变量

[root@localhost ~]# vim /etc/profile

在该文件添加如下信息:(建议添加到最后一行)

JAVA_HOME=/usr/local/jdk1.8.0_151
CLAsspATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLAsspATH PATH

立即生效

[root@localhost ~]# source /etc/profile(如果不行可重启虚拟机再次尝试)

再次测试

[root@localhost ~]# java -version

java version "1.8.0_151"

Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

6.2 Tomcat安装

把下载好的tomcat安装包拷贝到当前虚拟机root目录下,一般我们解压到/usr/local目录下

[root@localhost ~]# tar -zxvf apache-tomcat-8.5.23.tar.gz -C /usr/local

在启动tomcat之前记得关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service

切换到tomcat的bin目录

[root@localhost ~]# cd /usr/local

[root@localhost local]# cd apache-tomcat-8.5.23/bin

启动tomcat

[root@localhost bin]# ./startup.sh

关闭tomcat

[root@localhost bin]# ./shutdown.sh

6.3 MysqL安装

CentOS中认安装的是MariaDB,安装完MysqL之后会覆盖MariaDB,由于安装MysqL需要添加很多依赖关系,所以这里使用yum安装.

下载MysqL源安装包

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

.......

2019-10-17 14:37:41 (230 KB/s) - 已保存 “MysqL57-community-release-el7-10.noarch.rpm”

[25548/25548])

-c: 没有那个文件或目录

在 -c 中找不到 URL。

FINISHED --2019-10-17 14:37:41--

Total wall clock time: 7.4s

Downloaded: 1 files, 25K in 0.1s (230 KB/s)

安装MysqL源(如果无法安装,先执行该命令:rm -f /var/run/yum.pid)

[root@localhost ~]# yum -y install MysqL57-community-release-el7-10.noarch.rpm

...........

Running transaction

正在安装 : MysqL57-community-release-el7-10.noarch 1/1

验证中 : MysqL57-community-release-el7-10.noarch 1/1

已安装:

MysqL57-community-release.noarch 0:el7-10

完毕!

安装MysqL

[root@localhost ~]# yum install MysqL-community-server --nogpgcheck

..............

作为依赖被安装:

MysqL-community-client.x86_64 0:5.7.28-1.el7 MysqL-community-common.x86_64 0:5.7.28-1.el7

作为依赖被升级:

openssl.x86_64 1:1.0.2k-19.el7 openssl-libs.x86_64 1:1.0.2k-19.el7

postfix.x86_64 2:2.10.1-7.el7

替代:

mariadb-libs.x86_64 1:5.5.52-1.el7

完毕!

启动MysqL

[root@localhost ~]# systemctl start MysqLd.service

查看MysqL运行状态

[root@localhost ~]# systemctl status MysqLd.service

MysqLd.service - MysqL Server

Loaded: loaded (/usr/lib/systemd/system/MysqLd.service; enabled; vendor preset: disabled)

Active: active (running) since 四 2019-10-17 15:00:59 CST; 26s ago

设置MysqL自启动

[root@localhost ~]# systemctl enable MysqLd

配置MysqL

[root@localhost ~]# vim /etc/my.cnf

在/etc/my.cnf的[MysqLd]中增加如下内容:(建议添加到最后一行)

添加则在设置MysqL新密码时会错

用于设置MysqL的字符集

用于设置MysqL的远程连接

validate_password=off
character_set_server=utf8
skip-name-resolve

重新启动MysqL

[root@localhost ~]# systemctl restart MysqLd.service

此时MysqL已经开始正常运行,不过要想进入MysqL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

[root@localhost ~]# grep "password" /var/log/MysqLd.log

2019-10-17T07:00:52.740835Z 1 [Note] A temporary password is generated for root@localhost: l0hN)kEXugYv

2019-10-17T07:14:54.867706Z 3 [Note] Access denied for user 'root'@'localhost' (using password: YES)

登录MysqL

[root@localhost ~]# MysqL -uroot -p

输入:l0hN)kEXugYv 进入到MysqL

输入初始密码,此时不能做任何事情,因为MysqL认必须修改密码之后才能操作数据库

MysqL> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

如果执行上面语句报错,则表示设置密码不成功,可能是由于密码级别过低,可以输入下面两个命令:

MysqL> set global validate_password_policy=LOW; //设置MysqL的面长度 为最低级别
MysqL> set global validate_password_length=6;//改为密码为6

设置MysqL可以远程访问

MysqL>grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;

此时可以使用我们的数据库客户端工具进行远程连接,如果连接不上,重启MysqL后再测试

测试成功后,退出MysqL

MysqL> exit;
Bye

卸载Yum Repository,否则每次yum操作都会自动更新

[root@localhost ~]# yum -y remove MysqL57-community-release-el7-10.noarch

............

正在删除 : MysqL57-community-release-el7-10.noarch 1/1

验证中 : MysqL57-community-release-el7-10.noarch 1/1

删除:

MysqL57-community-release.noarch 0:el7-10

完毕!

测试远程连接,连接未成功,需要再次关闭防火墙,重启MysqL

关闭防火墙:

systemctl stop firewalld.service

七、部署SSM工程


7.1部署项目到Linux中需要注意一下内容

  • 项目要保证在Windows下是没有问题的,再部署到Linux。

  • 连接线上的数据库代码需要修改成线上数据库的地址

  • 将Maven项目打包

  • 在部署到Linux操作系统中后,测试时查看日志。

    [root@localhost ~]# cd /usr/local
    [root@localhost local]# cd apache-tomcat-8.5.23/
    [root@localhost apache-tomcat-8.5.23]# cd logs
    [root@localhost logs]# tail -f catalina.out

7.2配置项目目录访问

由于之前的项目没有设置访问根路径,现在打war包放在Tomcat下访问会自动解压一个访问根目录

在虚拟机上的Tomcat的conf目录下,修改server.xml,在最后的标签添加如下代码

docBase="guimei" 是项目打war包的名称

配置完毕后,重启Tomcat,访问:虚拟机ip:端口

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐