Linux调优相关命令汇总

Linux调优相关命令汇总

TIPS

本文基于CentOS 7编写,理论支持所有所有版本Linux发行版,部分命令的个别参数在不同版本中可能存在细微的差异。

入门级

# 切换目录
cd
# 示例
# 切换到上一层目录
cd ..
# 切换到/opt/software
cd /opt/software# 显示工作目录
pwd# 显示指定工作目录下之内容
ls
# 示例
# 列出当前目录中文件及目录的详情
ls -l
# 列出当前目录及其子目录中文件及目录的详情
ls -lR# 创建目录
mkdir
# 示例
# 创建目录aaa
mkdir aaa
# 在bbb目录下创建目录aaa,如果bbb目录不存在,就创建一个
mkdir -p bbb/aaa# 删除目录
rmdir
# 示例
# 删除目录aaa
rmdir aaa
# 删除bbb目录下的aaa目录,如果aaa删除后,bbb目录为成为空目录,则将bbb也删除
rmdir -p bbb/aaa# 将指定文件的访问时间及修改时间设为当前时间,若文件不存在,则会自动创建该文件
touch
# 示例
# 将aaa文件的访问时间及修改时间设为当前时间,如果aaa不存在,则会自动创建该文件
touch aaa# 删除文件或目录(一旦通过rm命令删除,将无法恢复,务必小心使用)
rm
# 示例
# 删除test.txt(此格式只能rm 文件;如果使用了rm 目录,则会提示是目录,无法删除)
rm  test.txt 
# 递归删除test_dir目录及其内容
rm  -r test_dir# 为文件或目录改名、或将文件或目录移入其它位置
mv
# 示例
# 将test.txt改名为damu.txt
mv test.txt damu.txt
# 将aaa目录放入bbb目录中;如果bbb目录不存在,则将aaa改名为bbb
mv aaa bbb# 以树状图列出目录的内容
tree# 杀死进程
kill
# 示例
# 杀死9999这个进程
kill 9999
# 查看信号
kill -l
# 发送SIGHUP信号杀死9999这个进程
kill -HUP 9999
# 使用SIGKILL信号杀死9999这个进程
kill -9 9999# 将所有行程以树状图显
pstree
# 示例
# 展示该进程的完整指令及参数
pstree -a# 关机
# 示例:
shutdown
# 立即关机
shutdown -h now
# 10分钟后关机
shutdown -h 10
# 立即重启
shutdown -r now# 重启
reboot# 设置或显示环境变量
export
# 示例
# 列出当前的环境变量
export -p
# 设置环境变量JAVA_HOME=xxx
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home# 设定权限
# u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
# + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
# r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
chmod 
# 示例
# 将test.txt设为所有人皆可读取
chmod a+r test.txt
# 将文件test1.txt与test2.txt设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
chmod ug+w,o-w test1.txt test2.txt
# 使用数字形式设置权限,语法是chmod abc file。其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
# r=4,w=2,x=1
# 若要rwx属性则4+2+1=7;
# 若要rw-属性则4+2=6;
# 若要r-x属性则4+1=5
chmod 777 file# 将指定文件或目录的拥有者改为指定的用户或组
chown
# 示例
# 将的拥有者设为nginx,群体的使用者nginx
chown nginx:nginx nginx.conf
# 递归将当前目录下的所有文件与子目录的拥有者皆设为nginx,群体的使用者为nginx
chown -R nginx:nginx *# 查找文件里符合条件的字符串
grep
# 示例
# 在当前目录中,查找后缀为txt的文件中,包含test字符串的文件,并打印字符串所属的行
grep test *txt
# 递归查找/opt目录中,包含test字符串的文件,并打印字符串所属的行
grep -r test /opt
# 查找1.txt中不包含test的行
grep -v test 1.txt# 打开文件并输出
# 示例
# 打开1.txt
cat 1.txt
# 为1.txt添加行号,并输出到2.txt中
cat -n 1.txt > 2.txt# 查找指定目录下的文件
find
# 查找当前目录下的所有txt文件
find . -name *.txt
# 查找机器中所有大于50M的文件
find / -type f -size +50M
# 查找机器中所有小于50M的文件,并用du -h展示出来
find / -type f -size +50M -exec du -h {} \;

系统

查看操作系统发行版本

不同的Linux发行版(例如CentOS与Debain)、以及不同版本(例如CentOS 6.x与CentOS 7.x)查看版本的方式不同,下面罗列了笔者知道的所有方式,总有一款能适用于你的环境。

  • 方法1:通过

    /etc
    

    目录下的文件查看

    • /etc/os-release
    • /etc/system-release
    • /etc/redhat-release
    • /etc/centos-release
    • /etc/issue
  • 方法2:执行 lsb_release -a

uname

作用:

显示系统信息

语法:

Usage: uname [OPTION]...
Print certain system information.  With no OPTION, same as -s.-a, --all                打印所有信息-s, --kernel-name        打印内核名称-n, --nodename           打印网络节点主机名-r, --kernel-release     打印内核版本-v, --kernel-version     打印内核版本-m, --machine            打印硬件名称-p, --processor          打印处理器类型-i, --hardware-platform  打印硬件平台-o, --operating-system   打印操作系统--help     帮助--version  显示版本

使用:

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

结果解读:

  • Linux:内核名称
  • localhost.localdomain:主机名
  • 3.10.0-327.el7.x86_64:内核版本
  • #1 SMP Thu Nov 19 22:10:57 UTC 2015:内核版本
  • x86_64:硬件名称
  • x86_64:处理器类型
  • x86_64:硬件平台
  • GNU/Linux:操作系统

常见用法:

uname -a

uptime

作用:

展示系统启动运行了多久

语法:

Usage:uptime [options]Options:-p, --pretty   对输出结果格式化-h, --help     展示帮助-s, --since    展示操作系统的启动时间-V, --version  展示版本

