一、常用Linux系统命令

常用快捷键

#Xshell 命令exit退出登录后快捷键登录
ctrl+shift+R

命令集合

reboot #重启电脑 
poweroff #关机
ssh 192.168.30.10 #SSH登录命令
exit #SSH退出登录命令
free -h  #显示系统的内存使用情况,并以人类可读的格式(human-readable format)展示。
last #显示最近登录到系统的用户列表。
cat /etc/hosts #查看文件
vi|vim /etc/hosts #编辑文件
 i 进入编辑模式
 esc 退出编辑模式,切换到命令行模式
 dd 删除一行
 wq! 保存编辑的文件内容,并退出
 q! 不保存编辑的内容,并直接退出vi 编辑器
 :set nu #显示行号
 :/Service #全文件搜索(然后按 n健 查找下一个)
 :set paste #按回车健(进入粘贴模式)
 #cat 查看文件内容
cat /etc/os-release #查看系统信息 
cd ~ 跳转到根目录
cd .. 跳转到当前目录
cd - #上一目录,当前目录 反复跳转
ls 当前目录下文件列表
ls -R #递归列出文件和目录下文件
mkdir #创建目录
rmdir #删除空文件夹
sudo rm -rf jdk1.8.0_401 #删除文件夹权限不足时
rm #删除文件
rm -f #强制删除
rm -r #删除目录
rm -rf #强制删除目录
touch #创建空文件
cp #复制

#远程拷贝文件check_nginx.sh到192.168.0.32的keepalived目录
scp /etc/keepalived/check_nginx.sh 192.168.0.32:/etc/keepalived/ 

mv #移动
cat #查看文件内容
less #常用于查看内容量较大的文件,可以分页显示文件内容
head #用来显示文件开头部分内容,默认显示文件开头10行内容
tail #用来显示文件末尾部分内容,默认显示文件末尾10行内容
more #用于分页显示文本文件的内容。
pwd(pring work directory) #显示当前所在目录完整路径名称 
ip a #查询所有网卡、名字
free #系统的内存使用情况,包括物理内存、交换空间等
df #显示磁盘空间的使用情况
sed #是一个流编辑器,用于对输入流(文件或管道)进行基本的文本转换
chmod +x #改变文件或目录的权限
chown #改变文件目录归属
#执行脚本的两种方式:
bash sysconfigure.sh #a、使用bash解释器 执行脚本
./sysconfigure.sh #b、直接执行,脚本的第一行必须是:#!/bin/bash

#后台运行命令(nohup):用户退出终端后该命令也能继续运行。& 符号用于将命令放到后台执行
nohup java -jar jenkins.war --httpPort=9999 & 
ps -ef |grep MainCentreServer 查找进程状态
中间的|是管道命令 是指ps命令与grep同时执行
ps是LINUX下最常用的也是非常强大的进程查看命令
grep命令 是查找, 是一种强大的文本搜索工具,它能 使用正则表达式 ​​搜索文本,并把匹配的行打印出来。
grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
#ps 命令的作用是显示进程信息的;
#| 符号,是个管道符号,表示ps 和 grep 命令同时执行;
#grep 命令是查找(Global Regular Expression Print),能使用正则表达式搜索文本,然后把匹配的行显示出来;
ps -ef|grep dotnet 查询所有net进程
ps ef | grep nginx
ps aux | grep nginx #列出系统上所有的进程,包括它们的详细信息,如用户ID、进程ID、CPU占用率、内存占用率、启动时间、终端类型、命令名称和命令行参数等。
ps -C nginx | grep -v PID #
ps -C nginx | grep -v PID | wc -l #查询nginx 相关的进程数量


ufw status #查看防火墙的状态信息
history #命令用于显示用户在 shell 中执行的最近命令的列表。
top # Linux 系统中的一个实时性能监视工具,它可以显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。
kill pid#杀掉进程supervisor会重新启动该程序

