Linux实用指令

内容大纲

实用指令篇
在这里插入图片描述

实操篇
在这里插入图片描述

任务调度
在这里插入图片描述

Linux磁盘分区
在这里插入图片描述

Linux 网络配置
在这里插入图片描述

Linux 进程管理
在这里插入图片描述

Shell编程
在这里插入图片描述

Linux 实用指令

用户管理

单个用户

useradd jack (添加或叫做创建 用户 jack)

userdel jack (删除 用户 jack)

passwd jack (设置 jack 用户的密码)
需要注意的是,如果只输入了 passwd 就按下了回车表示对当前用户进行密码修改

id root (查询用户信息)

su - root (切换为 root 用户)(高权限切换为低权限不需要输入密码,反之则需要输入密码)
需要注意的是,如果在root用户切换为低权限用户时,再使用logout(或者exit)则会自动切换为root,不用输入密码

whoami (who am I) (查看当前登录用户)
需要注意的是,后面那个指令 who am i 显示的信息更完全,显示上次登录时间及IP,以及登录用户名(这个登陆表示你第一次进入系统的用户名)

用户组

groupadd student (添加用户组 student)

groupdel student (删除用户组 student)

useradd -g student mary (创建用户mary,并将其添加到用户组 student 中)
需要注意的是,如果只使用 useradd jack 进行用户创建,则默认会生成一个用户组 jack,并将用户 jack添加到 用户组 jack 中

usermod -g student jack (修改用户 jack 的用户组为 student )

用户和用户组相关的文件

/etc/passwd (用户的配置文件)

/etc/shadow(口令的配置文件)

/etc/group(用户组的配置文件)

运行级别

0 (关机)
1 (单用户,可以找回丢失密码)
2 (多用户没用网络服务)
3 (多用户有网络服务,使用最多)
4 (系统未使用的级别,保留给用户,没什么用)
5 (图形界面)
6 (系统重启)

常用的运行级别是 3 和 5

init 3 (切换到运行级别3)

systemctl get-default (查看当前运行级别)
systemctl set-default mult-user.target (设置默认运行级别为 多用户即 3)
需要注意的是,在 CentOS7以前,在 /etc/inittab 文件中有默认运行级别,但之后便不再使用了,而是采用 上述的两个命令
在这里插入图片描述

运行级别应用实例–找回root密码

可以参考这篇文章
这是对于CentOS7版本以后的电脑

帮助命令

man ls (查看 ls 命令的使用方式)
需要注意的是,man ls 运行后,再查看页面可以通过 空格键查看下一页,或者按上下箭头,输入 q 退出查看

help cd (查看 cd 命令的使用方式)

文件目录命令

pwd (显示当前路径的绝对路径)

ls (显示文件,一般搭配 -al 使用,-a 表示列出所有,-l 表示列出详细信息)
ls -lh (显示文件大小)

cd (进入文件夹)
cd / (回到根目录)
cd ~ ( 回到家目录)
cd … (回到上一级目录)

mkdir test (创建 test 目录)
mkdir -p test/test1 (创建多级目录,即 test 目录下还包含一个目录 test1)
需要注意的是,你也可以一个一个目录创建,即先创建 test 目录,再创建 test1 目录,即先执行 mkdir test,再执行 mkdir test/test1

rmdir test (删除 test 目录)
需要注意的是,rmdir 只能删除空目录,要删除非空目录时需要使用 rm -r

touch hello.txt (创建一个空 文件)

cp hello.txt hello1.txt (拷贝文件 hello.txt ,生成文件 hello1.txt)
cp -r test test1 (递归的拷贝整个文件夹 test,生成新文件夹 test1,内容一模一样)
\cp -r test test1 (递归复制,因为有时候系统会提示你文件已存在,是否覆盖,这样可以强制覆盖,不用一直输入 y,但是我的系统居然直接就覆盖了,都没有问我)

rm hello.txt (移除、删除文件 hello.txt )
用法和 rmdir 很类似,但 rm 是删除文件,rmdir 是删除文件夹
需要注意的是,rm -r ,递归删除文件夹,很危险,可以使用 rm -rf ,删除时不附带警告