使用:

[root@localhost ~]# uptime18:52:01 up 48 days, 18:24,  4 users,  load average: 0.00, 0.01, 0.05

结果解读:

  • 18:52:01:当前时间
  • 48 days, 18:24:启动了48 days, 18:24这么久
  • 4 users:当前登录了2个用户
  • load average: 0.00, 0.01, 0.05:平局负载,后面的数字分别是最近1分钟、5分钟、15分钟的平均负载

用户相关

id

作用:展示用户的ID、以及所属群组的ID

语法:

Usage: id [OPTION]... [USER]
Print user and group information for the specified USER,
or (when USER omitted) for the current user.-a             忽略,只是为了和其他版本兼容-Z, --context  只打印当前用户的安全上下文-g, --group    只打印有效的group ID-G, --groups   打印所有group ID-n, --name     打印名称而不是号码,和-u/-g/-G配合使用-r, --real     打印真实ID而非有效ID,和-u/-g/-G配合使用-u, --user     只打印有效的用户ID-z, --zero     以NULL而非空格分隔结果--help     帮助--version  展示版本Without any OPTION, print some useful set of identified information.GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'id invocation'

使用:

# 查看当前用户相关信息
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)

结果解读:

  • uid:用户id及名称
  • gid:用户当前所使用的组的id及名称
  • groups:用户拥有的所有组的id及名称

常见用法:

# 查看当前用户相关信息
id
# 查看MySQL这个用户的相关信息
id mysql

TIPS

如果大家不知道什么是有效ID、什么是真实ID,可以阅读下这个文章:https://www.annhe.net/article-4458.html

w

作用:

展示当前登录系统的用户信息

语法:

Usage:w [options]Options:-h, --no-header     do not print header-u, --no-current    ignore current process username-s, --short         short format-f, --from          show remote hostname field-o, --old-style     old style output-i, --ip-addr       display IP address instead of hostname (if possible)--help     display this help and exit-V, --version  output version information and exit

使用:

[root@localhost ~]# w18:55:14 up 48 days, 18:28,  4 users,  load average: 0.05, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    222.94.228.56    18:07   42:34   0.04s  0.04s -bash
root     pts/1    222.94.228.56    18:18   24:50   0.25s  0.06s -bash
root     pts/2    222.94.228.56    18:41   13:48   0.02s  0.02s -bash
root     pts/3    222.94.228.56    18:49    2.00s  0.05s  0.02s w

结果解读:

  • 第一行:类似uptime
  • USER:当前登录的用户有哪些
  • TTY:虚拟终端的别名,可以认为是一个会话的名称
  • FROM:你从那台机器登录进来的
  • LOGIN:什么时候登录的
  • IDLE:空闲时间
  • JCPU:是指连接上这个TTY的所有进程所占用的时间,不包括过去的后台作业时间;
  • PCPU:当前进程所占用的时间
  • WHAT:这个用户当前运行的进程是什么

who

作用:展示当前登录用户的信息

语法:

Usage: who [OPTION]... [ FILE | ARG1 ARG2 ]
Print information about users who are currently logged in.-a, --all         等价于-b -d --login -p -r -t -T -u-b, --boot        系统启动时间-d, --dead        打印死亡的进程-H, --heading     打印标题-l, --login       打印系统登录过程--lookup      尝试通过DNS规范化主机名-m                相当于who am i-p, --process     打印由init产生的活动进程-q, --count       显示登入系统的用户名和总人数-r, --runlevel    打印当前运行级别-s, --short       仅打印name, line, time(默认)-t, --time        打印最近的系统时钟修改-T, -w, --mesg    将用户的消息状态添加为+,-或?-u, --users       列出登录的用户--message     和-T相同--writable    和-T相同--help     帮助--version  版本If FILE is not specified, use /var/run/utmp.  /var/log/wtmp as FILE is common.
If ARG1 ARG2 given, -m presumed: 'am i' or 'mom likes' are usual.GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'who invocation'

使用:

[root@localhost ~]# who
root     pts/0        2020-06-27 23:51 (222.94.228.56)
root     pts/1        2020-06-27 21:54 (222.94.228.56)

结果解读:

  • root:登录的用户是谁
  • pts/0:虚拟终端别名
  • 2020-06-27 23:51 (222.94.228.56):登录时间与远程IP

常见用法:

# 显示当前登录系统的用户
who# 展示详情,相当于who -b -d --login -p -r -t -T -u
who -a# 显示自己的信息
who am i# 打印标题
who -H# 显示登入系统的用户名和总人数
who -q

whoami

作用:

显示自身用户名称

语法:

Usage: whoami [OPTION]...
Print the user name associated with the current effective user ID.
Same as id -un.--help     帮助--version  版本GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'whoami invocation'

使用:

whoami

last

作用:

显示用户最近登录信息

语法:

Usage: last [-num | -n num] [-f file] [-t YYYYMMDDHHMMSS] [-R] [-adioxFw] [username..] [tty..]

常用参数:

  • -R:结果省略从哪里登录的一栏
  • -num/-n/num:展示前num条
  • username:展示指定用户的登录信息
  • tty:只显示指定虚拟终端的登录信息

更多参数详见 man last

使用:

[root@localhost ~]# last 
root     pts/1        222.94.228.56    Mon Jun 29 22:53   still logged in   
root     pts/0        222.94.228.56    Mon Jun 29 22:47   still logged in   
root     pts/5        222.94.228.56    Sat Jun 27 23:58 - 03:07  (03:08)    
root     pts/0        222.94.228.56    Sat Jun 27 23:51 - 00:56  (01:04)    
root     pts/4        222.94.228.56    Sat Jun 27 23:39 - 00:56  (01:17)    

