作为一个web应用的开发者,可能经常需要,查看一下应用系统的日志信息,或者跟踪一下操作系统的运行状态等来跟踪定位问题一些线上问题,那么有几类常用的命令以及其常用参数方法是需要熟练掌握的。下面简要记载说明下常用的几个命令和参数以备查询。
第一类: 进程常用命令:
kill, ps, top, nice, pstree, uptime, sar
kill 命令
顾名思义就是杀死进程,其实它不仅仅是杀死进程,他是给进程发送一个信号量。当然是用它貌似用的最多的就是杀死一个进程了。
使用方式:
kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
kill -l [ signal ]
-s{SignalName | SignalNumber} 指定信号为一个信号数或一个信号名,如 SIGKILL -9 或 SIGTERM -15。
-SignalName 指定一个信号名,如 SIGHUP。这是个废弃的语法。
-SignalNumber 指定一个信号数。这是个废弃的语法。
pid 指定一个十进制整数代表一个要被发送信号的进程或进程组。如果 PID 是一个正值,kill 命令发送进程 ID 与 PID 相等的进程。如果 PID 值是 0,kill 命令发送信号到所有进程组的 ID 等于发送者进程组的 ID 的进程。不发送信号到 PID 为 0 或 1 的进程。如果 PID 是 -1,kill 命令发送信号到所有由发送者的有效用户所有的进程。
-l 列出由实现支持的信号名字。
-l ExitStatus 列出去掉了公共 SIG 前缀的信号名。如果 ExitStatus 是一个十进制整数值,对应那个信号的信号名被显示。如果 ExitStatus 是一个对应于由这个信号终止的进程的退出状态值,则显示对应于这个终止这个进程的信号的名字。
ps 命令
ps 命令主要用于监控进程的执行状况。
ps [选项]
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
x 显示没有控制终端的进程。
ps 命令的输出结果说明:
-bash-3.00$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2928 556 ? S Oct30 0:00 init [3]
root 2 0.0 0.0 0 0 ? S Oct30 2:45 [migration/0]
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
常用的命令参数: ps aux ps auxww ps ef ps efww 等
top命令:
显示系统当前的进程和其状况,主要是用来监控系统的运行状况,具备一定的时效性。
top [-] [d delay] [q] [c] [s] [S] [i]
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式。
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名。(进程的command列显示进程的对应命令行或命令名)
top命令结果详解:
top命令显示的项目很多,默认值是每5秒更新一次。显示的各项目为:
11:51:23 up 348 days, 10:10, 2 users, load average: 0.08, 0.08, 0.02
uptime 该项显示的是系统启动时间、已经运行的时间和三个平均负载值(最近1分钟,5分钟,15分钟的负载值)参见:http://en.wikipedia.org/wiki/Load_%28computing%29。
222 processes: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
processes 自最近一次刷新以来的运行进程总数。这些进程被分为正在运行的,休眠的,停止的, 僵尸进程等很多种类。
Mem: 4149104k total, 4117312k used, 31792k free, 139080k buffers
Mem 内存使用情况统计,其中包括总的可用内存,已用内存,空闲内存,共享内存和缓存所占内存的情况。
Swap:2096472k total, 208k used, 2096264k free, 2070140k cached
Swap 交换空间统计,其中包括总的交换空间,已用交换空间,可用交换空间。
PID 每个进程的ID。
PPID 每个进程的父进程ID。
UID 每个进程所有者的UID 。
USER 每个进程所有者的用户名。
PRI 每个进程的优先级别。
NI 该进程的优先级值。
RSS 该进程占用的物理内存的总数量,单位是KB。
SHARE 该进程使用共享内存的数量。
STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态。
TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME。
%CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。
%MEM 该进程占用的物理内存占总内存的百分比。
COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行。
以下是一个真实的top命令执行快照结果
top - 11:51:23 up 348 days, 10:10, 2 users, load average: 0.08, 0.08, 0.02
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.7% us, 0.2% sy, 0.0% ni, 98.9% id, 0.3% wa, 0.0% hi, 0.0% si
Mem: 4149104k total, 4117312k used, 31792k free, 139080k buffers
Swap: 2096472k total, 208k used, 2096264k free, 2070140k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7325 admin 25 0 6 88:55.23 42.9 2278m 1.7g 22m S java
2761 admin 16 0 0 0:09.61 0.2 1029m 7024 1300 S httpd
1 root 16 0 0 0:20.24 0.0 1804 548 468 S init
2 root RT 0 0 0 0 S 0 0.0 2:45.37 [migration/0]
nice命令
使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment]
[--help] [--version] [command [arg...]
在当前程序运行优先级基础之上调整指定值得到新的程序运行优先级,用新的程序运行优先级运行命令行”command[arguments...]“。优先级的范围为-20 ~ 19
等40个等级,其中数值越小优先级越高,数值越大优先级越低,既-20的优先级最高,19的优先级最低。若调整后的程序运行优先级高于-20,则就以优先级-20来运行命令行;若调整后的程序运行优先级低于19,则就以优先级19来运行命令行。若nice命令未指定优先级的调整值,则以缺省值10来调整程序运行优先级,既在当前程序运行优先级基础之上增加10。
pstree 命令
pstree 命令用法
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-Z] [-G|-U] [pid|user]
pstree -V
将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程参数:
-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
-c 不使用精简标示法,如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 * 。
-G 使用VT100终端机的列绘图字符。
-h 列出树状图时,特别标明现在执行的程序。
-H<程序识别码> 此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
-l 采用长列格式显示树状图。
-n 用程序识别码排序。预设是以程序名称来排序。
-p 显示程序识别码。
-u 显示用户名称。
-U 使用UTF-8列绘图字符。
-V 显示版本信息。
uptime 命令
[admin@admin162 /]$ uptime
13:22:40 up 348 days, 11:41, 1 user, load average: 0.14, 0.13, 0.04
显示内容信息为:
现在的时间
系统开机运转到现在经过的时间
连线的使用者数量
最近一分钟,五分钟和十五分钟的系统负载
参数: -V 显示版本资讯。
sar 命令
sar 命令行的常用格式:
sar [options] [-A] [-o file] t [n]
在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式
存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
-A:所有报告的总和。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告。
-r:没有使用的内存页面和硬盘块。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
例如,每60秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件 test 中,需键入如下命令:
# sar -u -o test 60 5
如果要查看二进制文件zhou中的内容,则需键入如下sar命令:
# sar -u -f test
查看网络流量:
sar -n DEV
具体各个参数的输出字段含义通过man查看
Linux系统需要定期巡检,以检查服务器软硬件使用情况,相当于对人的体检,确保可以及时发现问题、解决问题,降低损失,常用的巡检命令如下:
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh < 目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
# ps -ef # 查看所有进程
# top # 实时显示进程状态
# w # 查看活动用户
# id < 用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看所有用户的定时任务