Linux基本命令
Linux基本命令
学习目标
- 了解什么是Linux操作系统?
- 熟练掌握Linux操作系统的环境搭建
- 掌握Linux系统的常用命令
- 掌握在Linux部署开发的环境
1、Linux系统目录结构
1.1、树状目录结构
目录结构如下:与windows系统相比最大不同点在于不分磁盘,Linux操作系统作为系统的根目录。
1.2、目录详解
目录名称 | 功能介绍 |
---|---|
/bin | 存放二进制文件 |
/sbin | 存放二进制文件(可执行文件),只有root用户可以访问 |
/boot | 系统的核心目录,存放系统的启动程序文件 |
/dev | 存放系统的硬件配置文件 |
/etc | 存放系统的配置文件(网络配置) |
/home | 家目录,为每一个用户创建一个独立的目录 |
/lib | 系统的资源文件库 |
/proc | 内存映射目录 |
/var | 临时数据 |
/tmp | 存放临时文件 |
/root | 超级用户管理员对应的家目录 |
/usr | 一般存放安装的程序,共享系统资源 |
2、常用命令
2.1、Shell概念
Shell俗称外壳,提供了一个使用界面的软件(finalShell、xShell…),以命令行的形式来操作Linux系统。
2.2、命令格式
命令格式见下:
命令 [-选项] [参数]
cd # 切换目录
pwd # 打印当前目录
cat # 查看文件
rm -f /home/user/file.txt # 删除此目录下的file.txt文件
2.3、常用命令详解
[user@localhost ~]$
- 这是普通用户
输入命令,进入root用户
su root
[root@localhost user]#
2.3.1、查看目录下文件
命令 | 功能 |
---|---|
ls | list表示显示文件 |
ls(ll) -l | 显示文件详情(创建者,创建时间,权限) |
ls(ll) -a | 显示全部文件包含隐藏文件 |
ls(ll) -la | 显示包含隐藏的文件并以列表展示 |
ls(ll) 目录名 | 查看指定目录下对应的内容 |
2.3.2、查看完整路径
命令 | 功能 |
---|---|
pwd | 获取当前文件的目录结构 |
2.3.3、目录切换
命令 | 功能 |
---|---|
cd .. | 往上一级目录 |
cd dirname | 跳转到指定文件夹目录下 |
cd 或 cd ~ | 直接进入到用户的家目录 |
cd / | 进入到系统的根目录下 |
2.3.4、查看当我用户
命令 | 功能 |
---|---|
whoami | 查看当我用户的名称 |
2.3.5、用户切换
命令 | 功能 |
---|---|
su | 从普通用户切换到root用户 |
su root | 从普通用户切换到root用户 |
su 用户名 | 从root用户切换到指定的普通用户 |
exit | 退出当前用户 |
2.3.6、清屏
命令 | 功能 |
---|---|
clear | 清屏 |
2.3.7、管理用户
命令 | 功能 |
---|---|
useradd 用户名 | 给当前系统添加一个新用户 |
passwd 用户名 | 给当前的用户设置登录密码 |
userdel -r 用户名 | 删除某个指定的用户 |
2.3.8、查看命令的所在目录
命令 | 功能 |
---|---|
which 命令 | 查看当前命令所在路径 |
2.3.9、文件操作
命令 | 功能 |
---|---|
touch 文件名 | 创建文件,存放在当前目录下 |
touch dir/文件名 | 在dir目录下创建文件 |
echo 内容 > 文件名 | 将内容写入此文件里面,若文件不存在则创建 |
echo 内容 >> 文件名 | 将内容追加到文件中 |
cat 文件名 | 查看文件内容 |
more 文件名 | 分屏查看文件各行内容,不支持鼠标上下滚动回看(按回车键往下查看) |
less 文件名 | 分屏查看文件各行内容,支持鼠标上下滚动回看(按上下键进行查看) |
head -n 文件名 | 查看文件的前n行内容 |
tail -n 文件名 | 查看文件的末尾n行内容 |
wc 文件名 | 查看文件的行数 |
2.3.10、目录操作
命令 | 功能 |
---|---|
mkdir 目录名 | 创建普通文件夹 |
mkdir -p 目录/目录/目录 | 递归方式创建多级父子级文件夹 |
mv 目录1 目录2 | 将目录1移动到目录2中 |
mv 目录1/目录2 ./ | 将目录1下的目录2移动到当前目录下 |
mv 目录1 name | 将目录1改名为name |
cp dir name | 将dir拷贝一份,名为name |
cp -r dir1 dir2 | 将dir1拷贝一份,名为dir2 |
rm 文件 | 删除文件 |
rm -r 目录 | 递归删除目录 |
rm -rf 目录 | 强制删除目录/文件 |
2.3.11、查找操作
命令 | 功能 |
---|---|
find / -name passwd | 查找根目录下的passwd文件(passwd为文件完整名称) |
find ./ -name “p” | 查找文件名中包含“p”的文件 |
find ./ -type f 或 find ./ -type d | 查找所有文件或目录 |
grep 内容 文件名 | 从指定文件中查找指定的内容 |
2.3.12、编辑文件
命令 | 功能 |
---|---|
vi / vim 文件名 | 编辑文件 |
基本上vi/vim共分为三种模式,分别是命令模式,输入模式和底线命令模式。这三种模式的作用分别是:
命令模式:通过vi或者vim打开某个待要被编辑的文件,此时是不可以输入内容,即使不可以编辑文件。
输入模式:在命令模式下输入 “i” 键,即进入到输入模式,此时底部回提示一个**“insert”**。按下键盘的ESC键,又进入到命令模式。
底线模式:如果在命令模式下,输入**“:wq”,“:w”、“:q!”**,此命令在底部显示,所以称之为底线模式。
:wq # 保存并退出当前文件 :q # 退出文件(不会保存) :q! # 强行退出文件(不会保存)
2.3.13、进程管理
运行一个程序,就会启动一个进程。
命令 | 功能 |
---|---|
ps | 查看当前终端窗口的进程(PID表示进程号) |
ps -aux | 查看系统中的所有进程 |
ps -ef | 查看进程列表 |
ps -ef | grep 具体要查询的程序名 | 查看指定程序的进程号 |
kill 进程号 | 杀死指定的进程号 |
kill -9 进程号 | 强制杀死指定的进程号 |
2.314、端口开放
–zone=public 表示作用域为公共的
–add-port=443/tcp 添加 tcp 协议的端口端口号为 443
–permanent 永久生效,如果没有此参数,则只能维持当前 服 务生命周期内,重新启动后失效;
firewall-cmd --state | 查看防火墙状态 |
---|---|
systemctl start firewalld.service | 开启防火墙 |
firewall-cmd --zone=public --add-port=3306/tcp --permanent | 开启指定端口 |
systemctl restart firewalld.service | 重启防火墙 |
2.3.15、其他命令
命令 | 功能 |
---|---|
ifconfig | 查看当前系统的IP地址等信息 |
tar -zcvf 压缩文件名.tar.gz 文件路径1 文件路径2… | 实现一组文件或文件夹的打包 |
tar -zxvf 压缩文件名.tar.gz | 实现压缩文件的解压 |
man [章节号] 命令/函数名 | 查询指定的命令或函数 |
3、JDK的下载和安装
1、JDK的下载和安装 官网下载Linux版本即可。
2、将下载好的JDK安装包传输到CentOS系统中。
①、使用Xftp工具上传
②、通过命令方式
scp /文件当前所在路径/文件名 root@ip地址:/上传的位置
第二种方式在windows上的具体操作
window + R 打开命令行
输入scp 找到文件,直接拖进去命令行窗口 root@ip:/上传的具体位置
然后回车,然后输入主机密码,此主机为远程终端的主机。
3、使用tar命令将JDK文件解压到指定目录
# 解压文件到指定的目录下
tar -zxvf 要解压的文件 -C 目标目录
tar -zxvf jdk-8u361-linux-i586-x86.tar.gz -C /usr/
4、配置JDK环境变量。使用root用户编辑/etc/profile配置文件,向profile文件末尾追加内容如下:
# 编辑目录 vim /etc/profile , 追加到最后一行
export JAVA_HOME=/usr/jdk1.8.0_361
export PATH=$JAVA_HOME/bin:$PATH
# 保存退出
5、重新加载配置文件使其生效
source /etc/profile
6、测试JAVA是否安装成功
java -version
4、Tomcat的下载和安装
1、Tomcat的下载和安装 官网下载Linux版本即可。
2、将下载好的JDK安装包传输到CentOS系统中。
①、使用Xftp工具上传
②、通过命令方式
scp /文件当前所在路径/文件名 root@ip地址:/上传的位置
第二种方式在windows上的具体操作
window + R 打开命令行
输入scp 找到文件,直接拖进去命令行窗口 root@ip:/上传的具体位置
然后回车,然后输入主机密码,此主机为远程终端的主机。
3、使用tar命令将JDK文件解压到指定目录
# 解压文件到指定的目录下
tar -zxvf 要解压的文件 -C 目标目录
tar -zxvf apache-tomcat-8.5.85.tar.gz -C /usr/
4、启动和关闭Tomcat
# 进入到bin目录下
cd apache-tomcat-8.5.85/bin
# 在当前目录下启动
./startup.sh
# 在当前目录下关闭
./shutdown.sh
5、测试Tomcat是否启动成功
# 8080是Tomcat默认端口号
访问当前主机下的8080端口 82.157.234.124:8080
注意:上面操作Tomcat只能在局域网内访问,公网访问不了。
6、开放防火墙端口即可
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
7、配置环境变量。使用root用户打开配置文件/etc/profile,向文件末尾追加内容(如果考虑集群则不用配置)。$表示访问的是一个系统中定义的变量。
export TOMCAT_HOME = /usr/tomcat文件全名
export PATH = $TOMCAT_HOME/bin:$PATH
# 保存并退出
:wq
8、验证配置文件是否生效
source /etc/profile
./startup.sh
5、Mysql的下载和安装
检测当前系统是否安装了Mysql数据库
rpm -qa # 查询当前系统中安装的所有软件
rpm -qa | grep mysql # 查询当前系统中安装的名称带mysql的软件
rpm -qa | grep mariadb # 查询当前系统中安装的名称带mariadb的软件
# 移除mariadb-libs
rpm -e --nodeps mariadb-libs
RPM软件包管理器,是红帽Linux用于管理和安装软件的工具
1、在/usr/下创建一个mysql文件夹用来存放mysql。
mkdir mysql
1、在线安装
2、通过wget指令下载mysql的rpm文件。
# 进入到刚刚创建的mysql目录下,输入如下命令
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
3、解压安装包
tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
4、按顺序安装rpm软件包(一共需要六个,一般)
rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm
# 安装一个网络工具
yum install net-tools
rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm
5、启动mysql
systemctl status mysqld # 查看mysql服务状态
systemctl start mysqld # 启动mysql服务
systemctl enable mysqld # 开机启动mysql服务
netstat -tunlp # 查看系统已经启动的服务
6、查看临时密码
cat /var/log/mysqld.log
cat /var/log/mysqld.log | grep password
/var/log/mysqld.log 中找不到临时密码
1.删除原来安装过的mysql残留的数据(这一步非常重要,问题就出在这)
rm -rf /var/lib/mysql
2.重启mysqld服务
systemctl restart mysqld
3.再去找默认密码
cat /var/log/mysqld.log | grep password
7、登录MySQL数据库
mysql -u root -p
# 进入到mysql后,修改临时密码
set global validate_password_length=6; # 设置密码长度最低位数
set global validate_password_policy=LOW; # 设置安全等级低
set password=password('020708'); #设置密码
# 开启访问权限,以便于在本地通过navicat连接到远程的这个mysql数据库。
grant all on *.* to 'root'@'%' identified by '020708';
# 刷新
flush privileges;
2、离线安装
1、在windows下载mysql一下两个安装文件
MySQL-server-5.6.45-1.e17.x86_64.rpm
MySQL-client-5.6.45-1.e17.x86_64.rpm
2、将安装包上传到/usr/mysql目录下
3、清除CentOS自带的mariaDB包。
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs
4、安装mysql的服务和客户端。
rpm -ivh MySQL-server-5.6.45-1.e17.x86_64.rpm
rpm -ivh MySQL-client-5.6.45-1.e17.x86_64.rpm
3、mysql远程连接报Host ‘‘ is not allowed to connect.解决办法
如下步骤:
①、进入mysql
mysql -uroot -p
②、选择mysql表
use mysql;
③、查看哪些主机可以连接
select host from user;
如果没有放开远程连接权限是如下形式