结果解读:

  • root:谁登陆的
  • pts/1:虚拟终端的别名,可以认为是一个会话的名称
  • 222.94.228.56:展示登录机器的主机名,表示从哪里登陆的
  • Mon Jun 29 22:53 still:登录的起止时间
  • logged in:持续了多久

常见用法:

# 只显示2条
last -2# 展示root用户的登录信息
last username root# 显示虚拟终端别名为pts/1的登录信息
last tty pts/1

CPU相关

cpuinfo

作用:查看CPU信息

使用:

cat /proc/cpuinfo

结果解读:

# 概念:
1. 物理CPU数:主板上实际插入的cpu数量
2. CPU核心数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等
3. 逻辑CPU数:一般来说:逻辑CPU=物理CPU个数×每颗核数       # 不支持超线程技术或未开启此技术逻辑CPU=物理CPU个数×每颗核数 *2     # 表示服务器的CPU支持超线程技术(简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,提高了系统的整体性能)# 逻辑处理核心数的编号,从0开始排序
processor       : 0
# CPU厂商
vendor_id       : GenuineIntel
# CPU产品系列代号
cpu family      : 6
# CPU属于其系列中的哪一代的代号
model           : 45
# CPU的型号、主频
model name      : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
# CPU所属制作更新版本
stepping        : 7
# 微代码
microcode       : 0xffffffff
# CPU当前所使用的主频
cpu MHz         : 1999.994
# 二级缓存大小
cache size      : 15360 KB
# 物理id
physical id     : 0
# 单个物理CPU的逻辑CPU数
siblings        : 8
# 当前物理核在其所处CPU中的编号,这个编号不一定连续
core id         : 0
# CPU核心数
cpu cores       : 8
# 用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
apicid          : 0
# 初始的apicid
initial apicid  : 0
# 是否具有浮点运算单元(Floating Point Unit)
fpu             : yes
# 是否支持浮点计算异常
fpu_exception   : yes
# 执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
cpuid level     : 13
# 表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
wp              : yes
# 当前CPU支持的功能
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm xsaveopt
# 在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
bogomips        : 3999.98
# 每次刷新缓存的大小单位
clflush size    : 64
# 缓存地址对齐单位
cache_alignment : 64
# 可访问地址空间位数
address sizes   : 42 bits physical, 48 bits virtual
# 对能源管理的支持
power management:

常见用法:

# 查询系统有几颗物理CPU(结果有几行说明有几个物理CPU)
cat /proc/cpuinfo | grep "physical id" |sort |uniq# 查询系统每颗物理CPU的核心数
cat /proc/cpuinfo | grep "cpu cores" | uniq# 每颗物理CPU核心是否启用超线程技术。如果启用此技术那么,每个物理核心又可分为两个逻辑处理器
cat /proc/cpuinfo | grep -e "cpu cores"  -e "siblings" | sort | uniq# 查询系统具有多少个逻辑CPU
cat /proc/cpuinfo | grep "processor" | wc -l

TIPS

参考:https://www.cnblogs.com/wxxjianchi/p/10522049.html

top

作用:

显示、管理执行中的程序

语法:

Usage:top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

常用参数:

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
  • s : 安全模式,将交谈式指令取消, 避免潜在的危机
  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
  • n : 更新的次数,完成后将会退出 top
  • b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

使用:

[root@localhost ~]# top
top - 18:57:49 up 48 days, 18:30,  4 users,  load average: 0.02, 0.03, 0.05
Tasks: 288 total,   1 running, 279 sleeping,   8 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1009368 total,    74540 free,   519392 used,   415436 buff/cache
KiB Swap:  1048572 total,   570600 free,   477972 used.   249136 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                          2737 mongod    20   0 1571560  64216   5156 S   1.0  6.4 534:08.38 mongod                                                                                                                                           1783 root      20   0  148336   2260   1428 R   0.7  0.2   0:00.10 top                                                                                                                                              
14047 root      20   0       0      0      0 S   0.3  0.0   0:21.71 kworker/6:2                                                                                                                                      1 root      20   0   49860   2212   1300 S   0.0  0.2  28:02.47 systemd          

结果解读:

  • 第一行:展示了系统运行的时间、有几个用户,平均负载等信息。这个结果和uptime一样
  • 第二行:展示了任务的相关信息,包括总共有多少任务、多少任务在任务在运行;多少在睡眠、多少停止了,多少个僵尸状态的任务等
  • 第三行:CPU状态
    • us(user):运行用户进程的CPU时间
    • sy(system):运行内核进程的CPU时间
    • ni(niced):运行已调整优先级的用户进程的CPU时间
    • id(idle):空闲时间
    • wa(IO wait):用于等待IO完成的CPU时间
    • hi:处理硬件中断的CPU时间
    • si:处理软件中断的CPU时间
    • st:被hypervisor偷去的CPU时间
  • 第四行:内存状态,包括全部可用内存、已使用内存、空闲内存、缓冲内存
  • 第七行开始:各个进程任务的的状态监控
    • PID:进程号
      • USER:运行这个进程的用户是谁
      • PR:展示进程的实时优先级,取值0-99,越大则会持有更多的CPU时间片。
      • NI:展示进程的nice值,值越小,优先级越高。意味着越高的优先级
      • VIRT:virtual memory usage,进程使用的虚拟内存。VIRT = SWAP + RES
      • RES:resident memory usage,常驻内存,驻留内存是进程使用的非交换物理内存。RES = CODE + DATA
      • SHR:shared memory,共享内存
      • S:进程状态,取值如下:
        • D:不可中断的睡眠态。
        • R:运行态
        • S:睡眠态
        • T:被跟踪或已停止
        • Z:僵尸态
      • CPU:自从上一次更新时到现在任务所使用的CPU时间百分比
      • MEM:进程使用的可用物理内存百分比
      • TIME:进程使用的总CPU时间,精确到0.01秒
      • COMMAND:进程所使用的命令