mv hello.txt rename.txt (将 hello.txt 改名为 rename.txt,因为在同一目录,所有相当于改名了,也可以跨目录的,就相当于移动加改名)

cat hello.txt (查看 hello.txt 文件内容)
cat -n hello.txt (查看hello.txt内容,并显示行号)

echo $PATH (查看系统当前环境变量,并输出到控制台)
echo “hello” (在控制台输出 hello,一般用于写脚本)
echo “hello,jack” >> hello.txt (将hello,jack 写入到 hello.txt 文件内,采用追加写入)

echo “hello,jack” > hello.txt (将hello,jack 写入到 hello.txt 文件内,采用覆盖写入)
echo “hello,jack” >> hello.txt (将hello,jack 写入到 hello.txt 文件内,采用追加写入)
nl hello.txt >> hello1.txt (将 nl hello.txt 的结果追加写入到 hello1.txt 内)

ln -s test link (创建一个软链接 link,指向 test 目录)
需要注意的是,可以通过 ls -al 查看具体指向的文件

history (查看最近执行过的指令)
history 10 (查看最近执行过的10条指令)
!23 (执行历史记录中编号 为23 的指令)

时间日期类指令

date (显示当前时间)
date +%Y (显示当前年份)
date +%m (显示当前月份)
date +%d (显示当前天数)
date +%Y-%m-%d-H:%M:%S (按格式显示当前时间)
需要注意的是, date “+%Y-%m-%d H:%M:%S” (加上引号,中间则可以空格了)

date -s “2022-11-13 00:00:00” (设置当前时间 为2022年11月13日 0点0分0秒)

cal (显示本月日历)
cal 2022 (显示2022年一年的日历)

搜索查找类

find test -name hello.txt (查找 test 目录下名称为 hello.txt 的文件)
find test -name hello.* (查找 test 目录下名称为 hello. 开头的文件,符合正则表达式规则)
find test -user jack (查找 test 目录下拥有者为 jack 的文件)
find test -size +200M (查找 test 目录下大小大于 200MB 的文件)(还有单位k、G)
find test -size -200 (查找 test 目录下大小小于 200字节 的文件)

locate hello.txt (快速定位 hello.txt 文件的位置)
需要注意的是,在执行 locate 指令前,需要先执行 updatedb 指令,且要求用户具有一定的权限,需要可以访问文件 /var/lib/mlocate/mlocate.db ,root 用户可以访问

which ls (查看 ls 指令在哪个目录下,即一些可执行的文件在哪里)

nl hello.txt | grep hello (查找 hello.txt 里面出现 hello 字符串的行)
nl hello.txt | grep -i hello (查找 hello.txt 里面出现 hello 字符串的行,此时不区分大小写)

压缩和解压

gzip hello.txt (压缩 hello.txt 文件为 hello.txt.gz)

gunzip hello.txt.gz (解压 hello.txt.gz 为 hello.txt)

zip -r test.zip test (把 test 文件夹里面的所有文件及文件夹 压缩为 test.zip 文件,包含test文件夹本身)

unzip -d test1 test.zip (把test.zip 解压到 test1 目录下)

tar -zcvf test2.tar.gz test test1 (把 test、test1 目录一起压缩到 test2.tar.gz )

tar -zxvf test2.tar.gz (解压 test2.tar.gz 到当前目录)
tar -zxvf test2.tar.gz -C test (解压 test2.tar.gz 到当前test目录下)

Linux 实操指令

组管理与权限管理

文件的所有者(创建者),是可以被修改的
文件的所在组(文件所有者所在的组)
文件的其他组(不是所在组之外的组)

ls -lh (查看文件的所有者)(或者 直接 ll 也可以)

chown jack hello.txt (把 hello.txt 文件的所有者改为 jack)
chown -R jack test (把 test 目录及其所有子文件与子文件夹的所有者改为 jack)

chgrp student hello.txt (把 hello.txt 文件的所在组改为 student )
chgrp -R student test (把 test 目录及其所有子文件与子文件夹的所在组改为 student )

权限的基本介绍

采用 ls -lh 查看文件信息时,第一列的信息即权限信息,共有10位
在这里插入图片描述

