2014年2月17日星期一

Linux 查看系统资源命令

进程的查看

[root@linux ~]# ps aux        <==查看系统所有的进程数据
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1740 540 ? S Jul25 0:01 init [3]
root 2 0.0 0.0 0 0 ? SN Jul25 0:00 [ksoftirqd/0]
root 3 0.0 0.0 0 0 ? S< Jul25 0:00 [events/0]
.....中间省略.....
root 5881 0.0 0.3 5212 1204 pts/0 S 10:22 0:00 su
root 5882 0.0 0.3 5396 1524 pts/0 S 10:22 0:00 bash
root 6142 0.0 0.2 4488 916 pts/0 R+ 11:45 0:00 ps aux


各字段的意义为:
• USER:该 process 属于那个使用者账号的?
• PID :该 process 的号码。
• %CPU:该 process 使用掉的 CPU 资源百分比;
• %MEM:该 process 所占用的物理内存百分比;
• VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
• RSS :该 process 占用的固定的内存量 (Kbytes)
• TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
• STAT:该程序目前的状态,主要的状态有:
o R :该程序目前正在运作,或者是可被运作;
o S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号 (signal) 唤醒。
o T :该程序目前正在侦测或者是停止了;
o Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
• START:该 process 被触发启动的时间;
• TIME :该 process 实际使用 CPU 运作的时间。
• COMMAND:该进程的实际命令


[root@linux ~]# ps -l      <==仅查看自己的bash相关进程
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 5881 5654 0 76 0 - 1303 wait pts/0 00:00:00 su
4 S 0 5882 5881 0 75 0 - 1349 wait pts/0 00:00:00 bash
4 R 0 6037 5882 0 76 0 - 1111 - pts/0 00:00:00 ps
# 上面这个信息其实很多喔!各相关信息的意义为:
# F 代表这个程序的旗标 (flag), 4 代表使用者为 super user;
# S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍;
# PID 没问题吧!?就是这个程序的 ID 啊!底下的 PPID 则上父程序的 ID;
# C CPU 使用的资源百分比
# PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍;
# NI 这个是 Nice 值,在下一小节我们会持续介绍。
# ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running
的程序,一般就是『 - 』的啦!
# SZ 使用掉的内存大小;
# WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
# TTY 登入者的终端机位置,若为远程登录则使用动态终端接口(pts/n)
# TIME 使用掉的 CPU 时间。
# CMD 所下达的指令为何!?


范例:找出与 cron 与 syslog 这两个服务有关的 PID 号码?
[root@linux ~]# ps aux | egrep '(cron|syslog)'
root 1539 0.0 0.1 1616 616 ? Ss Jul25 0:03 syslogd -m 0
root 1676 0.0 0.2 4544 1128 ? Ss Jul25 0:00 crond
root 6157 0.0 0.1 3764 664 pts/0 R+ 12:10 0:00 egrep (cron|syslog)



iostat 命令为你提供系统的不同信息,包括CPU时间的统计、I/O设备、分区和网络文件系统(NFS)。

[root@AY1407070046165819beZ ~]# iostat
Linux 2.6.32-431.17.1.el6.x86_64 (AY1407070046165819beZ)        01/16/2017      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.73    0.00    0.20    0.93    0.00   98.14

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
xvda              3.15        45.60        17.01 1773055956  661424568

xvdb              0.00         0.00         0.00       1392          0


# 例如,如果 %idle低,可以确定系统一直很忙碌。高%iowait表明磁盘出现问题。如果 %system 或 %nice 比 %user 高,则表明系统失衡且级别高的进程阻止普通进程的运行。

系统资源的查看

[root@linux ~]# free [-b|-k|-m|-g] [-t]
参数:
-b :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes), m(Mbytes)
k(Kbytes), 及 g(Gbytes) 来显示单位喔!
-t :在输出的最终结果,显示物理内存与 swap 的总量。
范例:
范例一:显示目前系统的内存容量
[root@linux ~]# free -m
total used free shared buffers cached
Mem: 376 366 10 0 129 94
-/+ buffers/cache: 141 235
Swap: 996 0 995





RPM 软件管理程序命令详解

RPM 默认安装的路径


/etc 一些设置文件放置的目录,例如 /etc/crontab
/usr/bin 一些可执行文件
/usr/lib 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与帮助文档
/usr/share/man 一些 man page 文件


RPM 安装

如果要安装一个文件名为 rp-pppoe-3.5-32.1.i386.rpm 的文件,只需这样:



[root@www ~]# rpm -i rp-pppoe-3.5-32.1.i386.rpm

说明:

rp-pppoe   -        3.5     -      32             .i386         .rpm
软件名称      软件的版本信息   发布的次数     适合的硬件平台   扩展名



显示安装进度

[root@www ~]# rpm -ivh package_name



选项与参数:

-i :install 的意思

-v :查看更详细的安装信息画面

-h :以安装信息栏显示安装进度



范例一:找出你的 Linux 是否有安装 logrotate 这个软件
[root@www ~]# rpm -q logrotate
logrotate-3.7.4-8
[root@www ~]# rpm -q logrotating
package logrotating is not installed
# 注意到,系统会去找是否有安装后面接的软件名称。注意,
# 不必要加上版本。至于显示的结果,一看就知道有没有安装。