常见用法:

# 展示完整命令(COMMAND)
top -c# 设置更新次数(更新2次后就退出)
top -n 2# 指定更新周期(每隔3秒刷新一次)
top -d 3# 查看指定进程的信息
top -p 139# 显示指定进程中线程的运行信息
top -Hp 139

参考文章:https://www.cnblogs.com/fuqu/p/10230385.html

进程相关

ps

作用:

展示程序运行情况

语法:

Usage:ps [options]Basic options:-A, -e               all processes-a                   all with tty, except session leadersa                   all with tty, including other users-d                   all except session leaders-N, --deselect       negate selectionr                   only running processesT                   all processes on this terminalx                   processes without controlling ttysSelection by list:-C <command>         command name-G, --Group <GID>    real group id or name-g, --group <group>  session or effective group name-p, p, --pid <PID>   process id--ppid <PID>  parent process id-q, q, --quick-pid <PID>process id (quick mode)-s, --sid <session>  session id-t, t, --tty <tty>   terminal-u, U, --user <UID>  effective user id or name-U, --User <UID>     real user id or nameThe selection options take as their argument either:a comma-separated list e.g. '-u root,nobody' ora blank-separated list e.g. '-p 123 4567'Output formats:-F                   extra full-f                   full-format, including command linesf, --forest         ascii art process tree-H                   show process hierarchy-j                   jobs formatj                   BSD job control format-l                   long formatl                   BSD long format-M, Z                add security data (for SELinux)-O <format>          preloaded with default columnsO <format>          as -O, with BSD personality-o, o, --format <format>user-defined formats                   signal formatu                   user-oriented formatv                   virtual memory formatX                   register format-y                   do not show flags, show rss vs. addr (used with -l)--context        display security context (for SELinux)--headers        repeat header lines, one per page--no-headers     do not print header at all--cols, --columns, --width <num>set screen width--rows, --lines <num>set screen heightShow threads:H                   as if they were processes-L                   possibly with LWP and NLWP columns-m, m                after processes-T                   possibly with SPID columnMiscellaneous options:-c                   show scheduling class with -l optionc                   show true command namee                   show the environment after commandk,    --sort        specify sort order as: [+|-]key[,[+|-]key[,...]]L                   show format specifiersn                   display numeric uid and wchanS,    --cumulative  include some dead child process data-y                   do not show flags, show rss (only with -l)-V, V, --version     display version information and exit-w, w                unlimited output width--help <simple|list|output|threads|misc|all>display help and exit

常用参数:

  • -A或e:列出所有的行程
  • -w:显示加宽可以显示较多的资讯
  • -f:“全格式”展示,返回的字段较多
  • a:展示当前运行的所有程序,包括其他用户的程序
  • …其他的大家自己看下help吧,没动力翻译了……

示例:

# 全格式展示所有进程
ps -ef# 显示较详细的信息,比如进程占用的CPU、内存等
ps -au# 显示所有包含其他使用者的行程
ps -aux

jobs

个人经验,使用较少

作用:

显示Linux中的任务列表及任务状态

  • Ctrl+Z组合键将当前进程挂起(调入后台并停止运行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,我们使用windows系统是有时候在本地计算机搜索东西时,发现他搜索的老慢了甚至电脑都有点卡,我们突然不想让它搜了,就想马上让它停止搜索,就是这种感觉。使用jobs命令,可以查看当前终端在后台的进程任务
  • 任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号

语法:

jobs [-lnprs] [ jobspec ... ]
jobs -x command [ args ... ]第一种格式列出活动的任务,选项含义如下:
-l	除常规信息外,还列出进程号
-n	仅显示有关自从上次通知用户状态以来,更改状态的任务信息
-p	只显示任务的进程组leader的进程id
-r	只显示正在运行的任务
-s	只显示已停止的任务
如果指定了jobspec,则只展示jobspec的相关信息如果指定了-x选项,则job会替换在command或args中找到的所有jobspec与相应的进程组id,并将其传递给command

常见用法:

jobs -l

pgrep

作用:根据特定条件查询进程PID信息

语法:

Usage:pgrep [options] <pattern>Options:-d, --delimiter <string>  指定分隔符-l, --list-name           列出PID和进程名称-a, --list-full           列出PID和完整命令行-v, --inverse             反向匹配,展示不匹配条件的结果-w, --lightweight         列出所有TID-c, --count               展示匹配的进程个数-f, --full                使用完整进程名进行匹配-g, --pgroup <PGID,...>   展示匹配的进程组id-G, --group <GID,...>     展示匹配的GID-n, --newest              展示最近启动的进程-o, --oldest              展示启动的进程-P, --parent <PPID,...>   只匹配指定PPID的子进程-s, --session <SID,...>   匹配SID-t, --terminal <tty,...>  匹配tty-u, --euid <ID,...>       匹配有效用户id-U, --uid <ID,...>        匹配真实id-x, --exact               与命令名称完全匹配-F, --pidfile <file>      从文件中读取PID-L, --logpidfile          如果未锁定PID文件则失败--ns <PID>                匹配和PID属于指定namespace的进程--nslist <ns,...>         列出指定的namespace的信息。可选那么space:ipc, mnt, net, pid, user, uts-h, --help     帮助-V, --version  版本

使用:

# 展示命令行为java的进程的进程号
pgrep java# 查找命令行为java的进程,并列出完整命令行
pgrep -a java# 查看root用户运行的所有进程
pgrep -U root# 组合使用
pgrep -a -U root

内存相关

meminfo

作用:查看内存信息

使用:

cat /proc/meminfo

结果解读:

# 总内存
MemTotal:        1009368 kB
# 空闲内存
MemFree:           77320 kB
# 可用内存
MemAvailable:     268716 kB
# Buffer使用的大小
Buffers:               0 kB
# Cache使用的大小
Cached:           329420 kB
# 被高速缓冲存储用的交换空间大小
SwapCached:        18440 kB
# 活跃中的高速缓冲存储器页面文件大小
Active:           493144 kB
# 不活跃的高速缓冲存储器页面文件大小
Inactive:         268208 kB
Active(anon):     245240 kB
Inactive(anon):   237316 kB
Active(file):     247904 kB
Inactive(file):    30892 kB
Unevictable:           0 kB
Mlocked:               0 kB
# 交换区总大小
SwapTotal:       1048572 kB
# 空闲交换区大小
SwapFree:         570568 kB
# 等待被写回到磁盘的大小
Dirty:                52 kB
# 正在被写回的大小
Writeback:             0 kB
# 未映射的页的大小
AnonPages:        421380 kB
# 设备和文件映射的大小
Mapped:            27068 kB
Shmem:             50624 kB
# 内核数据结构缓存的大小,可减少申请和释放内存带来的消耗
Slab:              99168 kB
# 可收回slab的大小
SReclaimable:      50444 kB
# 不可收回的slab的大小
SUnreclaim:        48724 kB
KernelStack:        6992 kB
# 管理内存分页的索引表的大小
PageTables:         7496 kB
# 已经发给NFS服务器,但尚未被确认(committed)写入到稳定存储的页表
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1553256 kB
Committed_AS:    1597364 kB
# 虚拟内存大小
VmallocTotal:   34359738367 kB
# 已使用的虚拟内存大小
VmallocUsed:       53608 kB
# 在vmalloc区域中可用的最大的连续内存块的大小
VmallocChunk:   34359681024 kB
HardwareCorrupted:     0 kB
AnonHugePages:    229376 kB
# 大页面的分配
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       63424 kB
DirectMap2M:      985088 kB

TIPS

  • 在Linux文档中有更加详细的描述,详见:https://github.com/torvalds/linux/blob/master/Documentation/filesystems/proc.rst
  • Buffer与Cache:
    • Linux Page cache和Block I/O layer
    • Linux内存Cache和Buffer理解

free

作用:查看内存运行情况

语法:

Usage:free [options]Options:-b, --bytes         以Byte为单位显示内存使用情况-k, --kilo          以KB为单位显示内存使用情况-m, --mega          以MB为单位显示内存使用情况-g, --giga          以GB为单位显示内存使用情况--tera          以TB为单位显示内存使用情况-h, --human         自动以合适的单位显示内存使用情况--si            以1000为底而非1024-l, --lohi          展示最低/最高内存的统计信息-t, --total         显示内存总和(RAM + swap)-s N, --seconds N   每隔N秒刷新-c N, --count N     打印N次后退出-w, --wide          宽屏模式打印,将buff和cache分开显示--help     帮助-V, --version  展示版本For more details see free(1).

示例:

[root@localhost ~]# freetotal        used        free      shared  buff/cache   available
Mem:        1009368      519640       77092       50732      412636      250392
Swap:       1048572      477968      570604

结果解读:

  • total:物理内存总量
  • used:已使用的内存,used = total - free - buffers - cache
  • free:空闲的内存数
  • shared:多个进程共享的内存
  • buff/cache:代表的是 buff(对应/proc/meminfo里的Buffers)和cache的内存(对应/proc/meminfo 里的Cached and Slab)。
  • available:在CentOS 7中,available是真正可用内存。available包括了buff/cache中一些可以被释放的内存,当物理内存不够用的时候,内核会把非活跃的数据清空。
  • Mem:

TIPS

不同版本的CentOS,free结果不同。可参考:https://www.cnblogs.com/operationhome/p/10362776.html

vmstat

作用:全称Virtual Meomory Statistics(虚拟内存统计),可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视

语法:

Usage:vmstat [options] [delay [count]]Options:-a, --active           展示active/inactive的内存-f, --forks            显示此系统启动以来的forks的总数,包括fork、vfork和clone system calls-m, --slabs            展示slabinfo信息-n, --one-header       只展示1次header,而非周期展示-s, --stats            显示各种事件计数器和内存统计(只显示1次)-d, --disk             展示磁盘信息-D, --disk-sum         显示磁盘统计数据-p, --partition <dev>  展示分区详情-S, --unit <char>      控制输出的单位,k(1000字节) K(1024字节) 或 M(1048576字节),默认为K-w, --wide             宽屏输出模式-t, --timestamp        打印时间戳-h, --help     帮助-V, --version  版本For more details see vmstat(8).

使用:

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0 478632  93272      0 390596    0    0     0     1    0    0  0  0 100  0  0

结果解读:

  • procs
    • r:可运行的进程数(runnable processes),包括了running的进程和等待运行的进程(running or waiting for run time)。如果此值过大,则意味着CPU非常繁忙。如果此参数长期 >= 逻辑CPU个数,则表示CPU可能存在瓶颈,考虑增加CPU
    • 处在非终端睡眠(uninterruptible sleep)状态的进程数。此值表示被阻塞的进程数。主要是指被资源阻塞的进程对列数(比如IO资源、页面调度等)
  • memory
    • swpd:已使用的虚拟内存大小
    • free:空闲内存大小
    • buff:用做buffer的内存大小
    • cache:用来做cache的内存大小
    • inact:inactive的内存总量(-a)
    • active:active的内存总量(-a)
  • swap
    • si:每秒从磁盘交换到内存的大小,单位:KB/秒
    • so:每秒从内存交换到磁盘的大小,单位:KB/秒
    • 当内存够用时,这两个值都是0。如果这两个值长期大于0,则会影响系统性能,磁盘IO和CPU资源都会被消耗。 当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,是不正确的。不能光看这一点,还要结合si和so。如果free很少,但是si和so也很少(大多时候是0),可以不用担心。此时,系统性能不会受到影响的。
  • io
    • bi:每秒从块存储设备接收到的块数
    • bo:每秒发送到块存储设备的块数
    • 随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大
  • system
    • in:每秒中断数,包括时钟中断
    • cs:每秒上下文切换数
    • 这两个值越小越好
  • cpu
    • us:用户CPU时间(非内核进程占用时间)百分比
    • sy:系统使用的CPU时间百分比
    • id:空闲CPU时间百分比
    • wa:等待IO的CPU时间百分比
    • st:被虚拟机偷去的CPU时间百分比

常见用法:

# 每隔一秒展示一次
vmstat 1vmstat -a

磁盘相关

df

作用:

展示磁盘使用情况

语法:

Usage: df [OPTION]... [FILE]...Mandatory arguments to long options are mandatory for short options too.-a, --all             包含具有0Blocks的文件系统-B, --block-size=SIZE  指定打印单位,可用单位: K, M, G, T, P, E, Z, Y (以1024为底) ;也可用KB, MB, ... (以1000为底)。例如-BM表示以MB为单位打印--direct          显示文件的统计信息而不是挂载点--total           在末尾产生一个汇总行-h, --human-readable  自动以合适的单位显示磁盘使用情况-H, --si              以1000为底而非1024-i, --inodes          列出inode的信息,而非block的使用信息-k                    相当于--block-size=1K-l, --local           将列表限制为本地文件系统--no-sync         在获取使用情况信息之前不调用同步(默认)--output[=FIELD_LIST]  使用FIELD_LIST定义的打印格式,如果省略FIELD_LIST则打印所有字段。FIELD_LIST是一个以逗号分隔的字段列表,可选的字段有:'source', 'fstype', 'itotal', 'iused', 'iavail', 'ipcent', 'size', 'used', 'avail', 'pcent', 'file','target'      -P, --portability     使用POSIX输出格式--sync            在获取使用情况信息之前调用同步-t, --type=TYPE       将列表限制为TYPE类型的文件系统。-T, --print-type      在结果中,多出来一个Type列,其中打印文件系统类型-x, --exclude-type=TYPE   将列表限制为非TYPE类型的文件系统-v                    (忽略)--help     帮助--version  显示版本

使用:

df

结果解读:

  • Filesystem:文件系统的名称
  • 1K-blocks:占用多少个1K-block,相当于展示占用了多少Kb的磁盘
  • Used:使用了多少磁盘
  • Avail:可用磁盘
  • Use:使用的百分比
  • Mounted on:挂载点

常见用法:

# 自动以合适的单位显示磁盘使用情况
df -h# 查看gc.log这个文件所属的文件系统信息
df gc.log# 指定输出格式
df --output=source,fstype,itotal,iused,iavail,ipcent,size,used,avail,pcent,file,target

拓展阅读:

Linux 深入理解inode/block/superblock

du

作用:

显示目录或文件的大小

语法:

Usage: du [OPTION]... [FILE]...or:  du [OPTION]... --files0-from=FMandatory arguments to long options are mandatory for short options too.-0, --null            以0字节而不是换行符结束每条输出(即:直接输出下一行,不换行)-a, --all             显示所有文件大小,不限于目录--apparent-size   打印“apparent size”,而非磁盘占用情况-B, --block-size=SIZE  指定打印单位,可用单位: K, M, G, T, P, E, Z, Y (以1024为底) ;也可用KB, MB, ... (以1000为底)。例如-BM表示以MB为单位打印-b, --bytes           相当于'--apparent-size --block-size = 1'-c, --total           在末尾产生一个汇总行-D, --dereference-args  取消引用命令行上列出的符号链接-d, --max-depth=N     指定要展示的最大深度,--max-depth=0相当于--summarize--files0-from=F   总结文件F中指定的NUL终止文件名的磁盘使用情况;如果F为-,则从标准输入中读取名称-H                    等价于--dereference-args (-D)-h, --human-readable  自动以合适的单位显示磁盘使用情况--inodes          列出inode的信息,而非block的使用信息-k                    相当于--block-size=1K-L, --dereference     取消引用所有符号链接-l, --count-links     如果是硬链接,则计数很多次-m                    相当于--block-size=1M-P, --no-dereference  不遵循任何符号链接(这是默认设置)-S, --separate-dirs   不统计子目录的大小--si              类似于-h,但以1000为底而非1024-s, --summarize       只展示每个参数的统计信息-t, --threshold=SIZE  如果SIZE为正,则排除小于SIZE的条目;如果为负,则排除大于SIZE的条目--time            展示文件的修改时间--time=WORD       在time字段展示WORD字段而非修改时间,WORD取值:atime, access, use, ctime or status--time-style=STYLE  指定时间的显示格式,取值:full-iso, long-iso, iso, 或+FORMAT,FORMAT的解释类似于“date”-X, --exclude-from=FILE  排除匹配FILE中的正则的文件--exclude=PATTERN    排除匹配正则的文件-x, --one-file-system    跳过不同文件系统上的目录--help     帮助--version  版本

常见用法:

# 当前目录及子目录的大小,以及大小汇总
du # 展示1.txt文件的大小
du 1.txt# 自动以合适的单位显示目录的大小
du -h some_dir# 排除 < 1000m的文件,展示当前目录及子目录的大小,以及大小汇总
du -t 1000m# 以合适的单位展示指定目录的大小
du -sh some_dir

网络相关

netstat

作用:展示网络状态

语法:

usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}netstat [-vWnNcaeol] [<Socket> ...]netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]-r, --route              展示路由表-I, --interfaces=<Iface> 展示网卡Iface的信息-i, --interfaces         展示网卡信息列表-g, --groups             显示多播组的成员信息-s, --statistics         展示网卡网络统计信息-M, --masquerade         显示伪装的网络连接(masqueraded connections)-v, --verbose            展示更多详情信息-W, --wide               不截断IP地址-n, --numeric            不解析名称--numeric-hosts          不解析主机名--numeric-ports          不解析端口--numeric-users          不解析-N, --symbolic           解析硬件名称-e, --extend             展示更多信息-p, --programs           为socket展示PID或程序名称-o, --timers             在结果中显示Timer列-c, --continuous         持续列出结果-l, --listening          展示监听的服务器socket-a, --all                展示所有的socket(默认connected,指定-a则会展示监听/为监听的socket)-F, --fib                展示转发信息库(Forwarding Information Base)(default)-C, --cache              展示路由缓存而非FIB-Z, --context            为socket展示SELinux安全上下文<Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}{-x|--unix} --ax25 --ipx --netrom<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inetList of possible address families (which support routing):inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25) 