这10位的介绍(编号 0 - 9)
第0位:文件类型(d、-、l、c、b)(目录、普通文件、链接、字符设备文件如鼠标键盘、块设备如硬盘)
第1-3位:文件所有者的权限
第4-6位:所在组的权限
第7-9位:其他组的权限
需要注意的是,r表示可读、w表示可写、x表示可执行、- 表示没有该权限;如果是对文件夹的r、w、x权限,则是可读、可创建删除文件、可进入 ;删除、创建、修改文件的权限都取决于对目录的文件
采用数字表示:r表示4、w表示2、x表示1

chmod u=rwx,g=rx,o=x hello.txt (对于 hello.txt 文件而言,赋予 所有者三种权限,所在组读与执行权限,其他组执行权限)
chmod o+x hello.txt (对于 hello.txt 文件而言,为其他组增加执行权限)
chmod a-x hello.txt (对于 hello.txt 文件而言,为所有人,即所有者、所在组、其他组 都去除执行权限)
需要注意的是,可以简写为 chmod 777 hello.txt (为所有人赋予 rwx 权限)

Linux 定时任务调度

crond 任务调度

选项有三个
1、crontab -e (执行或者叫开启 定时任务)
2、crontab -l (查看当前定时任务)
3、crontab -r (删除当前定时任务)

示例一:
*/1 * * * * nl hello.txt >> hello2.txt (表示每分钟都执行一次命令 ,将 hello.txt 的内容追加写入到 hello2.txt 内)

占位符的说明
第1个 * :一小时的第几分钟(0-59)
第2个 * :一天的第几小时(0-23)
第3个 * :一月的第几天(1-31)
第4个 * :一年的第几月(1-12)
第5个 * :一周的星期几(0-7 ,0和7都表示星期天)

特殊符号的说明
* (表示任何)
, (表示不连续的时间)如 0 8,12,16 * * * (表示每天的8点0分 12点0分 16点0分)
- (表示连续的时间范围) 如 0 5 * * 1-6 (表示周一到周六的5点0分)
*/n (代表每隔多久) */10 * * * * (表示每隔10分钟)

应用实例–采用crontab 执行脚本

脚本很简单,添加当前时间及日历到 /home/jack/log.txt
脚本创建为 my.sh

date >> /home/jack/log.txt
cal >> /home/jack/log.txt

采用 crontab 每分钟执行一次
crontab -e 进入编辑页面
*/1 * * * * /home/jack/my.sh
需要注意的是,在创建好 my.sh 脚本后,默认是没有执行权限的,所以需要赋予执行权限

at定时任务

一次性的定时任务(crond定时任务是循环的)
需要注意的是,at 定时任务要保证 atd 进程要在运行中,可以通过 ps -ef | grep atd 查看当前 atd 线程是否在运行

at 5pm + 2 days (表示两天后的下午5点)(输入后进行脚本输入阶段,输入完脚本后按下 Ctrl + d 两次结束脚本输入)
需要注意的是,这里的时间包括 minutes、hours、days、weeks,同样有 pm 也会有 am
还支持 now + 2 minutes (表示现在之后 2 分钟执行)

atq (查看当前的 at 队列情况)

atrm 4 (删除编号为 4 的任务)

应用实例–两分钟后写入当前时间到 /home/jack/log.txt 下

at now + 2 minutes (输入该命令进入脚本编写页面)
date >> /home/jack/log.txt (输入该命令实现将时间写入 /home/jack/log.txt ,输入结束后按下两次 Ctrl + d )

Linux 磁盘分区

磁盘分区与挂载

lsblk (查看设备挂载情况)

以增加一个硬盘并分区挂载为例讲解磁盘操作

这篇文章讲解了如何进行添加硬盘、分区及挂载

主要指令如下:
fdisk /dev/sdb (执行分区的增加、删除、配置等)
mkfs –t ext4/dev/sdb1 (格式化分区)
mount /dev/sdb1 /newdb (磁盘挂载 ,重启后挂载会失效)
umount /dev/sdb1 (磁盘卸载)
通过 编辑 /etc/fstab 文件 可以实现永久挂载

磁盘使用情况查询

df -h (查看磁盘使用情况)

du -ha /home (查看 /home 目录的使用情况)

查看文件、文件夹个数