④、输入以下语句,然后回车
update user set host ='%' where user ='root';
⑤、再输入 flush privileges; 进行权限刷新,然后再回去重新启动你的软件就没有问题了
flush privileges;
4、Mysql忘记密码如何取消验证
1、进入配置文件 vim /etc/my.cnf 添加代码 skip-grant-tables 即可跳过mysql密码验证进行登录

2、重启mysql
systemctl restart mysqld
3、重新登录,密码随便填即可进入(回车即可)
4、此时输入 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; 发现修改不了 (注意:密码得复杂点,像123456这样的会提示重新设置复杂的密码)
**ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '@Aaguai123'; **
5、需要先将root密码置空 update user set authentication_string='' where user = 'root';
update mysql.user set authentication_string='' where user = 'root';
6、再执行步骤4即可修改成功
7、flush privileges; 刷新mysql相关系统权限表,退出
flush privileges;
8、进入配置文件 vim /etc/my.cnf 将这行注释 skip-grant-tables 前面加#即可注释
9、重新启动mysql,输入刚才设置的密码进入mysql:
systemctl restart mysqld
错误
第一次安装完mysql,修改默认密码的时候,报“The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement”。
先刷新mysql然后再重新修改密码即可。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
Query OK, 0 rows affected (0.01 sec)
5、查看防火墙端口开放情况
防火墙开启3306端口
systemctl status firewalld
2、查看3306端口状态
firewall-cmd --zone=public --query-port=3306/tcp
3、如果是no,表示关闭,打开3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
4、防火墙重载
firewall-cmd --reload
5、再次查看3306状态
firewall-cmd --zone=public --query-port=3306/tcp
6、redis 7.0安装
①、安装gcc编译环境
yum -y install gcc- c++
②、安装,进入redis目录
make && make install
③、redis客户端和服务端src下

