工作中用到的Linux命令记录

146 阅读3分钟

在docker中启动的MySQL数据库的备份和还原

数据库备份
docker exec mysql3318 mysqldump -uroot -p数据库密码  --default-character-set=utf8 --set-gtid-purged=OFF sykj_sys > /data/project/mysql3318/backup/sykj_sys.sql

还原数据:在sql文件的同级目录执行
docker exec -i mysql3306 mysql -uroot -p数据库密码 sykj_gf_sys < ./sykj_sys20240524.sql

删除超过90天的备份文件:测试时先把-exec rm -rf {} \去掉,find出的数据没问题了再加上
find /data/project/mysql3318/backup/ -mtime +90 -name 'sykj*.sql' -exec rm -rf {} \;

创建一个数据库备份和删除超期文件的脚本文件,然后把脚本文件写入到Linux的定时任务中,可实现定时备份数据库

创建脚本文件并写入内容
vi backup.sh
#!/bin/bash
dateStr=$(date +%Y%m%d_%H)
echo 当前时间:$dateStr
echo 开始备份:sykj_sys
docker exec mysql3318 mysqldump -uroot -psykj85575700  --default-character-set=utf8 --set-gtid-purged=OFF sykj_sys > /data/project/mysql3318/backup/sykj_sys_$dateStr.sql
echo 开始备份:sykj_biz
docker exec mysql3318 mysqldump -uroot -psykj85575700  --default-character-set=utf8 --set-gtid-purged=OFF sykj_biz > /data/project/mysql3318/backup/sykj_biz_$dateStr.sql
echo 开始备份:sykj_wf
docker exec mysql3318 mysqldump -uroot -psykj85575700  --default-character-set=utf8 --set-gtid-purged=OFF sykj_wf > /data/project/mysql3318/backup/sykj_wf_$dateStr.sql
echo 开始备份:sykj_stats
docker exec mysql3318 mysqldump -uroot -psykj85575700  --default-character-set=utf8 --set-gtid-purged=OFF sykj_stats > /data/project/mysql3318/backup/sykj_stats_$dateStr.sql
cd /data/project/mysql3318/backup
echo 打包压缩备份文件
tar zcvf data_$dateStr.tar.gz  sykj_*_$dateStr.sql
echo 删除原始备份文件
rm -rf sykj_*_$dateStr.sql
# 删除90天前的备份
# find /data/project/mysql3318/backup/ -mtime +90 -name 'sykj*.sql' -exec rm -rf {} \;

创建定时任务

输入以下命令打开创建定时任务的编辑框
crontab -e
然后写入以下内容:
30 12,23 * * * /data/project/mysql/backup.sh >> /data/project/mysql/mysql_bak.log 2>&1

每天的12点半和23点半进行数据备份,同时删除超过90天的备份文件

防火墙操作

关闭:
systemctl stop firewalld
开启:
systemctl start firewalld
禁止开启自启:
systemctl disable firewalld
查看防火墙当前状态:
systemctl status firewalld 
查看当前生效的防火墙规则:
firewall-cmd --list-all 
重新载入配置,比如添加规则之后,需要执行此命令:
firewall-cmd --reload
开放端口号:
firewall-cmd --add-port=3306/tcp --permanent 
移除端口号:
firewall-cmd --remove-port=3306/tcp --permanent

一套操作为:
开发端口号:firewall-cmd --add-port=3306/tcp --permanent 
重新载入配置:firewall-cmd --reload
查看是否开发端口号成功:firewall-cmd --list-all

查看cpu情况

查询CPU处理器详细信息
lscpu
cat /proc/cpuinfo
这两组命令返回的数据基本一致

磁盘挂载步骤

1.查看所有磁盘
fdisk -l
或者
lsblk -a  这个是以树结构展示,可读性比较好
lsblk -m

2.为未挂载的磁盘创建分区
fdisk /dev/vdb
然后输入:n     # n add a new partition
然后输入:p     # p select a partition type
回车->使用默认值
回车->使用默认值
最后输入:w  这个是保存

3.格式化分区
mkfs.ext4 /dev/vdb1

4.挂载分区到指定目录
mount /dev/vdb1 /data

查看分区的id
blkid /dev/vdb1

5.开机自动挂载配置
编辑相关配置文件: vi /etc/fstab
在文件末尾添加如下内容:
/dev/vdb1 /data ext4 defaults 0 0

6.重启服务器查看磁盘挂载是否正常
重启命令: reboot
重启完毕使用 df -h 命令查看磁盘挂载情况

查看端口号占用情况

安装网络工具: yum install -y net-tools
使用这个命令获取占用此端口号的进程id
netstat -lnp | grep 8080

netstat -tlnp 查看tcp协议的端口号占用情况
netstat -tlnp | grep 3307 查看指定tcp协议的端口号是否被占用

查看端口号和运行程序:
netstat -atunp | more
这个可以列出当前系统中被占用的端口号以及该进程的pid

vi 时快速行首行尾

行首: shift + 6
行尾: shift + 4

降低文件夹权限

有些文件权限过高会导致程序认为高风险而忽略掉,例如MySQL的my.cnf文件,权限过高会导致MySQL忽略掉,文件中的配置信息都不会生效
chmod -R 644 mycat
-R 是递归设置其所有自己

linux:vi 替换命令

:s/^.*$/\L&/100

##将100行内的小写转换成大写
vi/vim 中可以使用 :s 命令来替换字符串。
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

-bash: ll: command not found 的解决方案

在 .bashrc 文件中新增

alias ll='ls -alhF'

保存退出后执行: source .bashrc 
执行完即可使用 ll 命令

du命令,查看磁盘的占用情况

du -h syzhlog/
du -sh ./ 查看当前目录所占磁盘大小
du --max-depth=1 -h ./ 查看当前目录的第一级子目录所占磁盘大小

Linux查看当前操作系统版本信息

方式一: uname -a  可显示电脑以及操作系统的相关信息
方式二: 输入"cat /proc/version",说明正在运行的内核版本。
方式三: 输入"cat /etc/issue", 显示的是发行版本信息
方式四: lsb_release -a (适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)  亲测子系统中可以使用
方式五: cat /etc/os-release 或者 cat /etc/redhat-release

修改系统时间

先使用date命令修改系统时间
date -s "2023-09-18 16:50:30"
然后把系统时间写入到硬件
hwclock -w

curl命令

发送post请求并设置请求头、参数
curl -X POST -H "Content-Type: application/json"  -d '{"key1": "value1", "key2": "value2"}' http://IP:PORT/url

下载图片
curl -o example.jpg https://www.example.com/image.jpg

使用 -k 参数可以跳过 SSL 证书验证。
例如:curl -k https://www.example.com