ls -l /home | grep ^- | wc -l (统计 /home 目录的文件个数)

ls -l /home | grep ^d | wc -l (统计 /home 目录的文件夹个数)

ls -lR /home | grep ^- | wc -l (统计 /home 目录及其子目录的文件个数)

tree /home (将 /home 目录以树结构显示)
需要注意的是,又可能没用安装该指令,采用 yum install tree 安装

Linux 网络配置

NAT网络配置

原理图如下
在这里插入图片描述

ifconfig (查看网络配置)

指定IP与动态IP

动态IP采用DHCP自动分配

指定IP需要修改配置文件 /etc/sysconfig/network-srcipts/ifcfg-ens33
需要注意的是,不是都存在这个文件,如果不存在则改为 /etc/sysconfig/network-srcipts/ifcfg-enth0 文件

设置主机名和hosts映射

hostname (查看当前主机名)

修改主机名需要修改配置文件 /etc/hostname

hosts 映射则需要修改 /etc/hosts 文件

主机域名的解析流程(DNS)
1、先找浏览器缓存
2、如果没找到,再查找操作系统的DNS缓存
3、如果没找到,再查找 hosts 文件
4、如果没找到,最后查找设置的 DNS 服务器(这个DNS服务器是分级的)
5、如果都没找到则返回 该域名不存在

Linux 进程管理

进程基本操作(查看、终止)

ps -aux (显示当前所有进程信息)

ps -aux | grep java (显示当前和 java 相关的进程信息)

ps -ef (查看当前系统所有进程,可以查看进程的父进程)

kill -9 34673 (终止进程号为 34673 的进程,同时它的子进程也会被终止)
需要注意的是, -9 选项表示强制终止线程

killall gedit (通过进程名称终止进程,终止进程 gedit)

pstree -pu (显示进程树,-p 表示显示pid,-u 表示显示 user)

服务管理

service [ start | stop | restart | reload | status ] (服务有这些选项,可以选任何一个)
需要注意的是,上面的 service ,很多服务不再使用了,改为了 systemctl
service 还可以管理的服务在文件 /etc/init.d 里面可以看到,意思就是使用的不多了

systemctl 设置服务的自启动状态
systemctl status firewalld (查看当前防火墙的开启状态)
systemctl start firewalld (开启防火墙服务)
systemctl stop firewalld (关闭防火墙服务)
systemctl list-unit-files | grep firewalld (查看防火墙的开机启动状态)
systemctl enable firewalld (设置防火墙服务开机启动)
systemctl disable firewalld (关闭防火墙服务开机启动)
systemctl is-enabled firewalld (查询防火墙服务是否开机启动)

防火墙设置

firewall-cmd --state (查看当前防护墙状态)
systemctl start firewalld.service (开启防火墙服务)
systemctl enable firewalld.service (开机自启动防火墙)
firewall-cmd --list-ports (查看已经开启的防火墙)
firewall-cmd --zone=public --add-port=80/tcp --permanent (开启指定端口 80)
firewall-cmd --zone=public --remove-port=80/tcp --permanent (关闭指定端口 80)
systemctl reload firewalld (重新加载防火墙让起生效)
需要注意的是,对于云服务器而言,需要再添加云服务器的通行规则

动态监控进程

top (查看电脑基本情况,CPU、内存等)
需要注意的是,在命令运行时,可以通过输入 P、M、N 进行交互,输入 P 表示按CPU占用率排序,输入 M 表示按内存占用率排序,N表示按照进程号排序;输入 q 则退出
也可以监控某用户相关的进程,输入 u 后,再输入 用户名即可
也可以终止进程,输入 k 后,再输入进程 id ,如果在进行终止时要求输入信号量,则可以输入 9,进行进程的强制终止

top -d 10 (按10秒的刷新间隔进行监控)

监控网络状态

netstat -anp (查看所有端口)(可以通过 netstat -anp | grep 3306 进行过滤)
需要注意的是, -p 选项需要 root 用户权限

开启redis、mysql

systemctl start redis
systemctl restart redis
systemctl stop redis
systemctl status redis # 查看 redis 状态

systemctl start mysqld.service
service mysqld status

