liunx笔记
快捷键
#移动到行首
ctrl+a
#移动到行尾
ctrl+e
#删除光标之前的字符
ctrl+u
#删除光标之后的字符
ctrl+k
#清屏
ctrl+l
正则表达式
正则中普通常用的元字符
| 元字符 | 功能 |
|---|---|
| . | 匹配除了换行符以外的任意单个字符 |
| * | 前导字符出现0次或连续多次 |
| .* | 任意长度字符 |
| ^ | 行首(以…开头),如:“^by”,匹配已by单词开头的行 |
| $ | 行尾(以…结尾), 如:“$by”,匹配已by单词结尾的行 |
| ^$ | 空行 |
| [] | 匹配括号里任意单个字符或一组单个字符 |
| [^] | 匹配不包含括号里任一单个字符或一组单个字符 |
| 1 | 匹配以括号里任意单个字符或一组单个字符开头 |
| [] | 匹配不以括号里任意单个字符或一组单个字符开头 |
正则中其他常用元字符
| 元字符 | 功能 | 备注 |
|---|---|---|
| < | 取单词的头 | |
| > | 取单词的尾 | |
| < > | 精确匹配 | |
| {n} | 匹配前导字符连续出现n次 | |
| {n,} | 匹配前导字符至少出现n次 | |
| {n,m} | 匹配前导字符出现n次与m次之间 | |
| ( ) | 保存被匹配的字符 | |
| \d | 匹配数字(grep -P) | [0-9] |
| \w | 匹配字母数字下划线(grep -P) | [a-zA-Z0-9_] |
| \s | 匹配空格、制表符、换页符(grep -P) | [\t\r\n] |
扩展类正则常用元字符
- grep你要用我,必须加 -E 或者 让你兄弟
egrep来找我- sed你要用我,必须加 -r
| 扩展元字符 | 功能 | 备注 |
|---|---|---|
| + | 匹配一个或多个前导字符 | bo+ 匹配boo、 bo |
| ? | 匹配零个或一个前导字符 | bo? 匹配b、 bo |
| | | 或 | 匹配a或b |
| () | 组字符(看成整体) | (my|your)self:表示匹配myself或匹配yourself |
| {n} | 前导字符重复n次 | |
| {n,} | 前导字符重复至少n次 | |
| {n,m} | 前导字符重复n到m次 |
第二类正则
| 表达式 | 功能 | 示例 |
|---|---|---|
| [:alnum:] | 字母与数字字符 | [[:alnum:]]+ |
| [:alpha:] | 字母字符(包括大小写字母) | [[:alpha:]]{4} |
| [:blank:] | 空格与制表符 | [[:blank:]]* |
| [:digit:] | 数字 | [[:digit:]]? |
| [:lower:] | 小写字母 | [[:lower:]]{4,} |
| [:upper:] | 大写字母 | [[:upper:]]+ |
| [:punct:] | 标点符号 | [[:punct:]] |
| [:space:] | 包括换行符,回车等在内的所有空白 | [[:space:]]+ |
查看CPU
lscpu
或
cat /proc/cpuinfo
查看内存大小
free
或
cat /proc/meminfo
echo
echo "This is a test text." > test.txt
将文本This is a test text.输出重定向到文件test.txt中,如果文件已存在,将会覆盖文件内容,如果不存在则创建。其中**>**符号表示输出重定向。
文本追加到文件内容最后,而不是覆盖它,请使用**>>**输出追加重定向符号。
注:>:覆盖文件内容 >>:文本追加到文件内容最后
显示命令执行结果
方法一:
echo `pwd`
方法二:$(command)
echo $(pwd)
date
命令格式:date [选项] [**+**格式]
| 字符 | 说明 |
|---|---|
| %a | 当地时间的星期名缩写(例如: 日,代表星期日) |
| %A | 当地时间的星期名全称 (例如:星期日) |
| %b | 当地时间的月名缩写 (例如:一,代表一月) |
| %B | 当地时间的月名全称 (例如:一月) |
| %c | 当地时间的日期和时间 (例如:2005年3月3日 星期四 23:05:25) |
| %C | 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20) |
| %d | 按月计的日期(例如:01) |
| %D | 按月计的日期;等于%m/%d/%y |
| %F | 完整日期格式,等价于 %Y-%m-%d |
| %j | 按年计的日期(001-366) |
| %p | 按年计的日期(001-366) |
| %r | 当地时间下的 12 小时时钟时间 (例如:11:11:04 下午) |
| %R | 24 小时时间的时和分,等价于 %H:%M |
| %s | 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 |
| %T | 时间,等于%H:%M:%S |
| %U | 一年中的第几周,以周日为每星期第一天(00-53) |
| %x | 当地时间下的日期描述 (例如:12/31/99) |
| %X | 当地时间下的时间描述 (例如:23:13:48) |
| %w | 一星期中的第几日(0-6),0 代表周一 |
| %W | 一年中的第几周,以周一为每星期第一天(00-53) |
命令用法示例:
-
查看今天是当年中的第几天
[root@VM-16-5-centos ~]# date '+%j' 298
注:需要有 +
设置系统时间
date -s 时间
校正系统时间,与网络时间同步
安装ntp校时工具
yum -y install ntp
用ntpdate从时间服务器更新时间
ntpdate time.nist.gov
wget 在终端中下载文件
命令格式:wget [参数] 下载地址
参数说明:
| 参数 | 作用 |
|---|---|
| -b | 后台下载 |
| -P | 下载到指定目录 |
| -t | 最大重试次数 |
| -c | 断点续传 |
| -p | 下载页面内所有资源,包括图片、视频等 |
| -r | 递归下载 |
ps
命令格式:
ps [参数]。
命令参数说明
| 参数 | 作用 |
|---|---|
| -a | 显示现行终端机下的所有程序,包括其他用户的程序 |
| -u | 以用户为主的格式来显示程序状况 |
| -x | 显示没有控制终端的进程,同时显示各个命令的具体路径 |
| -e | 列出程序时,显示每个程序所使用的环境变量 |
| -f | 显示当前所有的进程 |
| -t | 指定终端机编号,并列出属于该终端机的程序的状况 |
top
命令描述:
top命令动态地监视进程活动与系统负载等信息。
top - 10:38:10 up 42 min, 1 user, load average: 0.00, 0.10, 0.11
Tasks: 73 total, 2 running, 71 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 1.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1014560 total, 177908 free, 121028 used, 715624 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 742920 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1639 root 10 -10 137188 16400 11216 S 2.0 1.6 0:46.50 AliYunDun 1668 root 10 -10 436916 2792 2348 S 0.3 0.3 0:01.27 AliSecGuard
11604 root 20 0 805672 9700 4712 S 0.3 1.0 0:00.82 aliyun-service 1 root 20 0 125476 3948 2620 S 0.0 0.4 0:01.20 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
命令输出参数解释:
以上命令输出视图中分为两个区域,一个统计信息区,一个进程信息区。
-
统计信息区
-
第一行
09:14:56 : 系统当前时间264 days, 20:56 : 系统开机到现在经过了多少时间1 users : 当前2用户在线load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
-
第二行
Tasks:任务;87 total:很好理解,就是当前有87个任务,也就是87个进程。1 running:1个进程正在运行86 sleeping:86个进程睡眠0 stopped:停止的进程数0 zombie:僵死的进程数
-
第三行
Cpu(s):表示这一行显示CPU总体信息0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。0.7%sy:内核占用CPU时间百分比0.0%ni:改变过优先级的进程占用CPU的百分比99.3%id:空闲CPU时间百分比0.0%wa:等待I/O的CPU时间百分比0.0%hi:CPU硬中断时间百分比0.0%si:CPU软中断时间百分比注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
-
第四行
Men:内存的意思8175320kk total:物理内存总量8058868k used:使用的物理内存量116452k free:空闲的物理内存量283084k buffers:用作内核缓存的物理内存量
-
第五行
Swap:交换空间6881272k total:交换区总量4010444k used:使用的交换区量2870828k free:空闲的交换区量4336992k cached:缓冲交换区总量
-
-
进程信息区
| 列名 | 含义 |
|---|---|
| PID | 进程ID |
| USER | 进程所有者的用户名 |
| PR | 进程的优先级别,越小越优先被执行 |
| NI | nice值。负值表示高优先级,正值表示低优先级 |
| VIRT | 进程使用的虚拟内存总量,单位kb |
| RES | 进程使用的、未被换出的物理内存大小,单位kb |
| SHR | 共享内存大小,单位kb |
| S | 进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 |
| %CPU | 上次更新到现在的CPU时间占用百分比 |
| %MEM | 进程使用的物理内存和总内存的百分比 |
| TIME+ | 该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 |
| COMMAND | 进程启动命令名称 |
操作指令
- q:退出top命令
- :立即刷新
- s:设置刷新时间间隔
- c:显示命令完全模式
- t::显示或隐藏进程和CPU状态信息
- m:显示或隐藏内存状态信息
- l:显示或隐藏uptime信息
- f:增加或减少进程显示标志
- S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
- P:按%CPU使用率排行
- T:按MITE+排行
- M:按%MEM排行
- u:指定显示用户进程
- r:修改进程renice值
- kkill:进程
- i:只显示正在运行的进程
- W:保存对top的设置到文件^/.toprc,下次启动将自动调用toprc文件的设置。
- h:帮助命令。
- q:退出
注:
强调一下,使用频率最高的是P、T、M,因为通常使用top,我们就想看看是哪些进程最耗cpu资源、占用的内存最多.
实例1:多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况;
实例2:显示完整的程序命令
命令:top -c
实例3:显示指定的进程信息
命令:top -p pidid
free 查询可用内存
命令描述:
free用于显示当前系统中内存的使用量信息。
命令语法:
free [-bkmotV][-s <间隔秒数>]
命令参数说明:
| 参数 | 说明 |
|---|---|
| -b | 以Byte为单位显示内存使用情况 |
| -k | 以KB为单位显示内存使用情况 |
| -m | 以MB为单位显示内存使用情况 |
| -h | 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。 |
示例:
- 显示当前系统中内存的使用量信息。
free -h
total used free shared buff/cache available
Mem: 1.8G 348M 100M 844K 1.4G 1.3G
Swap: 0B 0B 0B
命令输出说明:
| 参数 | 说明 |
|---|---|
| total | 物理内存总数 |
| used | 已经使用的内存数 |
| free | 空间的内存数 |
| share | 多个进程共享的内存总额 |
| buff/cache | 应用使用内存数 |
| available | 可用的内存数 |
| Swap | 虚拟内存 |
lsof
命令格式:
lsof [options] filename
命令参数
-a:列出打开文件存在的进程;-c<进程名>:列出指定进程所打开的文件;-g:列出GID号进程详情;-d<文件号>:列出占用该文件号的进程;+d<目录>:列出目录下被打开的文件;+D<目录>:递归列出目录下被打开的文件;-n<目录>:列出使用NFS的文件;-i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip );-p<进程号>:列出指定进程号所打开的文件;-u:列出UID号进程详情;-h:显示帮助信息;-v:显示版本信息。
示例:
查找某个文件相关的进程
lsof /bin/bash
列出某个用户打开的文件信息
lsof -u username
-u 选项,u是user的缩写
通过某个进程号显示该进程打开的文件
lsof -p 27358
列出某个程序进程
lsof -c mysql
或
lsof | grep mysql
查看所有网络连接
lsof -i 和 lsof -i@127.0.0.1
查看端口连接情况
lsof -i :22
查看指定进程打开的网络连接
lsof -i -a -p 1535
使用了参数-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进程。
查看指定状态的网络连接
lsof -n -P -i TCP -s TCP:ESTABLISHED
恢复被删除的日志
假设我们要恢复被删除的cron日志:
1.首先通过losf命令找到使用cron文件的进程的PID和cron文件的FD(文件描述符);
[root@hecs-229953 local]# lsof | grep /var/log/cron rsyslogd 819 root 5w REG 253,1 24383 2230481 /var/log/cron (deleted) rsyslogd 819 836 in:imjour root 5w REG 253,1 24383 2230481 /var/log/cron (deleted) rsyslogd 819 840 rs:main root 5w REG 253,1 24383 2230481 /var/log/cron (deleted)从上面命令输出可以看到,这个打开/var/log/cron文件的进程的PID是819,文件/var/log/cron的FD(文件描述符)是4,状态为deleted,标记被删除,但其实该文件并没有从磁盘中删除。
2.如果删除的文件还存在操作的进程,数据将可能被找回,可以在/proc/819/fd/5找到被删除的/var/log/cron文件;
[root@hecs-229953 local]# wc -l /proc/819/fd/5 300 /proc/819/fd/53.恢复被删除的/var/log/secure文件;
[root@hecs-229953 local]# touch /var/log/cron [root@hecs-229953 local]# cat /proc/819/fd/5 >/var/log/cron在Linux系统中删除了一个文件,只要进程还在对文件进行操作,就可能还存在一个inode的引用:/proc/进程号/fd/文件描述符,只要知道当前打开文件的进程pid和文件描述符fd,即可利用lsof命令还原出被删除的文件。
vmstat 监视内存使用情况
命令格式:
vmstat [-V] [-n] [delay [count]]
命令参数
- -V表示打印出版本信息;
- -n表示在周期性循环输出时,输出的头部信息仅显示一次;
- delay是两次输出之间的延迟时间;
- count是指按照这个时间间隔统计的次数。
实例:
vmstat n m (n 为监控频率、m为监控次数)
[root@hecs-229953 local]# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st4 0 0 499888 234532 867032 0 0 10 27 68 25 0 0 100 0 00 0 0 499620 234536 867040 0 0 0 10 107 233 0 0 100 0 01 0 0 499652 234536 867040 0 0 0 6 80 173 0 0 100 0 00 0 0 499652 234536 867040 0 0 0 10 59 128 0 0 100 0 00 0 0 499652 234536 867040 0 0 0 2 57 129 0 0 100 0 0
字段说明
-
Procs(进程):
r: 运行队列中进程数量b: 等待IO的进程数量
-
Memory(内存):
swpd: 使用虚拟内存大小free: 可用内存大小buff: 用作缓冲的内存大小cache: 用作缓存的内存大小
-
Swap:
si: 每秒从交换区写到内存的大小so: 每秒写入交换区的内存大小
-
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数bo: 每秒写入的块数
-
system:
in: 每秒中断数,包括时钟中断cs: 每秒上下文切换数
-
CPU(以百分比表示)
us: 用户进程执行时间(user time)sy: 系统进程执行时间(system time)id: 空闲时间(包括IO等待时间)wa: 等待IO时间
iostat 监视I/O子系统
命令格式:
iostat[参数][时间][次数]
命令参数
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
iostat命令执行报错
执行iostat报以下错误
-bash: iostat: command not found
解决:
yum install -y sysstat
sysstat包中包括iostat,mpstat,sar,sa
显示所有设备负载情况
iostat
Linux 4.18.0-348.7.1.el8_5.x86_64 (hecs-229953) 04/26/2023 _x86_64_ (1 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.13 0.01 0.16 0.04 0.00 99.66Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.78 10.45 26.94 3771865 9723628
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
注:
%iowait的值过高,表示硬盘存在I/O瓶颈
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
disk属性值说明:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/swrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/sr/s: 每秒完成的读 I/O 设备次数。即 rio/sw/s: 每秒完成的写 I/O 设备次数。即 wio/srsec/s: 每秒读扇区数。即 rsect/swsec/s: 每秒写扇区数。即 wsect/srkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。wkB/s: 每秒写K字节数。是 wsect/s 的一半。avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。avgqu-sz: 平均I/O队列长度。await: 平均每次设备I/O操作的等待时间 (毫秒)。svctm: 平均每次设备I/O操作的服务时间 (毫秒)。%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。
pidof
命令描述:
pidof命令用于查询指定服务进程的PID值。
命令格式:
pidof [服务名称]。
命令参数:
| 参数 | 说明 |
|---|---|
| -s | 仅返回一个进程号 |
| -c | 只显示运行在root目录下的进程,这个选项只对root用户有效 |
| -o | 忽略指定进程号的进程 |
| -x | 显示由脚本开启的进程 |
kill
命令描述:
kill命令用于终止指定PID的服务进程。
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
命令格式:
kill [参数] [进程PID]。
killall
命令描述:
killall命令用于终止指定名称的服务对应的全部进程。
命令格式:
killall [进程名称]。
ifconfig
命令描述:
ifconfig命令用于获取网卡配置与网络状态等信息。
示例:
- 获取网卡配置与网络状态等信息。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.16.132.195 netmask 255.255.240.0 broadcast 172.16.143.255ether 00:16:3e:27:07:6b txqueuelen 1000 (Ethernet)RX packets 121407 bytes 166486076 (158.7 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 17986 bytes 3463780 (3.3 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
命令输出说明:
- 第一部分的第一行显示网卡状态信息。
- eth0表示第一块网卡。
- UP代表网卡开启状态。
- RUNNING代表网卡的网线被接上。
- MULTICAST表示支持组播。
- 第二行显示网卡的网络信息。
- inet(IP地址):172.16.132.195。
- broadcast(广播地址):172.16.143.255。
- netmask(掩码地址):255.255.240.0。
- RX表示接收数据包的情况,TX表示发送数据包的情况。
- lo表示主机的回环网卡,是一种特殊的网络接口,不与任何实际设备连接,而是完全由软件实现。与回环地址(127.0.0.0/8 或 ::1/128)不同,回环网卡对系统显示为一块硬件。任何发送到该网卡上的数据都将立刻被同一网卡接收到。
uname
命令描述:
uname命令用于查看系统内核与系统版本等信息。
命令语法:
uname [-amnrsv][–help][–version]
示例:
显示系统信息。
uname -a
命令输出结果:
Linux VM-16-5-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
显示当前系统的硬件架构。
uname -i
命令输出结果:
x86_64
###显示操作系统发行编号。
uname -r
命令输出结果:
3.10.0-1160.11.1.el7.x86_64
显示操作系统名称。
uname -s
命令输出结果:
Linux
显示主机名称。
uname -n
命令输出结果:
VM-16-5-centos
uptime
命令描述:
uptime 用于查看系统的负载信息。
示例:
查看系统的负载信息。
uptime
14:15:19 up 28 days, 17:54, 1 user, load average: 0.00, 0.01, 0.05
命令输出说明:
| 负载信息 | 命令输出值 |
|---|---|
| 当前服务器时间 | 14:15:19 |
| 当前服务器运行时长 | 28 days |
| 当前用户数 | 1 user |
| 当前负载情况 | load average: 0.00, 0.01, 0.05(分别取1min,5min,15min的均值) |
who
命令描述:
who 命令显示关于当前在本地系统上的所有用户的信息。
示例:
显示当前登录系统的用户
who
root pts/0 2022-10-25 13:49 (ip)
root pts/1 2022-10-25 14:25 (ip)
显示用户登录来源
who -l -H
NAME LINE TIME IDLE PID COMMENT
LOGIN tty1 2022-09-26 20:21 1569 id=tty1
LOGIN ttyS0 2022-09-26 20:21 1568 id=tyS0
只显示当前用户
who -m -H
root pts/1 2022-10-25 14:25 (ip)
精简模式显示
who -q
root root
# users=2
last
命令描述:
last 命令用于显示用户最近登录信息。
示例:
显示用户最近登录信息。
last
由于这些信息都是以日志文件的形式保存在系统中,黑客可以很容易地对内容进行篡改,所以该命令输出的信息并不能作为服务器是否被入侵的依据。
history
命令描述:
history命令用于显示历史执行过的命令。
bash默认记录1000条执行过的历史命令,被记录在~/.bash_history文件中。
#查看输过的历史命令
history
#查看某条历史记录
!行号
#查看上一条历史记录
!!
示例:
显示最新10条执行过的命令。
history 10
371 2022-10-25 14:14:22 uname -s372 2022-10-25 14:14:41 uname -n373 2022-10-25 14:15:19 uptime374 2022-10-25 14:16:53 free -h375 2022-10-25 14:25:33 who376 2022-10-25 14:26:17 who -l -H377 2022-10-25 14:26:50 who -m -H378 2022-10-25 14:27:28 who -q379 2022-10-25 14:28:59 last380 2022-10-25 14:29:31 history 10

清除历史记录。
history -c
df
管理磁盘分区时经常会使用 df (disk free) 命令
[root@iZ2ze1w1u469cdn5e13ph8Z ~]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1929372 0 1929372 0% /dev
tmpfs 1939956 0 1939956 0% /dev/shm
tmpfs 1939956 500 1939456 1% /run
tmpfs 1939956 0 1939956 0% /sys/fs/cgroup
/dev/vda1 103080204 2426964 96233012 3% /
tmpfs 387992 0 387992 0% /run/user/0
每一列的含义如下:
| 列 | 说明 |
|---|---|
| Filesystem | 代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)。 |
| kbytes | 分区包含的数据块(1024字节)的数目。 |
| used | 已用空间。 |
| avail | 可用空间。 |
| capacity | 已用空间的百分比。 |
| Mounted on | 文件系统挂载点。 |
命令语法
#df [选项]… [文件]…
参数说明
| 参数 | 参数说明 |
|---|---|
| -a, --all | 包括伪、重复、不可访问的文件系统 |
| -B, --block-size=SIZE | 打印前按大小缩放大小;例如。“-BM”以1048576字节为单位打印大小 |
| –direct | 显示文件的统计信息而不是装入点 |
| –total | 产生总计 |
| -h, --human-readable | 人类便于阅读方式展示,(例如1K 234M 2G) |
| -H, --si | 人类便于阅读方式展示,但使用1000而不是1024的幂 |
| -i, --inodes | 显示inode 信息而非块使用量 |
| -k | 即–block-size=1K |
| -l, --local | 只显示本机的文件系统 |
| –no-sync | 取得使用量数据前不进行同步动作(默认) |
| –output[=FIELD_LIST] | 使用字段列表定义的输出格式,或者如果省略字段列表,则打印所有字段。 |
| -P, --portability | 使用POSIX输出格式 |
| –sync | 在获取使用信息之前调用同步 |
| -t, --type=TYPE | 将列表限制为类型为的文件系统 |
| -T, --print-type | 打印文件系统类型 |
| -x, --exclude-type=TYPE | 将列表限制为非类型的文件系统 |
| -v | 忽略,暂时无明确用途 |
| –help | 显示此帮助信息并退出 |
| –version | 显示版本信息并退出 |
du
du (disk usage) 命令可以用来查看特定目录的空间使用情况。
du 命令会显示每个目录所占用数据块。根据系统的不同,一个数据块可能是 512 字节或 1024 字节。
参数说明:
- -h 人性化显示
- -s 递归整个目录的大小
用法:
| 命令 | 说明 |
|---|---|
| du -h | 查看当前目录、所有子目录大小(以MB为计数单位) |
| du -sh | 查看当前目录大小。只展示当前目录的大小,所包含的目录统计在内 |
| du -sh * | 查看当前目录大小。展示所包含的所有目录大小 |
| du -sh * --time | 查看当前目录大小,并展示最近更新时间 |
| du -sh * |sort -rh | 查看当前目录大小,并排序 |
挂载文件系统
查看当前系统所挂载的硬件设备可以使用 mount 命令:
[root@iZ2ze1w1u469cdn5e13ph8Z /]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
一般约定,/mnt 为临时挂载目录,例如挂载CD-ROM、远程网络设备、软盘等。 也可以通过mount命令来挂载文件系统
命令语法:
mount -t file_system_type device_to_mount directory_to_mount_to
例如:
[root@hecs-229953 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 893M 0 893M 0% /dev
tmpfs 909M 0 909M 0% /dev/shm
tmpfs 909M 8.5M 900M 1% /run
tmpfs 909M 0 909M 0% /sys/fs/cgroup
/dev/vda1 40G 3.4G 34G 9% /
tmpfs 182M 0 182M 0% /run/user/0
将 /mnt/cdrom 挂载到 /dev/vda1 目录。
$ mount /dev/vda1 /mnt/cdrom
注意:file_system_type用来指定文件系统类型,通常可以不指定,Linux会自动正确选择文件系统类型。
挂载文件系统后,就可以通过 cd、cat 等命令来操作对应文件。
可以通过 umount 命令来卸载文件系统。例如,卸载 cdrom:
$ umount /dev/cdrom
不过,大部分现代的Linux系统都有自动挂载卸载功能,unmount 命令较少用到。
find
格式:
find 搜索路径 [选项] 搜索内容
按照文件名搜索
选项:
- -name: 按照文件名搜索;
- -iname: 按照文件名搜索,不区分文件名大小;
- -inum: 按照 inode 号搜索;
示例:
find /-name yum.conf
按照文件大小搜索
选项:
- -size[±]大小:按照指定大小搜索文件
**“+”**的意思是搜索比指定大小还要大的文件
“-” 的意思是搜索比指定大小还要小的文件
单位:
‘c’ for bytes
#搜索单位是c,按照字节搜索
‘w’ for two-byte words
#搜索单位是w,按照双字节(中文)搜索
'k’for Kilobytes (units of 1024 bytes)
#按照KB单位搜索,必须是小写的k
‘M’ for Megabytes (units of 1048576 bytes)
#按照MB单位搜索,必须是大写的M
‘G’ for Gigabytes (units of 1073741824 bytes)
#按照GB单位搜索,必须是大写的G
示例:
#当前目录下,査找大小刚好是25KB的文件,可以找到find.-size 25k
#搜索小于25KB的文件,可以找到很多文件
find .-size -25k
#而当前目录下没有大于25KB的文件find.-size +25k
按照修改时间搜索
选项:
- -atime [±]时间: 按照文件访问时间搜索
- -mtime [±]时间: 按照文改时间搜索
- -ctime [±]时间: 按照文件修改时间搜索
这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 "[±]"时间的含义。
- -5:代表@内修改的文件。
- 5:代表前5~6天那一天修改的文件。
- +5:代表6天前修改的文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kl21Y0AQ-1682565600494)(\图片\find_mtime.jpg)]
按照权限搜索
选项:
- -perm 权限模式:査找文件权限刚好等于"权限模式"的文件
- -perm -权限模式:査找文件权限全部包含"权限模式"的文件
- -perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件
示例:
find.-perm 200
#按照指定权限搜索文件,文件的权限必须和搜索指定的权限一致,才能找到
按照文件类型搜索
选项:
- -type d:查找目录
- -type f:查找普通文件
- -type l:查找软链接文件
逻辑运算符
选项:
- -a:and逻辑与
- -o:or逻辑或
- -not:not逻辑非
示例:
find.-size +2k -a -type f
#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件
grep
-e: 使用正则搜索
-i: 不区分大小写
-v: 查找不包含指定内容的行
-w: 按单词搜索
-c: 统计匹配到的次数
-n: 显示行号
-r: 逐层遍历目录查找
-A: 显示匹配行及后面多少行, 如: -A3, 则表示显示匹配行及后3行
-B: 显示匹配行及前面多少行, 如: -B3, 则表示显示匹配行及前3行
-C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行
--color: 匹配到的内容高亮显示
--include: 指定匹配的文件类型
--exclude: 过滤不需要匹配的文件类型
sed
基本用法:
sed + 选项 + “指令” 文件
常用选项:
-e --它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时使用
-f --后跟保存了sed指令的文件
-i --直接对内容进行修改,不加 i 时默认只是预览,不会对文件进行实际修改
-n --取消默认输出,sed默认会输出所有文本内容,使用 -n 参数后只显示处理过的行
编辑命令:
a --追加,向匹配行后插入内容
c --更改,更改匹配行的内容
i --插入,向匹配行前插入内容
d --删除,删除匹配的内容
s --替换,替换匹配到的内容
p --打印,打印匹配到的内容,通常与 -n 和用
= --用来打印被匹配到的行的行号
n --读取下一行,遇到n时会自动跳入下一行
r,w --读和写,r用于将内容读入文件,w用于将匹配内容写入到文件
awk 数据流处理工具awk脚本结构
命令语法
awk ' BEGIN{ statements } statements2 END{ statements } '
- 工作方式
1.执行begin中语句块;
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块;
示例
echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
print var1, var2 , var3; }'
$>v1 V2 v3
alias
执行命令输出
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
解释:
假如你输入的是rm命令,实际服务器执行的命令是 rm -i
添加别名
alias rm='rm -i'
卸载别名
unalias rm
sort 排序
字段说明
- -n 按数字进行排序
- -d 按字典序进行排序
- -r 逆序排序
- -k N 指定按第N列排序
示例:
sort -nrk 1 data.txt
sort -bd data // 忽略像空格之类的前导空白字符
paste按列拼接文本
字段说明:
-d指明定界符
示例:
[root@hecs-229953 local]# cat a.txt
第一行
第二行
第三行
[root@hecs-229953 local]# cat b.txt
A
B
C
D[root@hecs-229953 local]# paste a.txt b.txt
第一行 A
第二行 B
第三行 CD
[root@hecs-229953 local]# paste a.txt b.txt -d '|'
第一行|A
第二行|B
第三行|C
|D
wc 统计行和字符的工具
$wc -l file // 统计行数$wc -w file // 统计单词数$wc -c file // 统计字符数
print 打印当前行
- 使用不带参数的print时,会打印当前行
echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
- print 以逗号分割时,参数以空格定界;
echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
print var1, var2 , var3; }'
$>v1 V2 v3
- 使用-拼接符的方式(”“作为拼接符);
echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
print var1"-"var2"-"var3; }'
$>v1-V2-v3
ftp sftp lftp ssh 连接
SSH登陆:
$ssh ID@host
ssh登陆远程服务器host,ID为用户名。
ftp/sftp文件传输:
$sftp ID@host
登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作:
- get filename # 下载文件
- put filename # 上传文件
- ls # 列出host上当前路径的所有文件
- cd # 在host上更改当前路径
- lls # 列出本地主机上当前路径的所有文件
- lcd # 在本地主机更改当前路径
lftp同步文件夹(类似rsync工具):
lftp -u user:pass host
lftp user@host:~> mirror -n
scp 复制
语法
scp [参数] [原路径] [目标路径]
参数选项:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)-p 保留原文件的修改时间,访问时间和访问权限。-q 不显示传输进度条。-r 递归复制整个目录。-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。-l limit 限定用户所能使用的带宽,以Kbit/s为单位。-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,-P port 注意是大写的P, port是指定数据传输用到的端口号-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
示例:
scp -r ID@site:path localpath
用户管理工具
用户
添加用户
$useradd -m username
该命令为用户创建相应的帐号和用户目录/home/username;
用户添加之后,设置密码:
密码以交互方式创建:
$passwd username
删除用户
$userdel -r username
不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项;
帐号切换 登录帐号为userA用户状态下,切换到userB用户帐号工作:
$su userB
进入交互模型,输入密码授权进入;
用户的组
将用户加入到组
默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组:
$groups
一个用户可以属于多个组,将用户加入到组:
$usermod -G groupNmame username
变更用户所属的根组(将用加入到新的组,并从原有的组中除去):
$usermod -g groupName username
查看系统所有组
系统的所有用户及所有组信息分别记录在两个文件中:/etc/passwd , /etc/group 默认情况下这两个文件对所有用户可读:
查看所有用户及权限:
$more /etc/passwd
查看所有的用户组及权限:
$more /etc/group
用户权限
使用ls -l可查看文件的属性字段,文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文件是一个普通文件。字母”d”表示该文件是一个目录,字母”d”,是dirtectory(目录)的缩写。 后面的9个字母为该文件的权限标识,3个为一组,分别表示文件所属用户、用户所在组、其它用户的读写和执行权限; 例如:
[/home/weber#]ls -l /etc/group
-rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a
表示这个文件对文件拥有者colin这个用户可读写、可执行;对colin所在的组(king)可读可写;对其它用户只可读;
更改读写权限
使用chmod命令更改文件的读写权限,更改读写权限有两种方法,一种是字母方式,一种是数字方式
字母方式:
$chmod userMark(+|-)PermissionsMark
userMark取值:
- u:用户
- g:组
- o:其它用户
- a:所有用户
PermissionsMark取值:
- r:读
- w:写
- x:执行
例如:
$chmod a+x main 对所有用户给文件main增加可执行权限
$chmod g+w blogs 对组用户给文件blogs增加可写权限
数字方式:
数字方式直接设置所有权限,相比字母方式,更加简洁方便;
使用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
例如:
$chmod 740 main 将main的用户权限设置为rwxr-----
更改文件或目录的拥有者
$chown username dirOrFile
使用-R选项递归更改该目下所有文件的拥有者:
$chown -R weber server/
查看硬件信息
查询CPU信息:
cat /proc/cpuinfo
查看CPU的核的个数:
cat /proc/cpuinfo | grep processor | wc -l
查看内存信息:
cat /proc/meminfo
显示架构:
arch
crontab 定时任务
命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
命令参数
- -u user:用来设定某个用户的crontab服务;
- file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
- -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
- -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
- -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
- -i:在删除用户的crontab文件时给确认提示。
crontab的文件格式
分 时 日 月 星期 要运行的命令
- 第1列分钟0~59
- 第2列小时0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列要运行的命令
追加脚本到crontab
echo "0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1" >>/var/spool/cron
启动:
service cron restart
相关文章:
liunx笔记
快捷键 #移动到行首 ctrla #移动到行尾 ctrle #删除光标之前的字符 ctrlu #删除光标之后的字符 ctrlk #清屏 ctrll正则表达式 正则中普通常用的元字符 元字符功能.匹配除了换行符以外的任意单个字符*前导字符出现0次或连续多次.*任意长度字符^行首(以…开头),如…...
vue3 封装ECharts组件
一、前言 前端开发需要经常使用ECharts图表渲染数据信息,在一个项目中我们经常需要使用多个图表,选择封装ECharts组件复用的方式可以减少代码量,增加开发效率。 ECharts图表大家应该用的都比较多,基础的用法就不细说了ÿ…...
Spring Security 6.0系列【30】授权服务器篇之JOSE规范
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 本系列Spring Authorization Server 版本 1.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. JOSE 规范3. JW…...
维度表设计原则
维度的作用一般是查询约束、分类汇总以及排序等,我们在进行维度表设计时,应当提前考虑: (1)维度属性尽量丰富,为数据使用打下基础 比如淘宝商品维度有近百个维度属性,为下游的数据统计、分析、…...
【requests模块上】——02爬虫基础——如桃花来
目录索引 requests请求:1. 基于get请求:*基础写法:**带参数的get请求:* 2. 基于post请求: 获取数据:1. 获取json数据:2. 获取二进制数据: 初步伪装小爬虫——添加headers: 引入&…...
Springboot +Flowable,详细解释啥叫流程实例(一)
一.简介 上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需…...
信息安全复习十:Web与电子商务安全
一、章节梗概 1.信息安全的学科内容 2.Web和电子商务安全问题提出 3.安全套接字协议SSL与传输层安全协议TLS 4.安全电子交易(SET)简要介绍 复习: 密码学内容:对称密钥密码、公开密钥密码、报文鉴别 PKI:数字签名、数字证书、信任关系 身份认…...
flutter 启动其他app server或者页面失败
1.目标Service 设置 android:exported"true" 2.目标Service需要声明自定义权限。客户端需要声明权限。 3.目标Service需要添加<intent-filter></intent-filter> 检查以上的声明和权限, 如果还是不行 说明是 Android 11引入了*包可见性*’ …...
【linux-进程2】进程控制
🌈环境变量 🍄初识 系统带的命令可以直接运行(ls ll命令等),但是我们自己写的命令必须要带上路径才能运行(./myproc),这是什么原因导致的?如果我们也想自己写的命令直接…...
【五一创作】多域名环境和Office 365混合部署方案
目录 一、多域名环境是什么? 二、Office 365是什么? 三、多域名环境与Office 365的结合 总结 一、多域名环境是什么? 多域名环境指的是一个企业拥有多个域名,这些域名可能隶属于不同的子公司、部门或者品牌,但是都归属于同一个母公司。例如,一个中国电信集团旗下有…...
Vue:路由route
一、概念 1、组成 每一个路由都由 key 和 value 组成。 keyvalue路由 route。 2、本质 路由的本质:一个路由表达了一组对应关系。路由器的本质:管理多组对应关系。 3、路由的工作原理 点击之后路径变化——>路由器监视到变化——>根据路径…...
Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复
在近期,一种名为faust后缀的勒索病毒威胁已经引起了全球计算机系统安全领域的关注。faust勒索病毒是一种基于RSA加密算法的恶意软件,能够加密目标计算机系统上的所有文件,并向用户勒索赎金来承诺解密恢复操作。下面为大家介绍一下Windows系统…...
Java面试题总结 | Java面试题总结7- Redis模块(持续更新)
Redis 文章目录 Redisredis的线程模型Redis的Mysql的区别Redis和传统的关系型数据库有什么不同?Redis常见的数据结构zset数据结构Redis中rehash过程redis为什么不考虑线程安全的问题呢Redis单线程为什么还能这么快?为什么Redis是单线程的?red…...
虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?
PART 1 案例详情 自建造初期以来,起重机行业已经走了很长一段路。技术的使用在行业进步中发挥了重要作用,降低了使用桥式起重机的危险性。特别是,智能、非接触式测量解决方案通过使用高架升降机更安全、更高效、更高效,为行业的进…...
流程图拖拽视觉编程-流程编辑器
目录 一、简介 二、流程编辑器-视图实现 三、参考资料 一、简介 前期文章: 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 本期内容: 本期将介绍流程编辑器模块的实现方法,效果图如下所示。该模块基于QT Graphics/View实现&…...
6.hashcode与equals区别与联系
1.hashCode介绍 hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。 这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。 2.equals介…...
智能家居“落地者”:三翼鸟用场景方案持续链接大众消费
互联网分析沙龙(techxue)原创 作者 | 锡海 编辑 | 七喜 从上海车展再到AWE2023展会,只要有大型活动的地方,都能看到人潮汹涌的景象,久违的烟火气又回来了。数据显示,社会消费已出现较为强劲反弹࿰…...
【MATLAB图像处理实用案例详解(12)】——利用BP神经网络实现图像压缩
目录 一、图像压缩二、BP神经网络实现图像压缩原理三、算法步骤3.1 图像块划分3.2 归一化3.3 建立BP神经网络3.4 保存结果 四、效果演示 一、图像压缩 常见的文件压缩软件如WinZip、WinRAR等采用的是无损压缩,能够完全恢复原文件内容。多媒体信息具有信息量大、冗余…...
java学习之枚举
目录 一、枚举引出 二、分析问题 三、 解决方案-枚举 四、枚举的二种实现方式 五、应用案例 六、小结 一、枚举引出 package enum_;public class Enumeration01 {public static void main(String[] args) {Season spring new Season("春天", "温暖")…...
IPsec中IKE与ISAKMP过程分析(主模式-消息2)
IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec协议族中IKE(Internet Key Exchange)是一种基于ISAKMP的协议,它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制。简单来说ÿ…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
