跳至主要內容

Linux基本命令

sixkey大约 15 分钟操作系统LinuxLinux

Linux基本命令

学习目标

  • 了解什么是Linux操作系统?
  • 熟练掌握Linux操作系统的环境搭建
  • 掌握Linux系统的常用命令
  • 掌握在Linux部署开发的环境

1、Linux系统目录结构

1.1、树状目录结构

目录结构如下:与windows系统相比最大不同点在于不分磁盘,Linux操作系统作为系统的根目录。

linuxopen in new window

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、查看目录下文件
命令功能
lslist表示显示文件
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密码验证进行登录

5519ae73d919bb93bebaa45a28a340dd.png

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 --skipopen in new window-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下

6b535553bc588c312a73d8d25ea6b81c.png

④、修改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为项目日志输出