范例二:列出上题当中,属于该软件所提供的所有目录与文件:
[root@www ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
....(以下省略)....
# 可以看出该软件到底提供了多少的档桉与目录,也可以追踪软件的资料。

范例三:列出 logrotate 这个软件的相关说明资料:
[root@www ~]# rpm -qi logrotate
Name        : logrotate             Relocations: (not relocatable)
Version     : 3.7.4                      Vendor: CentOS
Release     : 8                      Build Date: Sun 02 Dec 2007 08:38:06 AM CST
Install Date: Sat 09 May 2009 11:59:05 PM CST    Build Host: builder6
Group       : System Environment/Base  Source RPM: logrotate-3.7.4-8.src.rpm
Size        : 53618                     License: GPL
Signature   : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897
Summary     : Rotates, compresses, removes and mails system log files.
Description :
The logrotate utility is designed to simplify the administration of
log files on a system which generates a lot of log files.  Logrotate
allows for the automatic rotation compression, removal and mailing of
log files.  Logrotate can be set to handle a log file daily, weekly,
monthly or when the log file gets to a certain size.  Normally,
logrotate runs as a daily cron job.

Install the logrotate package if you need a utility to deal with the
log files on your system.
# 列出该软件的 information (资讯),里面的信息可多着呢,包括了软件名称、
# 版本、开发商、SRPM文件名称、打包次数、简单说明信息讯、软件打包者、
# 安装日期等!如果想要详细的知道该软件的资料,用这个参数来了解一下

范例四:分别仅找出 logrotate 的设定文件与说明文件
[root@www ~]# rpm -qc logrotate
[root@www ~]# rpm -qd logrotate

范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙?
[root@www ~]# rpm -qR logrotate
/bin/sh
config(logrotate) = 3.7.4-8
libc.so.6
....(以下省略)....


范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的?
[root@www ~]# rpm -qf /bin/sh
bash-3.2-21.el5
# 这个参数后面接的可是『文件』!不像前面都是接软件!
# 这个功能在查询系统的某个文件属于哪一个软件所有的。


范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何办?
[root@www ~]# rpm -qpR filename.i386.rpm
# 加上 -qpR ,找出该文件需求的数据!

RPM 卸载与重建数据库


# 1. 找出与 pam 有关的软件名称,并尝试删除 pam 这个软件:
[root@www ~]# rpm -qa | grep pam
pam-devel-0.99.6.2-3.27.el5
pam_passwdqc-1.0.2-1.2.2
pam_pkcs11-0.5.3-23
pam_smb-1.1.7-7.2.1
pam-0.99.6.2-3.27.el5
pam_ccreds-3-5
pam_krb5-2.2.14-1
[root@www ~]# rpm -e pam
error: Failed dependencies:  <== 发生软件依赖导致无法删除某些软件
        libpam.so.0 is needed by (installed) coreutils-5.97-14.el5.i386
        libpam.so.0 is needed by (installed) libuser-0.54.7-2.el5.5.i386
....(以下省略)....

# 2. 若仅删除 pam-devel 这个之前范例安装上的软件呢?
[root@www ~]# rpm -e pam-devel  <==不会出现任何信息!
[root@www ~]# rpm -q pam-devel
package pam-devel is not installed


由于 RPM 文件常常会安装/删除/升级等,某些操作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件损坏。

[root@www ~]# rpm --rebuilddb   <==重建数据库


上一篇:Linux 的软件管理器
下一篇:Linux 下的软件管家 YUM

2014年2月14日星期五

Linux 的软件管理器

    Linux 有类似 Windows 控制面板下面的“添加或删除程序”软件管理器。在 Linux 上面至少就有两种常见的这方面的软件管理器,分别是 Red Hat 的 RPM 与 Debian 的 dpkg 。

dpkg

    这个机制最早是由Debian Linux 社群所开发出来的,透过dpkg 的机制, Debian 提供的软体就能够简单的安装起来,同时还能提供安装后的软体资讯,实在非常不错。 只要是衍生于Debian 的其他 Linux distributions 大多使用dpkg 这个机制来管理软体的, 包括B2D, Ubuntu 等等。

RPM 

   这个机制最早是由Red Hat 这家公司开发出来的,后来实在很好用,因此很多distributions 就使用这个机制来作为软体安装的管理方式。 包括Fedora, CentOS, SuSE 等知名的开发商都是用它。



distribution 代表 软件管理机制 使用命令 在线升级机制(命令)
Red Hat/Fedora RPM rpm, rpmbuild YUM (yum)
Debian/Ubuntu DPKG dpkg APT (apt-get)

下面我们来谈谈软件管理机制 RPM ,在线升级的方式为 yum 的相关说明。

RPM 与 SRPM

    RPM 全名是『 RedHat Package Manager 』简称则为 RPM 。顾名思义,当初这个软体管理的机制是由 Red Hat 这家公司发展出来的。 RPM 是一种以数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。

优点:


  • 由于已经编译完成并且打包完毕,所以软体传输与安装上很方便 (不需要再重新编译);
  • 由于软体的资讯都已经记录在 Linux 主机的资料库上,很方便查询、升级与卸载。


劣势:


  • 软件安装的环境必须与打包时的环境需求一致或相当;
  • 需要满足软件的依赖属性需求;
  • 卸载时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!


    SRPM 是什么呢?顾名思义,它是 Source RPM 的意思,也就是这个 RPM 文件里面含有源代码。SRPM 所提供的软件内容并没有经过编译。安装该软件时必须要:


  • 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件;
  • 然后将编译完成的 RPM 文件安装到 Linux 系统当中。



文件格式文件名格式直接安装与否內含程序类型可否修改参数并编译
RPMxxx.rpm已编译不可
SRPMxxx.src.rpm不可未编译的源代码


下一篇:RPM 软件管理程序命令详解