与Linux相关的知识点
# 一、Linux
# 查看已开放端口
firewall-cmd --list-ports
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)
# 查看远程端口是否开放
telnet 127.0.0.1 1025//telnet IP 端口号
#查看端口占用
netstat -tunlp | grep 端口号
ps -ef | grep nginx
# 杀死进程
# 查看正在运行的进程
netstat -tpnul
# 查看进程详情
ps aux |grep program_name
# 杀死进程
kill -9 id
# centos7端口策略
1.修改ssh默认登录端口
# 修改port后面的22
vi /etc/ssh/sshd_config
2.防火墙状态
systemctl status firewalld
systemctl start firewalld
systemctl stop firewalld
# 禁止开机自启
systemctl disable firewalld.service
3.端口是否开放
# 指定端口号
firewall-cmd --query-port=6379/tcp
# 所有开放端口
firewall-cmd --list-port
4.添加需要开放的端口
# 添加
firewall-cmd --add-port=123/tcp --permanent
# 载入
firewall-cmd --reload
5.移除指定端口:
firewall-cmd --permanent --remove-port=123/tcp
6.说明
# 作用域
-zone
# 永久生效,没有此参数重启后失效
--permanent
# TOP使用
top:启动top命令
top -c:显示完整的命令行
top -b:以批处理模式显示程序信息
top -S:以累积模式显示程序信息
top -n 2:表示更新两次后终止更新显示
top -d 3:设置信息更新周期为3秒
top -p 139:显示进程号为139的进程信息,CPU、内存占用率等
top -n 10:显示更新十次后退出
默认进入top时,各进程是按照CPU的占用量来排序的。
- 在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况
- 默认单位是
KiB
,使用按键E
可以切换为MiB
、GiB
、TiB
、PiB
、EiB
任务字段介绍
%CPU
:CPU Usage
,自上次屏幕更新以来任务占用的CPU时间份额,表示为总CPU时间的百分比。%MEM
:Memory Usage
,进程使用的物理内存百分比CODE
:Code Size
,可执行代码占用的物理内存量COMMAND
:Command Name or Command Line
,用于显示输入的命令行或者程序名称PID
:Process Id
,任务独立的ID
,即进程ID
PPID
:Parent Process Id
,父进程ID
UID
:User Id
,任务所有者的用户ID
USER
:User Name
,用户名RUSER
:Real User Name
,实际的用户名TTY
:Controlling Tty
,控制终端名称TIME
:CPU TIME
,该任务CPU
总共运行的时间TIME+
:同TIME
,其粒度更细OOMa
:Out of Memory Adjustment Factor
,内存溢出调整机制,这个字段会被增加到当前内存溢出分数中,来决定什么任务会被杀掉,范围是-1000到+1000。OOMs
:Out of Memory Score
,内存溢出分数,这个字段是用来选择当内存耗尽时杀掉的任务,范围是0到+1000。0的意思是绝不杀掉,1000的意思是总是杀掉。S
:Process Status
,表示进程状态信息D
: 不可中断休眠I
:空闲R
:运行中S
:休眠T
:被任务控制信号停止t
:在跟踪期间被调试器停止Z
:僵尸
交互命令
命令 | 功能 |
---|---|
h、? | 帮助信息查看,涵盖所有的快捷键 |
空格、回车按键 | 手动刷新界面信息 |
q、ESC按键 | 退出 |
B | 粗体显示功能 |
d、s | 改变间隔时间 |
E、e | 切换内存显示的单位,从KiB到EiB |
g | 然后输入1-4其中一个数字,选择哪种窗口(1.默认,2.任务,3.内存,4.用户) |
H | 进程、线程显示切换 |
k | 输入PID信息,杀掉一个任务 |
Z | 改变配色 |
P | CPU 占用率大小的顺序排列进程列表 |
M | 以内存占用率大小的顺序排列进程列表 |
# 二、Docker
# ①语法
#查看运行的日志看问题出在哪里
docker logs -f 容器ID
# ②使用
#https://docs.docker.com/engine/install/centos/
##Uninstall old versions
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
##SET UP THE REPOSITORY
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##INSTALL DOCKER ENGINE
sudo yum install docker-ce docker-ce-cli containerd.io
#设置开机自启
sudo systemctl enable docker
#查看运行的日志看问题出在哪里
docker logs -f 容器ID
# 1.安装mysql和redis
docker pull mysql:5.7
#进入容器内部
docker exec -it mysql /bin/bash
#启动容器 -v为挂载文件路径
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7 \
--lower_case_table_names=1
#redis
docker pull redis
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
#开启持久化
echo "appendonly yes" >> /mydata/redis/conf/redis.conf
# 2.安装elasticsearch和kibana
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
# 创建一个保存elasticsearch配置的文件夹
mkdir -p /mydata/elasticsearch/config
# 创建一个保存elasticsearch数据的文件夹
mkdir -p /mydata/elasticsearch/data
# 允许任何远程机器访问
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
# 创建容器并启动
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
##其中elasticsearch.yml是挂载的配置文件,data是挂载的数据,plugins是es的插件,如ik,而数据挂载需要权限,需要设置data文件的权限为可读可写,需要下边的指令。
##chmod -R 777 要修改的路径
##-e "discovery.type=single-node" 设置为单节点
##特别注意:
##-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ 测试环境下,设置ES的初始内存和最大内存,否则会占用全部内存
# 启动kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \
-d kibana:7.4.2
# 3.安装Nginx
随便启动一个nginx实例,复制出配置
docker pull nginx:1.10
docker run -p 80:80 --name nginx -d nginx:1.10
将容器内的配置文件拷贝到/mydata/nginx/conf/ 下
# 方法一
mkdir -p /mydata/nginx/html
mkdir -p /mydata/nginx/logs
mkdir -p /mydata/nginx/conf
mkdir -p /mydata/nginx/conf.d
docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/
docker cp nginx:/etc/nginx/conf.d/default.conf /mydata/nginx/conf.d
#进入容器
docker exec -it nginx /bin/bash
#由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf中
mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
rm -rf /mydata/nginx/conf/nginx
#方法二
mkdir -p /mydata/nginx
##.代表当前目录
docker container cp nginx:/etc/nginx .
mv nginx conf
mkdir nginx
mv conf nginx/
停止和删除容器
docker stop nginx
docker rm nginx
创建新的Nginx,执行以下命令
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-d nginx:1.10
设置开机启动nginx
docker update nginx --restart=always
创建“/mydata/nginx/html/index.html”文件,测试是否能够正常访问
echo '<h2>hello nginx!</h2>' >index.html
# 4.安装Portainer
docker pull portainer/portainer
docker run -p 9000:9000 -p 8000:8000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mydata/portainer/data:/data \
-d portainer/portainer
# 三、MySql安装
# 一、 安装前准备
1、检查是否已经安装过mysql,执行命令
[root@localhost /]# rpm -qa | grep mysql
若已安装,执行
[root@localhost /]# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
再次执行查询命令,查看是否删除
[root@localhost /]# rpm -qa | grep mysql
2、查询所有Mysql对应的文件夹
[root@localhost /]# whereis mysql
mysql: /usr/bin/mysql /usr/include/mysql
[root@localhost lib]# find / -name mysql
/data/mysql
/data/mysql/mysql
删除相关目录或文件
[root@localhost /]# rm -rf /usr/bin/mysql /usr/include/mysql /data/mysql /data/mysql/mysql
验证是否删除完毕
[root@localhost /]# whereis mysql
mysql:
[root@localhost /]# find / -name mysql
[root@localhost /]#
3、检查mysql用户组和用户是否存在,如果没有,则创建
[root@localhost /]# cat /etc/group | grep mysql
[root@localhost /]# cat /etc/passwd |grep mysql
[root@localhost /]# groupadd mysql
[root@localhost /]# useradd -r -g mysql mysql
[root@localhost /]#
4、从官网下载是用于Linux的Mysql安装包
下载命令:
[root@localhost /]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
也可以直接到mysql官网 (opens new window)选择其他版本进行下载。
# 二、 安装Mysql
1、在执行wget命令的目录下或你的上传目录下找到Mysql安装包:mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz 执行解压命令:
[root@localhost /]# tar xzvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
[root@localhost /]# ls
mysql-5.7.24-linux-glibc2.12-x86_64
mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
解压完成后,可以看到当前目录下多了一个解压文件,移动该文件到**/usr/local/mysql** 执行移动命令:
[root@localhost /]# mv mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql
2、在**/usr/local/mysql**目录下创建data目录
[root@localhost /]# mkdir /usr/local/mysql/data
3、更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
[root@localhost /]# chown -R mysql:mysql /usr/local/mysql
[root@localhost /]# chmod -R 755 /usr/local/mysql
4、编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)
[root@localhost /]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
补充说明:
此时可能会出现错误:cannot open shared object file:xxx
出现该问题首先检查该链接库文件有没有安装使用 命令进行核查
[root@localhost bin]# rpm -qa|grep libaio
[root@localhost bin]#
运行命令后发现系统中无该链接库文件
[root@localhost bin]# yum install libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令,此时可能会出现如下错误:cannot open shared object file:xxx
执行如下命令后,再次运行数据库的初始化命令:
[root@localhost bin]# yum -y install numactl
5、运行初始化命令成功后,输出日志如下:
A temporary password xxxx for root@localhost:xxx
记录日志最末尾位置**root@localhost:**后的字符串xxx,此字符串为mysql管理员临时登录密码。
6、编辑配置文件my.cnf,添加配置如下
[root@localhost bin]# vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1
7、启动mysql服务器
[root@localhost /]# /usr/local/mysql/support-files/mysql.server start
如果出现如下提示信息
Starting MySQL... ERROR! The server quit without updating PID file
查看是否存在mysql和mysqld的服务,如果存在,则结束进程,再重新执行启动命令
#查询服务
ps -ef|grep mysql
ps -ef|grep mysqld
#结束进程
kill -9 PID
#启动服务
/usr/local/mysql/support-files/mysql.server start
8、添加软连接,并重启mysql服务
[root@localhost /]# ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
[root@localhost /]# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
[root@localhost /]# service mysql restart
9、登录mysql,修改密码(密码为步骤5生成的临时密码)
[root@localhost /]# mysql -u root -p
# mysql>set password for root@localhost = password('yourpass');
mysql>SET PASSWORD = PASSWORD ('your new password');
mysql>ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql>flush privileges;
10、开放远程连接
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
11、设置开机自动启动
# 1、将服务文件拷贝到init.d下,并重命名为mysql
[root@localhost /]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 2、赋予可执行权限
[root@localhost /]# chmod +x /etc/init.d/mysqld
# 3、添加服务
[root@localhost /]# chkconfig --add mysqld
# 4、显示服务列表
[root@localhost /]# chkconfig --list
# 三、注意事项
- 初始化密码忘记
# 在[mysqld]下加入跳过验证 skip-grant-tables
vi /etc/my.cnf
# 重启
service mysql restart
mysql -u root -p
# 修改密码
mysql> UPDATE mysql.user set authentication_string=password('123456Aa@') where user='root';
# 初始化密码
mysql> alter user 'root'@'localhost' identified by 'root';
# 注释或删掉 skip-grant-tables 重启mysql
- ERROR 2002 (HY000): Can’t connect to local MySQL server through socket (opens new window) ‘/tmp/mysql.sock’ (2)
[root@localhost /]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
# 四、JDK安装
解压安装包到/usr/local/java/
tar -xvf /home/xxx/tool/jdk-8u271-linux-x64.tar.gz -C /usr/local/java/
配置环境变量
#root用户下 vim /etc/profile # 普通用户下 cd ~ vim .bash_profile
编辑环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_271 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JRE_HOME=$JAVA_HOME/jre
刷新环境变量
source /etc/profile source .bash_profile