卸载MySQL
1.查看已安装的mysql
命令:rpm -qa | grep -i mysql
2.卸载mysql
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64

安装MySQL
yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server

Java后台启动

nohup java -jar *.jar > *.out &

Window查看端口占用情况

netstat -aon|findstr “8081” (查看8081端口被哪个进程占用)
tasklist|findstr “9088” (查看pid为9088的进程是哪个程序)

Shell编程

shell入门案例

以输出经典的输出 Hello World 为例

#!/bin/bash
echo "hello world~"

需要采用 #!/bin/bash 开头,虽然不加也不会报错
执行可以采用 添加 执行权限的方式,然后通过 ./hello.sh 执行
或者采用 sh hello.sh (这种方式不要求有执行权限)

shell变量

分为系统变量与用户自定义变量

系统变量可以通过 set | more 进行查看(按空格切换下一页)

用户自定义变量
1、定义 A=“hello world” (注意这个 = 前后不能加空格)
2、撤销变量 unset A
3、只读变量 readonly B=“hello world” (只读变量不能撤销)

#!/bin/bash
A="hello world"
echo A = $A
echo B = $B, A = $A
unset A
echo A = $A
readonly B="hello jack"
echo B = $B, A = $A
unset B

变量定义的规范:
1、变量名由数字、字母、下划线组成,但不能由数字开头
2、变量名一般大写
3、= 号两边不能有空格

采用 A=$(date) 或者 A=`date` 将 date 命令的输出结果赋值给 A

注释:
1、单行注释:以 # 开头即可
2、多行注释:以 :<<! 为一行开始,以 ! 为一行结束

#/bin/bash
:<<!
这里是多行注释
!
A=`date`
echo A = $A

设置环境变量

在 /etc/profile 文件内,定义了环境变量,供全局共享

基本语法:
1、export 变量名=变量值
2、source 配置文件 (即 source /etc/profile)
3、echo $变量名 (就成了全局的变量,和系统变量一样)

位置参数变量

希望获取到命令行的参数信息,可以通过位置参数获取到

获得参数的方式有以下三种:
1、 $n (n的范围为0-9,10及以上需要使用 {} 包起来 ${10}、 ${11} )
2、 $* 、 $@ (表示获取所有参数,不同的是 $*把参数当作一个整体, $@ 不把参数当作一个整体)
3、 $# (表示 参数的个数)

#!/bin/bash
echo 0=$0 1=$1, 2=$2, 3=$3
echo 所有参数: $*
echo 所有参数: $@
echo 参数的个数: $#

预定义变量

Shell 设计者预先定义好的变量,可以直接使用

有以下几个
1、 $$ (表示当前进程的进程号)
2、 $! (后台运行的最后一个进程号)
3、 $? (返回最后一个命令的执行状态,若为 0,不为 0 则表示执行出现异常)

#!/bin/bash
echo 当前执行的进程id = $$
sh /home/jack/date.sh &
echo 最后一个后台运行的进程id = $!
echo 执行的结果 = $?

运算符

基本语法有一些需要注意的点:
1、采用 $((运算式)) 或者 $[运算式]
2、运算符有:+ - * / %

#!/bin/bash
RES1=$(((3+2)*4))
echo res1 = $RES1

RES2=$[(3+2)*4]
echo res2 = $RES2

SUM=$[$1+$2]
echo $1 + $2 = $SUM

SUB=$[$1-$2]
echo $1 - $2 = $SUB

MUL=$[$1*$2]
echo $1 \* $2 = $MUL

DIV=$[$1/$2]
echo $1 / $2 = $DIV

MOD=$[$1%$2]
echo $1 % $2 = $MOD

条件判断

基本语法
[ condition ] (非空返回true,可以采用 $? 验证, $? 返回0 表示为true,返回1表示 false)
需要注意的是,中括号两侧需要有空格,且对于复合判断条件需要分开写 [ ] 包裹

常用的判断
1、字符串判断 采用 =
2、整数比较 (-lt、-le、-eq、-ge、-gt、-ne)
3、文件权限判断 (-r 、-w、 -x)
4、文件类型判断 (-f、 -e、 -d)

#!/bin/bash

STR1="ok"
STR2="ok"
if [ $STR1 = $STR2 ]
then
	echo $STR1 = $STR2
