精华内容
下载资源
问答
  • uptimeuptime命令显示了load avg,它其实读取的/proc/uptime文件:/proc/uptime 文件cat /proc/uptime9592411.58 9566042.33第一个系统启动了多久(单位s),第二个意思是系统启动以来,cpu idle花费的时间(单位s)...

    uptime

    uptime命令显示了load avg,它其实是读取的/proc/uptime文件:

    /proc/uptime 文件

    cat /proc/uptime

    9592411.58 9566042.33

    第一个是系统启动了多久(单位s),第二个意思是系统启动以来,cpu idle花费的时间(单位s)。多核机器上,第二个可能大于第一个,因为他是每个核心idle的总和。

    怎么才能知道uptime 真的是读取这个文件呢?想办法查看一下,这里可以用strace :

    [root@localhost ~]# strace uptime 2>&1 | grep open

    open("/proc/uptime", O_RDONLY) = 3

    open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4

    open("/proc/loadavg", O_RDONLY) = 4

    strace 命令在stderr上打印了uptime的系统调用情况,在stdout上打印命令的原始输出。strace -e open uptime 可以起到和grep open相同的作用。uptime只是格式化输出了/proc的内容。如果是脚本里想要uptime值,自己读取/proc/uptime或许更方便一些。

    Load average

    [root@localhost ~]# cat /proc/loadavg

    0.00 0.01 0.05 2/374 40656

    前三列没什么好说的,第四列是当前有多少个进程,和多少个进程处于running或者runable,最后一列是最新的被分配的pid。running的意思是,当前进程正在物理cpu上运行;runable的意思是,它在等系统给他分配cpu时间片。

    [root@localhost ~]# sleep 10 &

    [1] 40674

    [root@localhost ~]# sleep 10 &

    [2] 40675

    [root@localhost ~]# sleep 10 &

    [3] 40676

    [root@localhost ~]# cat /proc/loadavg

    0.00 0.01 0.05 2/375 40677

    可以看到,每运行一次,pid就+1,cat /proc/loadavg最后一列值可以证明。

    证明第四列是当前正在运行的进程数:

    [root@localhost ~]# cat /proc/loadavg

    0.05 0.04 0.05 2/374 40717

    当前有两个进程在运行(其中一个是当前的cat,另一个是vmware的vm-tool进程)

    [root@localhost ~]# cat /dev/urandom > /dev/null &

    [1] 40718

    [root@localhost ~]# cat /proc/loadavg

    0.09 0.04 0.05 3/375 40719

    创建一个无意义,但不断运行的进程(随机生产些数据,然后写入/dev/null),第四列 正在运行的进程数+1(另外两个运行中的进程和上面同理)。

    load数量指进程状态处在 :正在运行、等待运行、和不可中断(后面对这个状态做解释)的进程数。load avg就是过去1min,5min,15min load数量的平均数,但这个解析是简化版本,其实并不太对。直接引用维基百科上的解释:

    Mathematically speaking, all three values always average all the system load since the system started up. They all decay exponentially, but they decay at different speed. Hence, the 1-minute load average will add up 63% of the load from last minute, plus 37% of the load since start up excluding the last minute. Therefore, it's not technically accurate that the 1-minute load average only includes the last 60 seconds activity (since it still includes 37% activity from the past), but that includes mostly the last minute.

    关于不可中断状态:

    进程 struct task_struct

    的 state 字段为TASK_UNINTERRUPTIBLE,进程陷入了不能被中断的阻塞操作,无视信号。 What is an uninterruptable process?

    http://stackoverflow.com/questions/223644/what-is-an-uninterruptable-process

    内核的某些处理流程是不能被打断的。如果响应异步信号,程序的执行流程中就会被插入一段用于处理异步信号的流程(这个插入的流程可能只存在于内核态,也可能延伸到用户态),于是原有的流程就被中断了

    如果是单核cpu的话,loadavg是1(同一时间运行一个进程),就说明cpu利用率是100%。如果是双核cpu,loadavg为2(同一时间运行两个进程)说明cpu利用率是100%。htop左上角和nproc命令可以看系是几核cpu。

    load数量包括了不可中断的进程数,但是处于这个状态的进程并不怎么影响cpu运行(可以认为不使用cpu时间)。所以从loadavg推断cpu使用率不太准,这也能解释一些为什么load很高,但是实际cpu使用率不高。

    mpstat可以查看瞬时cpu使用情况,要安装sysstat(这是个牛逼的工具)。

    [root@localhost ~]# yum install sysstat -y

    [root@localhost ~]# mpstat 1

    Linux 3.10.0-327.el7.x86_64 (localhost.virthost) 02/26/17 _x86_64_ (1 CPU)

    17:38:41 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

    17:38:42 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

    17:38:43 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

    ^C

    Average: all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

    进程

    htop默认显示用户进程和用户线程。

    shift+H打开关闭用户线程

    shift+K打开关闭内核线程

    F5显示进程继承关系(类似ps -f)

    /proc//{pwd,exe,cmdline} 里包含了进程当前工作目录的链接,可执行程序的链接和命令行。可以通过读取procfs里的内容,从内核获取信息。

    /proc//status 包含当前进程的许多信息(内存分配情况,父进程id等),uid指明了当前进程所属用户:

    [root@localhost htop]# cat /proc/47937/status | grep Uid

    Uid: 0 0 0 0

    id 命令可以找到这个用户的相关信息。其实id也是读取/etc/passwd和/etc/group文件获取用户信息:

    [root@localhost]# strace -e open id 0

    ...

    open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3

    open("/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3

    open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3

    open("/etc/group", O_RDONLY|O_CLOEXEC) = 3

    uid=0(root) gid=0(root) groups=0(root)

    +++ exited with 0 +++

    为什么会去找/etc/passwd 呢?这个是读取了/etc/nsswitch.conf 配置。

    [root@localhost htop]# cat /etc/nsswitch.conf

    ...

    passwd: files sss

    shadow: files sss

    group: files sss

    ...

    关于这个配置文件,可以参考这里:,总之就是/lib64/libnss_files.so 加载了这个文件,其他的一系列的name service和这个文件有关(比如dns),还可以配置成从ldap中获取用户名密码。

    unix用户的密码保存在/etc/shadow:

    [root@localhost]# cat /etc/shadow

    root:$6$eS1H0Kk/$MPOOjZyuhc14tzBl.2O2VoLoXxkirzIdKKw41tP/cEjfEPe58VcQB3LLlGoJzuHRrE.WIjii9nalKWl/GJMoR/:17153:0:99999:7:::

    第二列开头的$6$表示加密算法是sha512,后面紧接着是盐和盐+密码的hash。

    用户运行可执行文件时,进程所属用户一般是当前用户自己,而不是可执行文件本身的属主(这点应该很好理解)。

    使用sudo -u 运行程序可以切换进程属主。sudo权限在 /etc/sudoers配置,最好使用visudo编辑配置文件,它会对文件格式做验证。

    /etc/passwd是非常敏感的文件,passwd在普通用户权限下运行,也能更改密码,说明passwd肯定是以root身份运行的,否则它没发修改passwd文件。当二进制程序有x权限后,可以设置setuid权限:

    sudo chmod u+s /usr/bin/passwd

    [root@localhost]# ls -l /usr/bin/passwd

    -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

    这样,二进制文件运行时,进程属主就是二进制文件的属主。

    其他的特殊权限还有sticky bit和setgid。下面的命令可以找到权限类似passwd这样的命令:

    [root@localhost]# find /usr/bin -user root -perm -u+s

    /usr/bin/chage

    /usr/bin/gpasswd

    /usr/bin/newgrp

    /usr/bin/chfn

    /usr/bin/chsh

    /usr/bin/su

    /usr/bin/sudo

    /usr/bin/mount

    /usr/bin/umount

    /usr/bin/staprun

    /usr/bin/crontab

    /usr/bin/pkexec

    /usr/bin/passwd

    进程状态

    R 在运行队列里

    S 可中断的休眠(等待事件发生)

    D 不可中断的休眠,发生页面错误时,发生的IO不可以被中断,进程此时不能处理信号,处理信号可能会造成另外一个页面错误。如果有太多进程处于这个状态,意味着有可能大量进程发生页面错误,也许应该看下swap。

    Z 僵尸状态,子进程退出后,相关的资源已经释放,父进程应该在收到SIGCHL信号后D收尸,不应该把子进程随便乱扔。

    T 被任务控制信号停止,ctrl+z终止后台进程可以看到这种状态。

    t 被debugger停止(调试),gdb -p attach的进程,可以看到这个状态。

    X 应该永远看不见

    F9 htop 发送信号快捷键

    可以制造一个处于uninterruptible状态的进程。使用NFS挂在远程目录的时候,如果远程目录不存在,进程就会被挂起。我们使用google的DNS 8.8.8.8 试试,因为它没有打开NFS:

    [root@localhost ~]# mount 8.8.8.8:/tmp /tmp &

    [1] 48642

    [root@localhost ~]# ps aux | grep mount

    root 48642 0.0 0.0 125628 924 pts/1 S 22:03 0:00 mount 8.8.8.8:/tmp /tmp

    root 48643 0.0 0.1 42468 1608 pts/1 D 22:03 0:00 /sbin/mount.nfs 8.8.8.8:/tmp /tmp -o rw

    root 48645 0.0 0.0 112616 700 pts/1 R+ 22:03 0:00 grep --color=auto mount

    使用strace看看它到底在哪个调用上挂起了:

    [root@localhost ~]# sudo strace /sbin/mount.nfs 8.8.8.8:/tmp /tmp -o rw

    ...

    mount("8.8.8.8:/tmp", "/tmp", "nfs", 0, "vers=4,addr=8.8.8.8,clientaddr=1"...

    进程运行的时间

    linux的时间片大约在几毫秒(搞清楚linux上时间片到底多长也挺有意思的)。loadavg在单核机器上小于1,意味这cpu在过去一段时间什么事情都没做。

    进程优先级

    NI 用户空间优先级,最低-20到最高19。经验是升一级优先级通常可以获得10%的更多cpu时间。

    PRI 内核空间优先级,0-139。0-99是实时优先级,100-139才是给用户进程用的,这映射到用户优先级的-20到19。

    内存

    编写用户空间的程序员或者程序,会感觉自己的程序拥有全部内存,这是幻觉。

    用户态程序不会直接访问物理内存,只能访问虚拟内存空间,内核会把虚拟地址映射到物理内存或者磁盘上。

    htop/top内存的含义:

    VIRT/VSZ 虚拟内存,包括二进制的代码,数据,共享库,换出的页,映射了但是还没使用的页。

    RES/RSS 进程实际在物理内存中的空间,不包括换出的内存,但是包括和其他进程共享的。

    SHR 共享的内存

    htop/top内存使用率是指RES/RSS内存占总物理内存的百分比。

    展开全文
  • 系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满 足以下条件则其就会位于运行队列中:  - 它没有在等待I/O... [root@www2 init.d]# uptime  7:51pm up 2 days, 5:43, 2 use...
    系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满
    
    足以下条件则其就会位于运行队列中:
      - 它没有在等待I/O操作的结果
      - 它没有主动进入等待状态(也就是没有调用'wait')
      - 没有被停止(例如:等待终止)
      例如:
      [root@www2 init.d]# uptime
      7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
      命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
      一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如
    
    果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对 于上面的例子
    
    来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示
    
    该系统的性能是可以接受的。 
        在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出
    展开全文
  • phpweb插件显示推荐中id/dtime/uptime/prop1/prop2/cl/xuhao分别代表什么呢? id默认排序id; dtime代表发布时间; uptime代表更新修改时间; prop1和prop2代表参数; cl代表点击; xuhao代表序号; 转自江苏...

    phpweb插件显示推荐中id/dtime/uptime/prop1/prop2/cl/xuhao分别代表什么呢?

    id是默认排序id;

    dtime代表发布时间;

    uptime代表更新修改时间;

    prop1和prop2代表参数;

    cl代表点击;

    xuhao代表序号;



    转自江苏三艾网络

    转载于:https://my.oschina.net/u/3351259/blog/875415

    展开全文
  • phpweb插件显示推荐中id/dtime/uptime/prop1/prop2/cl/xuhao分别代表什么呢? id默认排序id; dtime代表发布时间; uptime代表更新修改时间; prop1和prop2代表参数; cl代表点击; xuhao代表序号; 文章来源:...
    phpweb插件显示推荐中id/dtime/uptime/prop1/prop2/cl/xuhao分别代表什么呢?


    id是默认排序id;
    dtime代表发布时间;
    uptime代表更新修改时间;
    prop1和prop2代表参数;
    cl代表点击;
    xuhao代表序号;
    文章来源:3A网络
    展开全文
  • 什么是平均负载?

    2019-09-09 21:46:09
    在使用uptime命令的时候会出现如下: kingdeAir:~ king$ uptime 21:45 up 1 day, 21:28, 5 users, load averages: 3.01 2.75 2.65 ...那么其中的平均负载是什么意思呢? 平均负载是系统处于可运行状态...
  • 系统负载是什么

    千次阅读 2016-08-19 10:48:29
    一、系统负载 ... 1. 如何查看负载 在Linux系统中,使用uptime命令查看(w命令和top命令也行)。...这行信息的后半部分,显示"loadaverage",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷
  • 理解Linux系统负荷

    千次阅读 2014-12-28 02:05:07
    一、查看系统负荷如果你的电脑很慢,你或许想查看一下,它的工作量是否...这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷大还是小。为什么会有三个
  • Java问题排查 Linux命令

    2019-11-11 16:18:42
    使用uptime查看系统启动时间和load,load是什么意思呢?什么算是系统过载?这是个高频问题,别怪我没告诉你 ps命令勃大茎深,除了查进程号外,你还需要知道R、S、D、T、Z、<、N状态位的含义 top和ps很多功能是...
  • 理解“平均负载”

    2020-08-24 15:20:53
    前言 发现系统变慢的时候我们通常会用两个命令来查看系统资源使用情况 top或者uptime ...这一行信息是什么意思呢? 02:34:03 //当前时间 up 2 days, 20:14 //系统运行时间 1 user //正在登录用户数 load aver
  • 当你在IDC主机商购买一台系统为 Linux 服务器之后,我想大家第一时间就是对主机进行一个性能分析,这里我跟大家分享几个命令,能让...这10个命令到底是什么意思,我为大家一一解释一下: 1.uptime # uptime 03:16:26 .
  • 1)这个值代表的是什么意思 2)这个值多大代表负载高 3)这个值达到多少该告警 一、查看此平均负载值可使用的方法 top命令 uptime命令 w命令 二、这三个值分别所代表的意思 load average: 0.04,...
  • 一、什么是Load Average? 系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度...三、Load Average的3个数值各是什么意思? 我拿上图中的 load average:1.97,2.14,2.99 来举例: 第一位1.
  • 一、查看系统负荷如果你的电脑很慢,你或许想查看一下,它的工作量...这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷大还是小。为什么会有三个...
  • Linux负载均值到底是什么意思? 这个数值究竟如何说明服务器是忙是闲?依据这个数值来决定是否需要添加服务器,靠谱么?在网上google了一篇文章描述的非常形象,当然也通俗易懂喔。可以收藏喔 你可能对于Linux的...
  • 图解Linux系统负荷

    2013-08-26 15:15:56
    一、查看系统负荷如果你的电脑很慢,你或许想查看一下,它的工作...这行信息的后半部分,显示”load average”,它的意思是”系统的平均负荷”,里面有三个数字,我们可以从中判断系统负荷大还是小。为什么会有三...
  • #首先我们先来了解一下什么是进程 #进程:Linux用来表示正在运行的程序的一种抽象概念,Linux系统上所有运行的东西都可以称为进程 1.top命令:动态查看进程相关信息 #提示:前五行系统整体的统计信息 #详解相关...
  • 比如说具体genuine intel的什么引起的? Microsoft (R) Windows Debugger Version 6.12.0002.633 X86 Copyright (c) Microsoft Corporation. All rights reserved. Loading Dump File [C:\Windows\Minidump\...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

uptime是什么意思