cat /etc/resolv.conf #查看DNS服务器配置
users 显示当前登录用户
nano 字符终端文本编辑器,Ctrl+O保存,Ctrl+X退出
install 安装软件
tree 树状图列出目录的内容
whereis 查找二进制程序、代码等相关文件路径
systemctl 系统服务管理器指令
sudo 以其他身份来执行命令
find #用来在指定目录下查找文件
su root命令用于切换用户身份到root,即超级用户
vi /etc/profile 编辑系统配置文件,此文件用于设置系统级的环境变量和启动脚本。
source /etc/profile 重新加载了文件,使更改生效。
tar -zxvf 解压文件命令,-zxvf:这是几个选项,用于控制tar命令的行为。
chmod +x /etc/rc.local  chmod 777 ./*.sh 提升文件操作权限

systemctl restart rc-local.service
systemctl status rc-local.service
supervisorctl status 查看进程管理工具状态
supervisorctl reload 重新加载
killall dotnet 结束所有的进程
nginx -s reload 重新加载nginx
pgrep nginx#进程筛选nginx

#expr 求值表达式,并执行基本的数学、字符串和逻辑操作。expr 命令通常用于 shell 脚本中,对变量进行数学计算或字符串操作
expr 2 + 3 #加法
expr 6 - 3
expr 2 \* 3 #乘法
expr 6 \/ 3 #除法

#关闭防火墙与SELinux
systemctl stop firewalld
systemctl disable firewalld &> /dev/null

setenforce 0
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config

#创建阿里仓储
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 

#设置时区并同步时间
timedatectl set-timezone Asia/Shanghai
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd 

#使用yum包管理器来安装多个软件包
yum install -y gcc make autoconf vim sysstat net-tools iostat  lrzsz

(1)、gcc: GNU Compiler Collection的缩写,是一个包含多种编程语言的编译器的集合,这里主要指的是C语言的编译器。
(2)、make: 是一个用于自动化编译和安装的工具,通常与autoconf一起使用。
(3)、autoconf: 是一个用于自动生成配置脚本的工具,它可以帮助开发者创建能够在多种Unix-like系统上编译和安装的软件包。
(4)、vim: 是一个高度可配置的文本编辑器,经常用于编程和文本编辑。
(5)、sysstat: 是一个包含多种系统性能监控工具的软件包,如iostat、vmstat、sar等。
(6)、net-tools: 是一个包含多种网络管理工具的软件包,如ifconfig、netstat等。需要注意的是,在较新的Linux发行版中,ifconfig已经被ip命令所取代,而ip命令是iproute2软件包的一部分。
(7)、iostat: 这个软件包在sysstat中已经包含,所以这条命令中单独列出iostat可能是多余的。iostat用于监视系统输入/输出设备加载情况的工具。
(8)、lrzsz: 是一个包含rz、sz等命令的软件包,这些命令用于在Unix-like系统和Windows系统之间进行Zmodem文件传输。
#查看当前主机所有进程监听的端口
netstat -ntlp 

#使用yum安装unzip
yum install unzip -y

#查看网络
ip -l #显示所有网络接口的详细信息,包括 IP 地址、子网掩码、广播地址、MAC 地址等。
ip -a 

#netplan 用于配置网络接口的命令行工具 (位于/etc/netplan/目录下)
netplan apply #命令用来应用新的网络配置。

#tcpdump 是一个常用的网络调试工具,可以在 UNIX-like 系统(如 Linux)上捕获和显示发送到或来自网络接口的包
tcpdump src port 8124 -vv #捕获所有源端口为 8124 的 TCP 和 UDP 数据包。
tcpdump port 8124 -vv #它会捕获所有源端口或目标端口为 8124 的 TCP 和 UDP 数据包。
tcpdump -vv #会捕获所有经过网络接口的数据包(不仅是 TCP,还包括 UDP、ICMP 等),并以详细模式显示它们。
tcpdump -i any port 8848 and host 192.168.100.81


#nc(netcat) 是一个强大的网络工具,可以创建网络连接、监听端口、传输数据。
-u: 此选项指示nc使用UDP(User Datagram Protocol,用户数据报协议)来建立连接。与TCP(Transmission Control Protocol,传输控制协议)不同,UDP是一种无连接的通信协议,它不保证数据包的顺序或可靠传输,但提供更快的服务,适用于那些不需要可靠传输或对实时性要求较高的应用场合。
-v: 这个选项代表“verbose”(详细模式),意味着在执行命令时,nc会提供更详细的操作过程信息。

nc -uv 192.168.250.232 3338  #这个命令使用UDP协议。
nc 192.168.250.232 3338 #这个命令默认使用TCP协议(因为没有-u选项)连接到IP地址192.168.250.232的3338端口。如果没有指定其他选项,你可能会看到nc的提示符,等待你输入要发送的数据。

#df(disk filesystem) 磁盘空间使用情况
df -lh
df: 这是一个显示磁盘空间使用情况的命令。
-l: 这个选项表示只显示本地文件系统(不包括网络文件系统,如NFS)。
-h: 这个选项使输出更易读,它会以K(千字节)、M(兆字节)、G(吉字节)等单位显示磁盘空间,而不是以字节为单位。

二、NetCore Linux系统上构建镜像

1、构建镜像(镜像名:huiyiplatform )
docker build -t huiyiplatform .
2、查看所有已构建的镜像列表
docker images
3、最后,可以使用以下命令来运行镜像:
docker run -d -p 80:80 huiyiplatform 
4、删除镜像
docker rmi huiyiplatform 
5、安装Git
yum install git
git --version
git pull
6、删除容器
docker rm <container_id>

三、NetCore Linux Docker常用命令

删除容器:docker remove yudao
查询所有容器:docker ps -a
查询运行容器:docker ps
停止容器:docker stop yudao
启动docker 容器:docker start yudao
查看容器日志(异常):docker logs  + 容器id

四、Linux系统设置开机启动 rc-local

设置开机启动
1、先将rc-local.service文件上传到有权限的目录,再将文件rc-local.service 拷贝到 /etc/systemd/system/目录下
sudo  //sudo命令是Linux系统中的一个命令,用于以超级用户(root)的权限执行特定命令。与su命令不同,sudo命令允许普通用户以自己的密码执行特权操作,而无需知道超级用户的密码。

sudo cp rc-local.service /etc/systemd/system/
chmod +x /etc/systemd/system/rc-local.service
systemctl enable rc-local//设置开机启动

2、将rc.local文件上传到有权限的目录,再将文件rc.local拷贝到 /etc目录下
sudo cp rc.local /etc -r
chmod +x /etc/rc.local //设置操作权限

3、启动rc-local.service
systemctl start rc-local.service
systemctl restart rc-local.service//重启

4、查看状态
systemctl status rc-local.service

5、rc.local下配置内容:
cd /home/xytech/publish &&  ./Hmiot-Server & 

6、查看rc-local.service 日志
journalctl -u rc-local.service

7、更改配置文件后,重新加载配置:为了使更改生效,您需要重新加载systemd的配置
sudo systemctl daemon-reload

(1)、rc-local.service 文件

rc-local.service文件下载

(2)、rc.local 文件

rc.local 文件下载

debian系统 rc-local.service文件内容

[Unit]
Description=/etc/rc.local Compatibility
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local

[Install]
WantedBy=multi-user.target

CentOS、Ubuntu系统 rc-local.service文件内容

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target

rc.local 文件内容

cd /home/smartlink &&  ./Hmiot-Server &

五、Linux安装Java环境

A、快速安裝
#安装java sdk
yum install java-1.8.0-openjdk* -y
B、一般安裝

1、下载jdk

下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
在这里插入图片描述
2、上传压缩包到文件夹(/usr/local/java:注意此文件夹在后面配置java环境时有用到),然后解压

tar -zxvf /usr/local/java/jdk-8u401-linux-x64.tar.gz

3、配置环境变量
使用vi命令对/etc/profile进行编辑:

vi /etc/profile

在文件最后一行下面添加java的配置如下:

export JAVA_HOME=/usr/local/java/jdk1.8.0_401
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

使用source命令是环境变量的修改生效。

source /etc/profile

5、查看是否安装成功

输入以下命令:

java -version

在这里插入图片描述
显示版本号1.8.0_401,说明已经安装配置成功。

六、Docker安装

1、安装docker仓库

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo

2、安装docker

yum -y install docker-ce

3、启动docker

systemctl start docker

4、开机自启动docker

systemctl enable docker

5、查看docker 版本

docker version

6、查看docker 状态

systemctl status docker

【Docker】解决 Docker拉取镜像时慢卡,连接被拒绝(connection refused),失败的解决办法

七、阿里云 Linux CentOs7安装MySql

  1. 更新系统:
    sudo yum update 命令作用:保持 Linux 系统安全、稳定和功能强大的重要步骤。通过定期更新系统,你可以确保你的系统能够抵御最新的安全威胁,并获得最新的功能和性能改进。
  sudo yum update
  1. 安装MySQL的yum存储库:
   sudo yum install epel-release
  1. 安装MySQL的官方yum存储库:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
  1. 安装MySQL服务器:
 sudo yum install mysql-server
  1. 启动MySQL服务:
   sudo systemctl start mysqld
  1. 设置MySQL服务开机自启:
sudo systemctl enable mysqld
  1. 运行MySQL安全脚本,设置root密码和其他安全选项:
sudo mysql_secure_installation

报错解决方法:Error: Access denied for user ‘root’@‘localhost’ (using password: YES)

7.1、设置跳过MySQL的密码认证

vim /etc/my.cnf

7.2、在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程

skip-grant-tables

需要重启生效

service mysqld restart

7.3、设置新密码

//用这个
update mysql.user set plugin='mysql_native_password',authentication_string='*E298836876ADD957C98DE0417C614075A35F951B' where user='root' and host='localhost';//重置mysql root账号密码
update mysql.user set Host='%' where Host='localhost' and User='root';//配置外网所有IP可访问。
flush privileges;//刷新权限
quit;//退出mysql登录

如果报错(如下图1,或者图2):ERROR 1820 (HY000): You must reset your password using ALTER USER statement before
在这里插入图片描述
在这里插入图片描述
解决方法:

ALTER USER 'root'@'%' IDENTIFIED BY 'Cdxyks!@#Sxyd5648';
flush privileges;

重启mysql服务

//常用命令
sudo service mysqld stop//关闭mysql
sudo service mysqld start//启动mysql
service mysqld restart //重启

到这里,需要重新修改/etc/my.cnf(vim /etc/my.cnf) 去掉 skip-grant-tables 然后重启(service mysqld restart)。

  1. 登录MySQL:
mysql -u root -p
  1. 输入之前设置的root密码,即可登录MySQL。

八、Linux系统环境初始化脚本

sysconfigure.sh文件下载:sysconfigure.sh

#!/bin/bash
echo "=====系统环境初始化脚本====="
sleep 3
echo "——>>> 关闭防火墙与SELinux <<<——"
sleep 3
systemctl stop firewalld
systemctl disable firewalld &> /dev/null
setenforce 0
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config

echo "——>>> 创建阿里仓库 <<<——"
sleep 3
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  


echo "——>>> 设置时区并同步时间 <<<——"
sleep 3
timedatectl set-timezone Asia/Shanghai
yum -y install chrony
systemctl start chronyd
systemctl enable chronyd


echo "——>>> 设置系统最大打开文件数 <<<——"
sleep 3
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535   #软限制
* hard nofile 65535   #硬限制
EOF
fi

echo "——>>> 系统内核优化 <<<——"
sleep 3
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1             #防范SYN洪水攻击,0为关闭
net.ipv4.tcp_max_tw_buckets = 20480     #此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死
net.ipv4.tcp_max_syn_backlog = 20480    #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数
net.core.netdev_max_backlog = 262144    #每个网络接口 接受数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目
net.ipv4.tcp_fin_timeout = 20           #FIN-WAIT-2状态的超时时间,避免内核崩溃
EOF

echo "——>>> 减少SWAP使用 <<<——"
sleep 3
echo "0" > /proc/sys/vm/swappiness

echo "——>>> 安装系统性能分析工具及其他 <<<——"
sleep 3
yum install -y gcc make autoconf vim sysstat net-tools iostat  lrzsz


九、Linux Docker 安装 RabbitMQ

1、使用Docker创建网络(网络将用于通信)

docker network create esnet

2、拉取RabbitMQ镜像

docker pull rabbitmq:management   //拉取包含web管理界面的RabbitMQ镜像

3、启动容器(自定义用户名和密码)

docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=xinyu -e RABBITMQ_DEFAULT_PASS=2024@xinyu -p 15672:15672 -p 5672:5672 --net esnet rabbitmq:management

4、可视化

http://ip:15672/
xinyu   2024@xinyu

十、Linux Docker 安装配置 MongoDB集群

MongoDB是什么?

MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库,它由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

1、 拉取mongoDB镜像

docker pull mongo

2、 创建本地挂在目录–建议先删除

mkdir -p /app/docker/mongo1/db   #创建挂载的db目录
mkdir -p /app/docker/mongo2/db   #创建挂载的db目录
mkdir -p /app/docker/mongo3/db   #创建挂载的db目录

3、创建秘钥

#进入目录
cd /app/docker

#创建秘钥
openssl rand -base64 756 > keyfile.key

#给秘钥创建赋予权限
chmod 600 keyfile.key

#重要:修改秘钥文件组(999 对应的是 Mongo 容器中的 mongodb 用户和 mongodb 用户组)
chown 999:999 keyfile.key 

4、Docker 启动多个MongoDB实例

#第一台:
docker run -d \
--name mongo-server1 \
-p 30001:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=12345678 \
--restart=always \
-v /app/docker/keyfile.key:/home/keyfile.key \
-v /app/docker/mongo1/db:/data/db \
-v /etc/localtime:/etc/localtime mongo:latest --replSet "rs0" --bind_ip_all \
--keyFile /home/keyfile.key

#第二台:
docker run -d \
--name mongo-server2 \
-p 30002:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=12345678 \
--restart=always \
-v /app/docker/keyfile.key:/home/keyfile.key \
-v /app/docker/mongo2/db:/data/db \
-v /etc/localtime:/etc/localtime mongo:latest --replSet "rs0" --bind_ip_all \
--keyFile /home/keyfile.key

#第三台:
docker run -d \
--name mongo-server3 \
-p 30003:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=12345678 \
--restart=always \
-v /app/docker/keyfile.key:/home/keyfile.key \
-v /app/docker/mongo3/db:/data/db \
-v /etc/localtime:/etc/localtime mongo:latest --replSet "rs0" --bind_ip_all \
--keyFile /home/keyfile.key

5、搭建集群

#进入容器 进入主的容器
docker exec -it mongo-server1 bash

#连接客户端(旧版本命令:mongo)
mongosh

#验证身份
use admin;
db.auth("root", "12345678");

#初始化
rs.initiate()

#添加从节点
rs.add("192.168.30.168:30002")

#添加仲裁节点
rs.addArb("192.168.30.168:30003")



#查副本集状态
rs.status()

添加仲裁节点 rs.addArb("192.168.30.168:30003") 报错:MongoServerError[NewReplicaSetConfigurationIncompatible]: Reconfig attempted to install a config that would change the implicit default write concern. Use the setDefaultRWConcern command to set a cluster-wide write concern and try the reconfig again. 如下图,解决方法:

在这里插入图片描述

db.adminCommand({
    setDefaultRWConcern: 1,
    defaultWriteConcern: { w: 1 },
    defaultReadConcern: { level: "local" }
})
  • { w: 1 } 表示写操作只需要在单个节点上确认即可。

  • { level: “local” } 表示读操作可以在副本集的本地节点上执行,而不考虑其他节点的数据状态。

常用命令
#查看是否为主节点
rs.isMaster()

#删除节点
rs.remove("192.168.30.168:30002")

#查看副本集配置信息
rs.conf()

#查副本集状态
rs.status()
连接字符串
mongodb://root:12345678@192.168.30.168:30001/?authMechanism=SCRAM-SHA-256&authSource=admin
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