④、修改redis.conf配置文件
- 默认daemonize no 改为 daemonize yes (后台启动)
- 默认protected-mode yes 改为 protected-mode no(关闭验证模式)
- 默认bind 127.0.0.1 改为 直接注释掉(默认bind 127.0.0.1 只能本机访问)或改成本机IP地址,否则影响远程连接
- 添加redis密码 改为requirepass 你自己设置的密码
⑤、启动服务
./redis-server ../redis.conf
7、ElasticSearch安装
安装7.17.6版本
1、安装es
压缩包文件(解压)
tar -zxvf elasticsearch-7.17.6-linux-x86_64.tar.gz
解压后的文件
将文件解压后放入自己的linux服务器,我将文件放到了/usr/local/es
目录下,然后给所有文件及其子文件添加权限
cd /usr/local/es
chmod -R 777 * .
2、创建专用用户
root用户不能直接启动Elasticsearch,所以需要创建一个专用用户,来启动ES
创建用户
- useradd swx
创建所属组:
- chown -R swx ./es
3、修改启动内存
es启动内存默认1g,如果服务器内存不够可以设置默认启动512m
进入config文件夹开始配置,编辑jvm.options:
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/7.17/heap-size.html
## for more information
##
################################################################
-Xms512m
-Xms512m
################################################################
4、修改ES核心配置文件
编辑config目录下的elasticsearch.yml文件
修改日志记录信息
path.data: /usr/local/es/data path.logs: /usr/local/es/logs #不检查安全 xpack.security.enabled: false
修改绑定的ip允许远程访问
#network.host: 192.168.0.1 network.host: 0.0.0.0
5、启动ES
使用刚刚创建的用户启动es
切换用户
- su swx
进入bin目录
- cd /usr/local/es/bin
启动elasticsearch
- ./elasticsearch
后台启动
- ./elasticsearch -d
6、出现错误
注意:正常来说可以启动成功,以下是一些可能会报错的情况
1、vm.max_map_count [65530] is too low问题
在 /etc/sysctl.conf 文件最后添加如下内容,即可永久修改
切换到root用户
- 执行命令:su root
执行命令
- vim /etc/sysctl.conf
添加如下内容
- vm.max_map_count=262144
保存退出,刷新配置文件
- sysctl -p
切换swx用户,继续启动
- su swx
启动es服务(后台启动,如果不想后台启动就不要加-d)
- /usr/local/es/bin/elasticsearch -d
2、可能遇到的max file descriptors [4096]问题
切换到root用户,执行命令:
vi /etc/security/limits.conf
添加内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
3、bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
修改elasticsearch.yml配置文件
etwork.host: 0.0.0.0
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
7、配置ES自己的jdk
elasticsearch默认启用时首先找系统安装的jdk,如果没有安装jkd的话就使用es自带的jdk。 如果系统没有安装jdk的话就不需要配置jdk,es会启用自带jdk。这样的话,就不需要管jdk设置了。 如果系统安装了jkd,反而存在jdk和elasticsearch版本不一致的问题,导致es无法启动
修改配置
在/usr/local/elasticsearch/bin目录下vim elasticsearch-env:大约39至50行定义了jdk的选择方法

# now set the path to java
if [ ! -z "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
JAVA_TYPE="JAVA_HOME"
else
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
fi
JAVA_HOME指系统自己安装的jkd;ES_HOME指 elasticsearch自带的jdk。使用elasticsearch自带的jdk
方法一 取消检查启用自行安装的java,参数为JAVA_HOME

修改为:
# now set the path to java
if [ "$(uname -s)" = "Darwin" ]; then
# macOS has a different structure
JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
else
JAVA="$ES_HOME/jdk/bin/java"
fi
JAVA_TYPE="bundled jdk"
8、项目部署
使用maven将项目打成jar包,然后将jar包放到linux目录中,然后在项目目录中进入终端执行nohup java -jar 项目名.jar &> 项目名.log & 。
项目名.log为项目日志输出