使用:

netstat

结果解读:

使用不同参数,展示的结果不用,详情大家看下 man netstat里面的结果吧

常见用法:

# 查看全部的socket
netstat -a# 查看使用tcp协议的网络信息
netstat -t# 查看使用udp协议的网络信息
netstat -u# 展示所有所有状态的tcp监听,并打印程序名称
netstat -antp

route

作用:显示和操作路由表

语法:

Usage: route [-nNvee] [-FC] [<AF>]           列出内核路由表route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.route {-h|--help} [<AF>]              修改AF的路由表route {-V|--version}                  展示版本-v, --verbose            展示更多详情信息-n, --numeric            不解析名称-e, --extend             展示更多信息-F, --fib                展示转发信息库(Forwarding Information Base)(default)-C, --cache              展示路由缓存而非FIB<AF>=Use -4, -6, '-A <af>' or '--<af>'; default: inetList of possible address families (which support routing):inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25) 

使用:详见 https://blog.csdn.net/u011857683/article/details/83795435 里面有非常详细的描述

lsof

作用:列出当前系统当前打开的文件

语法:

 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s][-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.-?|-h list help          -a AND selections (OR)     -b avoid kernel blocks-c c  cmd c ^c /c/[bix]  +c w  COMMAND width (9)    +d s  dir s files-d s  select by FD set   +D D  dir D tree *SLOW?*   +|-e s  exempt s *RISKY*-i select IPv[46] files  -K list tasKs (threads)    -l list UID numbers-n no host names         -N select NFS files        -o list file offset-O no overhead *RISKY*   -P no port names           -R list paRent PID-s list file size        -t terse listing           -T disable TCP/TPI info-U select Unix socket    -v list version info       -V verbose search+|-w  Warnings (+)       -X skip TCP&UDP* files     -Z Z  context [Z]-- end option scan     +f|-f  +filesystem or -file names     +|-f[gG] flaGs -F [f] select fields; -F? for help  +|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)+m [m] use|create mount supplement+|-M   portMap registration (-)       -o o   o 0t offset digits (8)-p s   exclude(^)|select PIDs         -S [t] t second stat timeout (15)-T qs TCP/TPI Q,St (s) info-g [s] exclude(^)|select and print process group IDs-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]+|-r [t[m<fmt>]] repeat every t seconds (15);  + until no files, - forever.An optional suffix to t is m<fmt>; m must separate t from <fmt> and<fmt> is an strftime(3) format for the marker line.-s p:s  exclude(^)|select protocol (p = TCP|UDP) states by name(s).-u s   exclude(^)|select login|UID set s-x [fl] cross over +d|+D File systems or symbolic Linksnames  select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.