else
	echo $STR1 != $STR2
fi

NUM1=20
NUM2=30
if [ $NUM1 -ge $NUM2 ]
then
	echo $NUM1 大于 $NUM2
else
	echo $NUM1 不大于 $NUM2
fi

FILENAME=/home/jack/test.sh
if [ -e $FILENAME ]
then
	echo $FILENAME 文件存在
else
	echo $FILENAME 文件不存在
fi

if [ $1 -gt 10 ] && [ $1 -lt 20 ]
then
	echo $1 大于 10 且 小于 20
elif [ $1 -gt 20 ] && [ $1 -lt 30 ]
then
	echo $1 大于 20 且 小于 30
else
	echo $1 大于 30
fi

case语句

上面讲解了 if 语句的语法,这里介绍一下 case 语句的语法格式

#!/bin/bash

case $1 in
	"星期一")
		echo 参数为星期一
		;;
	"星期二")
		echo 参数为星期二
		;;
	*)
		echo 参数不是星期一也不是星期二
		;;
esac

for循环

基本语法如下:
for 变量 in 值1 值2 值3…
do
something
done

这里采用打印命令行参数进行演示

#!/bin/bash
for i in "$*"
do
	echo 命令行参数 is $i
done

#!/bin/bash
for i in $*
do
	echo 命令行参数 is $i
done

#!/bin/bash
for i in "$@"
do
	echo 命令行参数 is $i
done

#!/bin/bash
for i in $@
do
	echo 命令行参数 is $i
done

还有第二种范围变化的for循环
for (初始值; 循环控制条件; 条件变化)
do
something
done

下面以1+2+3+…+100 为例

#!/bin/bash
SUM=0
for ((i=1; i <= 100; i++))
do
	SUM=$[$i+$SUM] 
done
echo 求和1+2+3+...+100 = $SUM

while循环

基本语法为:
while [ 条件判断式 ]
do
something
done

下面以 1+2+3+…+n 为例,演示 while 循环的编写

#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
	SUM=$[$i+$SUM]
       	i=$[$i + 1]
done
echo 求和1 + 2 + 3 + ... + $1 = $SUM

read读取控制台输入

基本语法如下:
read (选项) (参数)
选项有: -p(指定读取的提示符) -t(指定读取时等待的时间)
参数为指定接收输入的变量

#!/bin/bash
read -p "请输入一个数NUM1: " NUM1
echo 你输入的数NUM1 =  $NUM1

read -t 10 -p "请在10秒内输入一个数NUM2: " NUM2
echo 你输入的数NUM2 =  $NUM2

系统函数

介绍几个常用的系统函数

1、basename (返回完整路径最后的文件名)

$ basename /home/jack/a.sh 
a.sh
$ basename /home/jack/a.sh .sh
a

2、dirname (返回完整路径的目录名)

$ dirname /home/jack/a.sh
/home/jack

自定义函数

基本语法如下
function funname()
{
Action
return int;
}

调用的时候直接写函数名:funname [值]
下面以经典的求两数之和为例

#!/bin/bash
function getSum() {
	SUM=$[ $n1 + $n2]
	echo 两数的和为: $SUM
}

read -p "请输入一个数n1: " n1
read -p "请输入一个数n2: " n2
getSum $n1 $n2

Shell编程综合案例(备份数据库)

备份数据库的要求:
1、每天凌晨 2:30 备份数据库 test 到 /data/backup/db
2、备份开始与结束能够给出提示
3、备份后的文件以备份时间为文件名,并打包为 tar.gz 的形式
4、备份的同时,检查是否有10天前备份的数据库文件,如果有,则删除

#!/bin/bash

BACKUP=/data/backup/db
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME

HOST=localhost
DB_USER=root
DB_PWD=0925
DATABASE=test

[ ! -d $BACKUP/$DATETIME ] && mkdir -p $BACKUP/$DATETIME

mysqldump -u$DB_USER -p$DB_PWD --host=$HOST -q -R --databases $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz

cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
rm -rf $DATETIME

find $BACKUP -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库$DATETIME 成功~"

定时任务的为

30 2 * * * sh /root/mysql-backup.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值