ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux调优相关命令汇总

2021-01-25 10:00:14  阅读:97  来源: 互联网

标签:展示 -- 汇总 调优 内存 Linux 进程 root CPU


入门级

# 切换目录cd# 示例# 切换到上一层目录cd ..# 切换到/opt/softwarecd /opt/software

# 显示工作目录pwd

# 显示指定工作目录下之内容ls# 示例# 列出当前目录中文件及目录的详情ls -l# 列出当前目录及其子目录中文件及目录的详情ls -lR

# 创建目录mkdir# 示例# 创建目录aaamkdir aaa# 在bbb目录下创建目录aaa,如果bbb目录不存在,就创建一个mkdir -p bbb/aaa

# 删除目录rmdir# 示例# 删除目录aaarmdir 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.txtmv test.txt damu.txt# 将aaa目录放入bbb目录中;如果bbb目录不存在,则将aaa改名为bbbmv 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=xxxexport 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=5chmod 777 file

# 将指定文件或目录的拥有者改为指定的用户或组chown# 示例# 将的拥有者设为nginx,群体的使用者nginxchown nginx:nginx nginx.conf# 递归将当前目录下的所有文件与子目录的拥有者皆设为nginx,群体的使用者为nginxchown -R nginx:nginx *

# 查找文件里符合条件的字符串grep# 示例# 在当前目录中,查找后缀为txt的文件中,包含test字符串的文件,并打印字符串所属的行grep test *txt# 递归查找/opt目录中,包含test字符串的文件,并打印字符串所属的行grep -r test /opt# 查找1.txt中不包含test的行grep -v test 1.txt

# 打开文件并输出# 示例# 打开1.txtcat 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 -aLinux 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 ~]# uptime 18: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 ~]# iduid=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[1]

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 ~]# w 18:55:14 up 48 days, 18:28,  4 users,  load average: 0.05, 0.03, 0.05USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    222.94.228.56    18:07   42:34   0.04s  0.04s -bashroot     pts/1    222.94.228.56    18:18   24:50   0.25s  0.06s -bashroot     pts/2    222.94.228.56    18:41   13:48   0.02s  0.02s -bashroot     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 ~]# whoroot     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 -uwho -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# 物理idphysical id     : 0# 单个物理CPU的逻辑CPU数siblings        : 8# 当前物理核在其所处CPU中的编号,这个编号不一定连续core id         : 0# CPU核心数cpu cores       : 8# 用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续apicid          : 0# 初始的apicidinitial 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
# 查询系统具有多少个逻辑CPUcat /proc/cpuinfo | grep "processor" | wc -l

TIPS

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

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 ~]# toptop - 18:57:49 up 48 days, 18:30,  4 users,  load average: 0.02, 0.03, 0.05Tasks: 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 stKiB Mem :  1009368 total,    74540 free,   519392 used,   415436 buff/cacheKiB 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[3]

进程相关

ps

作用:

展示程序运行情况

语法:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Usage: ps [options]
Basic options: -A, -e               all processes -a                   all with tty, except session leaders  a                   all with tty, including other users -d                   all except session leaders -N, --deselect       negate selection  r                   only running processes  T                   all processes on this terminal  x                   processes without controlling ttys
Selection 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 name
  The selection options take as their argument either:    a comma-separated list e.g. '-u root,nobody' or    a blank-separated list e.g. '-p 123 4567'
Output formats: -F                   extra full -f                   full-format, including command lines  f, --forest         ascii art process tree -H                   show process hierarchy -j                   jobs format  j                   BSD job control format -l                   long format  l                   BSD long format -M, Z                add security data (for SELinux) -O <format>          preloaded with default columns  O <format>          as -O, with BSD personality -o, o, --format <format>                      user-defined format  s                   signal format  u                   user-oriented format  v                   virtual memory format  X                   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 height
Show threads:  H                   as if they were processes -L                   possibly with LWP and NLWP columns -m, m                after processes -T                   possibly with SPID column
Miscellaneous options: -c                   show scheduling class with -l option  c                   show true command name  e                   show the environment after command  k,    --sort        specify sort order as: [+|-]key[,[+|-]key[,...]]  L                   show format specifiers  n                   display numeric uid and wchan  S,    --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 kBActive(anon):     245240 kBInactive(anon):   237316 kBActive(file):     247904 kBInactive(file):    30892 kBUnevictable:           0 kBMlocked:               0 kB# 交换区总大小SwapTotal:       1048572 kB# 空闲交换区大小SwapFree:         570568 kB# 等待被写回到磁盘的大小Dirty:                52 kB# 正在被写回的大小Writeback:             0 kB# 未映射的页的大小AnonPages:        421380 kB# 设备和文件映射的大小Mapped:            27068 kBShmem:             50624 kB# 内核数据结构缓存的大小,可减少申请和释放内存带来的消耗Slab:              99168 kB# 可收回slab的大小SReclaimable:      50444 kB# 不可收回的slab的大小SUnreclaim:        48724 kBKernelStack:        6992 kB# 管理内存分页的索引表的大小PageTables:         7496 kB# 已经发给NFS服务器,但尚未被确认(committed)写入到稳定存储的页表NFS_Unstable:          0 kBBounce:                0 kBWritebackTmp:          0 kBCommitLimit:     1553256 kBCommitted_AS:    1597364 kB# 虚拟内存大小VmallocTotal:   34359738367 kB# 已使用的虚拟内存大小VmallocUsed:       53608 kB# 在vmalloc区域中可用的最大的连续内存块的大小VmallocChunk:   34359681024 kBHardwareCorrupted:     0 kBAnonHugePages:    229376 kB# 大页面的分配HugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kBDirectMap4k:       63424 kBDirectMap2M:      985088 kB

TIPS

•在Linux文档中有更加详细的描述,详见:https://github.com/torvalds/linux/blob/master/Documentation/filesystems/proc.rst[4]•Buffer与Cache:

•Linux Page cache和Block I/O layer[5]•Linux内存Cache和Buffer理解[6]

 

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 ~]# free              total        used        free      shared  buff/cache   availableMem:        1009368      519640       77092       50732      412636      250392Swap:       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[7]

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 ~]# vmstatprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 1  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 1
vmstat -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[8]

du

作用:

显示目录或文件的大小

语法:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Usage: du [OPTION]... [FILE]...  or:  du [OPTION]... --files0-from=F
Mandatory 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: inet  List 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里面的结果吧

常见用法:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 查看全部的socketnetstat -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: inet  List 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[9] 里面有非常详细的描述

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 Links  names  select named files or files on named file systemsAnyone can list all files; /dev warnings disabled; kernel ID check disabled.

常见用法:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 列出所有打开的文件lsof
# 查看哪些进程正在使用1.txtlsof 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端口
  1. lsof -i tcp:8080

标签:展示,--,汇总,调优,内存,Linux,进程,root,CPU
来源: https://blog.csdn.net/m0_37574375/article/details/113103167

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有