常见用法:

# 列出所有打开的文件
lsof# 查看哪些进程正在使用1.txt
lsof 1.txt# 递归查看test_dir目录及其文件的信息
lsof +D test_dir# 查看java进程打开的文件
lsof -c mysql# 查看java或mysql打开的文件
lsof -c java -c mysql# 列出所有的网络连接
lsof -i# 列出所有tcp连接
lsof -i tcp# 列出所有udp连接
lsof -i udp# 列出谁在使用8080端口
lsof -i:8080# 列出谁在用tcp协议使用8080端口
lsof -i tcp:8080

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】基于K-近邻的车牌号识别

实验四: 基于K-近邻的车牌号识别 1 案例简介 ​ 图像的智能处理一直是人工智能领域广受关注的一类技术&#xff0c;代表性的如人脸识别与 CT 肿瘤识别&#xff0c;在人工智能落地的进程中发挥着重要作用。其中车牌号识别作为一个早期应用场景&#xff0c;已经融入日常生活中&…

LVGL部件7

一.图片部件 1.知识概览 2.函数接口 1.lv_img_set_pivot 在LVGL&#xff08;LittlevGL&#xff09;中&#xff0c;要设置图像对象的旋转中心点&#xff0c;可以使用 lv_img_set_pivot 函数。该函数的原型如下&#xff1a; void lv_img_set_pivot(lv_obj_t * img, lv_coord_…

Flask框架开发学习笔记《5》简易服务器代码

Flask框架开发学习笔记《5》 Flask是使用python的后端&#xff0c;由于小程序需要后端开发&#xff0c;遂学习一下后端开发。 简易服务器代码 接口解析那一块很关键&#xff0c;学后端服务器这一块&#xff0c;感觉主要就是学习相应地址的接口怎么处理。 然后写清楚每个地址…

在centos 7 中安装配置Jdk、Tomcat、及Tomcat自启动

目录 一、安装配置Jdk 1.创建目录并上传文件 2.解压JDK压缩包 3.配置JDK环境变量 4.设置环境变量生效 二、安装配置Tomcat 1.上传Tomcat并解压 2.启停Tomcat 3.修改tomcat-user.xml配置 4.配置远程访问Tomcat 5.远程项目发布 三.Tomcat自启动配置 1.配置Tomcat自启…

链表的删除和预处理

创建空链表&#xff1a; struct Node head - - - 创建了头链表&#xff0c;内部不储存数据&#xff0c;地址为null&#xff0c;空间开在栈上&#xff08;在main函数里创建新的节点&#xff0c;一般都开在堆上&#xff09;。 函数不能返回局部变量的地址,因为局部变量的空…

各大厂急招鸿蒙开发员,争抢鸿蒙工程师

余承东宣布鸿蒙原生应用全面启动&#xff0c;华为开始了全面抛弃安卓的进程。 多家互联网公司也发布了鸿蒙OS的App开发工程师的岗位&#xff0c;开启了抢人大战。 有的企业开出了近百万的年薪招聘鸿蒙OS工程师&#xff0c;而华为甚至为鸿蒙OS资深架构师开出了100万-160万元的…

SASS 官方文档速通

前言&#xff1a;参考 Sass 中文网。 一. 特色功能 Sass 是一款强化 CSS 的辅助工具&#xff0c;在 CSS 语法的基础上增加了变量、嵌套、混合、导入等高级功能。有助于组织管理样式文件&#xff0c;更高效地开发项目。 二. 语法格式 .scss 拓展名&#xff1a;在 CSS3 语法的基…

二分图板子

原理&#xff1a; 匈牙利算法&#xff1a;二分图最大权匹配 - OI Wiki 简单说就是挨个找&#xff0c;找到就退出。后面的来了就让前面的挪位置。 板子&#xff1a; book指给u找位置时&#xff0c;有人考虑过的位置就不考虑了。 match[ i ]就是i位置对应的人。 e是关系 …

k8s helm安装Tiller出错解决

安装Helm 安装Helm通常使用一下命令&#xff1a; [rootk8s-master ~]# curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent …

Kotlin快速入门系列10

Kotlin的委托 委托模式是常见的设计模式之一。在委托模式中&#xff0c;有两个对象参与处理同一个请求&#xff0c;接受请求的对象将请求委托给另一个对象来处理。与Java一样&#xff0c;Kotlin也支持委托模式&#xff0c;通过关键字by。 类委托 类的委托即一个类中定义的方…

Mysql-ReadView + MVCC-RR 与 RC

实验准备 创建脚本 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(16) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,age int(11) NULL DEFAULT NULL,addr varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,PRIMARY …

1967 - 输出字符的ascii码

题目 从键盘读入一个字符&#xff0c;请计算并输出该字符的 ascii 码。 比如&#xff1a;字符 A 的 ascii 码输出是 65 &#xff0c;a 的 ascii 码输出是 97 &#xff0c;0 的ascii码输出是 48 。 输入 一个字符。 输出 一个整数&#xff0c;代表字符对应的 ascii 码。 …

Red Panda Dev C++项目的基本操作

最近在Red Panda Dev C上面编写程序时发现&#xff0c;很多小伙伴都会创建项目。今天我带大家看看如何使用一个项目。 一、项目的创建 创建项目 首先&#xff0c;我们需要创建一个项目。 1、打开Red Panda Dev C。 2、点击 “文件[F]” → “新建[N]” → “项目[P]...”&…

精选70套前端数据可视化大屏

分享70款还不错的前端数据可视化大屏源码 其中包含行业&#xff1a;智慧社区、智慧物业、政务系统、智慧交通、智慧工程、智慧医疗、智慧金融银行等&#xff0c;全网最新、最多&#xff0c;最全、最酷、最炫大数据可视化模板。 你可以点击在线预览查看该源码资源的最终展示效果…

新概念英语第二册(50)上

【New words and expressions】生词和短语&#xff08;4&#xff09; ride n. 旅行 excursion n. 远足 conductor n. 售票员 view n. 景色 ★ride n. 旅行&am…

从零搭建Vue3 + Typescript + Pinia + Vite + Tailwind CSS + Element Plus开发脚手架

项目代码以上传至码云&#xff0c;项目地址&#xff1a;https://gitee.com/breezefaith/vue-ts-scaffold 文章目录 前言脚手架技术栈简介vue3TypeScriptPiniaTailwind CSSElement Plusvite 详细步骤Node.js安装创建以 typescript 开发的vue3工程集成Pinia安装pinia修改main.ts创…

正点原子--STM32定时器学习笔记(1)(更新中....)

F1系列基本定时器&#xff08;TIM6 / TIM7&#xff09; 我们的目标是通过TIM6基本定时器定时500ms&#xff0c;让LED0每隔500ms闪一下&#xff01; 思路&#xff1a;使用定时器6&#xff0c;实现500ms产生一次定时器更新中断&#xff0c;在中断里执行“翻转LED0”。 定时器什…

react useCallback(记忆函数)用法

//定义&#xff1a;防止组件重新渲染&#xff0c;导致方法被重新创建&#xff0c;起到缓存作用&#xff0c;只有第二个参数变化&#xff0c;才重新声明一次。 import React, { useCallback, useState } from react const [text,settext] useState(""); export def…

什么是ISO21434网络安全中的风险评估?-亚远景

在ISO 21434标准中&#xff0c;网络安全风险评估是指对汽车网络和相关电子系统进行系统性分析&#xff0c;以识别和评估潜在的网络安全威胁和风险。该过程旨在帮助汽车制造商和供应商在整个开发和运营生命周期中有效管理和缓解与网络安全相关的风险&#xff0c;确保车辆在数字化…

docker容器之consul

一、consul解决了什么问题&#xff1f; 如果后端应用服务器集群节点数量很多&#xff0c;前端负载均衡器配置和管理会很麻烦的问题 &#xff08;负载均衡器的节点配置条目数量会很多&#xff0c;后端节点的网络位置发生了变化还需要修改所有调用这些后端节点的负载均衡器配置等…