top命令

监控系统的运行状态,并且可以按照cpu、内存、执行时间进行排序。

第一行中,03:30:22是当前时间,up 39 min是系统运行的运行了多长时间,1 user指出了当前有几个用户登录到系统,load average指的是系统负载,这后面的三个值分别是1分钟,5分钟,15分钟的系统负载平均值。

如果仅仅需要第一行中的信息,可以使用uptime命令。

第二行中,Task指出了当前系统有多少个进程,以及各种状态的进程统计信息。

第三行是%Cpu(s),代表了CPU占用比例,其中:

us 用户模式(user mode)

sy 系统模式(system mode)

ni 优先值(low priority user mode(nice))

id 空闲CPU百分比(idle task)

wa 等待输入输出的CPU事件百分比(I/O waiting)

hi servicing IRQs

si servicing soft IRQs

st steal (time given to other DomU instances)

ni是优先值(nice value),也就是任务的优先值。优先值为负数,则说明任务有更高的优先级,正数值说明任务有更低的优先级,该值为0意味着进程都优先级没有调整。

最后两行为内存信息,前者Mem为物理内存占用信息,后者Swap为交换分区占用信息。

使用-M参数可以更加友好的显示内存占用信息。默认是以kb展示的,看起来比较费劲,使用-M之后会根据数值大小,以G/M为单位展示。

最下面是进程的信息区域:

PID 进程的PID

USER 用户名,任务属主

PR 任务的优先级

NI 优先值

VIRT 虚拟映像(kb),任务当前使用的虚拟内存数量

RES 常驻物理内存占用量,RES=CODE+DATA

SHR 共享内存大小(kb)

S 进程状态(D-不可中断的睡眠,R-运行,S-睡眠,T-停止,Z-僵尸进程)

%CPU CPU使用量

%MEM 内存使用量

TIME+ CPU时间,百分之一

COMMAND 程序名称

pgrep/pkill 命令

根据名称或者其它属性查询(发送信号)进程信息。

pgrep命令根据提供的条件查询进程的pid,查询条件是and方式的,对于同一个选项,使用『,』分隔可以按照or方式查询。

pgrep -u root sshd # 查询进程名为sshd,并且属主是root的进程

pgrep -u root,daemon # 查询属主是root或者daemon的进程

pkill 使用与pgrep类似,不过它不是用来查询进程pid,而是给进程发送信号,默认会发送 SIGTERM信号。

例如:

$ pgrep -u root named # 查找named进程的pid

$ pkill -HUP syslogd # 告诉syslogd重新读取配置文件

要查看有哪些信号可用,可以使用kill -l列出所有的信号以及其数值。

except命令

send 发送一个字符串给进程。

expect 等待来自进程返回的字符串。

spawn 开始一个命令。

实现控制台SSH直接登陆Linux服务器

#!/usr/bin/expect

set timeout 20

set ip "IP地址"

set user "用户名"

set password "密码"

spawn ssh "$user\@$ip"

expect "$user@$ip's password:"

send "$password\r"

interact

pstack命令

pstack是一个shell脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是gstack的一个链接。

该命令只需要提供一个参数,进程的pid即可。

$ sudo pstack $(pgrep -uroot php-fpm)

[sudo] password for guanyy:

#0 0x000000380d8e86f3 in __epoll_wait_nocancel () from /lib64/libc.so.6

#1 0x00000000007ec4a4 in fpm_event_epoll_wait ()

#2 0x00000000007e1517 in fpm_event_loop ()

#3 0x00000000007dc887 in fpm_run ()

#4 0x00000000007e3bd8 in main ()

pstack是gdb的一部分,如果系统没有pstack命令,使用yum搜索安装gdb即可。

strace命令

strace命令用于跟踪系统调用和信号。主要用于诊断,调试程序,使用该命令能够打印出进程执行的系统调用信息。

在 Mac 下使用dtruss命令代替

找出应用程序启动时读取的配置文件

$ strace php 2>&1 | grep php.ini

open("/usr/local/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)

open("/usr/local/lib/php.ini", O_RDONLY) = 4

lstat64("/usr/local/lib/php.ini", {st_mode=S_IFLNK|0777, st_size=27, ...}) = 0

readlink("/usr/local/lib/php.ini", "/usr/local/Zend/etc/php.ini", 4096) = 27

lstat64("/usr/local/Zend/etc/php.ini", {st_mode=S_IFREG|0664, st_size=40971, ...}) = 0

这里的2>&1 是将标准错误输出重定向到标准输出。

查找为什么程序没有打开指定文件

$ strace -e open,access 2>&1 |grep your-filename

-e参数指定了一个限定表达式用于指定要跟踪的事件和如何跟踪它们。

[qualifier=][!]value1[,value2]...

这里的qualifier可选值为: trace, abbrev, verbose, raw, signal, read, write。默认的qualifier是trace。

查看进程正在执行什么操作

root@dev:~# strace -p 15427

Process 15427 attached - interrupt to quit

futex(0x402f4900, FUTEX_WAIT, 2, NULL

Process 15427 detached

-p指定了strace跟踪的进程的pid,这样就避免了每次执行strace时需要重启程序。

查看进程的哪些操作比较耗时

root@dev:~# strace -c -p 11084

Process 11084 attached - interrupt to quit

Process 11084 detached

% time seconds usecs/call calls errors syscall

------ ----------- ----------- --------- --------- ----------------

94.59 0.001014 48 21 select

2.89 0.000031 1 21 getppid

2.52 0.000027 1 21 time

------ ----------- ----------- --------- --------- ----------------

100.00 0.001072 63 total

-c参数用于统计进程做了哪些系统调用,调用的时间统计等,并对这些信息做一个汇总显示。

查看为什么xxx无法连接到服务器

$ strace -e poll,select,connect,recvfrom,sendto nc www.news.com 80

sendto(3, "\\24\\0\\0\\0\\26\\0\\1\\3\\255\\373NH\\0\\0\\0\\0\\0\\0\\0\\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20

connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)

connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)

...

nc命令

该命令用于创建任意的TCP/UDP连接或者是监听连接。

建立一个基本的C/S模型(文件远程复制)

在Server1上,使用nc命令创建一个服务端:

server1 $ nc -l 1234

在Server2上,使用nc作为客户端连接到server1

server2 $ nc server1的IP地址 1234

这样就建立起一个简单的C/S连接,在server2中输入任何内容,在server1都可以接受到(同步显示)。

上面的例子可以改造实现文件远程发送

server1 $ nc -l 1234 > filename.out

在server2上

server2 $ nc server1的IP地址 1234 < filename.in

-l 指定了nc应该作为server端监听指定的端口

模拟HTTP请求

# echo -n "GET / HTTP/1.0\r\n\r\n" | nc php.net 80

HTTP/1.1 400 Bad Request

Server: nginx/1.6.2

Date: Tue, 16 Dec 2014 08:09:35 GMT

Content-Type: text/html

Content-Length: 172

Connection: close

400 Bad Request

400 Bad Request


nginx/1.6.2

端口扫描

端口扫描的作用还是比较大的,使用nc可以方便的进行端口扫描。

# nc -z letv.com 1-100

Connection to letv.com 22 port [tcp/ssh] succeeded!

Connection to letv.com 80 port [tcp/http] succeeded!

这里的1-100指定了扫描的端口范围,-z参数告诉nc命令只报告开放的端口。

默认nc命令发送的是tcp请求,通过指定参数-u可以发送udp请求。

目录传输

下面例子中,将server2的phpredis-master目录拷贝到server1。

server1:

# nc -l 1234|tar zxvf -

server2:

# tar zcvf - phpredis-master|nc server1的IP地址 1234

pstree命令

该命令用于显示进程树,以树的形式显示正在运行的进程,树的根节点是指定的pid(忽略则为init进程)。

[root@cdn ~]# pstree -p $(pgrep -uroot php-fpm)

php-fpm(5445)─┬─php-fpm(5446)

├─php-fpm(5447)

├─php-fpm(5448)

├─php-fpm(7540)

├─php-fpm(21639)

└─php-fpm(24727)

ss命令

ss命令用于显示socket的统计信息。

显示socket的汇总信息

-s选项用于显示汇总信息。

# ss -s

Total: 247 (kernel 290)

TCP: 214 (estab 68, closed 130, orphaned 0, synrecv 0, timewait 130/0), ports 135

Transport Total IP IPv6

* 290 - -

RAW 0 0 0

UDP 11 7 4

TCP 84 81 3

INET 95 88 7

FRAG 0 0 0

查看所有打开的网络端口

-l选项用于列出当前正在监听的socket。

# ss -l

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 127.0.0.1:smux *:*

LISTEN 0 128 127.0.0.1:9000 *:*

LISTEN 0 50 *:3306 *:*

LISTEN 0 1024 :::11211 :::*

使用ss -pl可以查看使用网络端口的进程名称,这里的-p选项用于显示进程信息。

# ss -pl

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 127.0.0.1:smux *:* users:(("snmpd",1256,8))

LISTEN 0 50 *:3306 *:* users:(("mysqld",17651,10))

LISTEN 0 1024 :::11211 :::* users:(("memcached",1849,34))

LISTEN 0 1024 *:11211 *:* users:(("memcached",1849,33))

LISTEN 0 511 127.0.0.1:6379 *:* users:(("redis-server",1403,4))

使用ss -pl|grep 端口号查看端口被那个进程占用。

显示所有的TCP/UDP Socket

参数-a(--all)用于显示所有的socket,-t指的是TCP, -u是UDP, -w是RAW, -x是UNIX。

# ss -t -a

# ss -u -a

# ss -w -a

# ss -x -a

w/who命令

w命令用于查看当前哪些用户登录到系统和他们正在做什么,who命令仅用于查看哪些用户登录系统。

# w

15:39:08 up 126 days, 22:35, 3 users, load average: 0.02, 0.05, 0.02

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 10.58.92.228 13:29 1:35m 0.03s 0.03s -bash

root pts/1 10.58.93.56 10:32 5:06m 0.00s 0.00s -bash

root pts/4 10.58.88.20 12:29 0.00s 0.20s 0.00s w

# who

root pts/0 2014-12-18 13:29 (10.58.92.228)

root pts/1 2014-12-18 10:32 (10.58.93.56)

root pts/4 2014-12-18 12:29 (10.58.88.20)

iostat

报告CPU的统计信息,设备、分区、网络文件系统(NFS)的I/O统计信息。

# iostat

Linux 2.6.32-903.279.9.1.el6.x86_64 (localhost) 2014年12月18日 _x86_64_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

0.35 0.00 0.34 0.42 0.15 98.74

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

vda 4.01 0.35 56.76 3866731 622586087

dm-0 3.29 0.09 26.33 989378 288796192

dm-1 3.45 0.05 27.60 554922 302727584

dm-2 0.32 0.21 2.83 2296845 31060799

这里对几个性能指标进行解释:

tps 每秒发送的I/O请求数

Blk_read/s 每秒读取的block数

Blk_wrtn/s 每秒写入的block数

Blk_read 读取的block数

Blk_wrtn 写入的block数

通过指定-d参数可以设定自动按照指定时间间隔显示统计信息。例如,下列命令每隔2s显示一次。

$ iostat -d 2

iptraf 命令:实时网络统计

交互式的IP网络实时监控工具,图形化界面,比较方便。

# iptraf

界面如下:

linux配置文件方式创建st01,实用linux命令(一)相关推荐

  1. 红旗linux shell方式下配置声卡的命令是:,‘红旗杯’linux大赛——基础知识2

    1. 在chmod 命令中,-v参数的作用是: A. 详细说明组的变化 *B. 详细说明权限的变化 C. 改变本目录及其所有子目录的文件的权限 D. 在文件的权限确实改变时进行详细的说明 2. 为了显 ...

  2. 红旗linux shell方式下配置声卡的命令是:,linux基础知识1

    1. 在chmod 命令中,-v参数的作用是: A. 详细说明组的变化 *B. 详细说明权限的变化 C. 改变本目录及其所有子目录的文件的权限 D. 在文件的权限确实改变时进行详细的说明 2. 为了显 ...

  3. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  4. linux 目录下创建子目录,在 Linux 下用 mkdir 命令来创建目录和子目录

    了解了用 ls 命令在目录中列出条目后,现在我们要学习在 Linux 系统下创建目录.在 Linux 下,我们可以使用 mkdir 命令.Mkdir 是"make directory&quo ...

  5. linux虚拟机如何创建文件夹,Linux虚拟机命令如何创建新的文件和文件夹

    满意答案 qwsa1221 2015.07.15 采纳率:45%    等级:12 已帮助:11177人 Linux系统中创建新文件一般用touch命令,比如创建名字为newTxt的文本文件用 tou ...

  6. linux按时间创建文件夹,Linux命令创建日期文件夹或者文件

    touch 命令:用于创建文件 mkdir 命令:用于创建文件夹 date 命令:获取系统时间 关于date获取系统时间选项 * %Y:年 * %m:月 * %d:日 * %H:小时 * %M:分钟 ...

  7. linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 在 Azure Kub ...

  8. linux配置文件重新加载失败,linux下为什么每次修改完配置文件之后都需要重新加载配置文件...

    解释了 linux下为什么每次修改完配置文件之后都需要重新加载配置文件 目录一.关于inode 二.inode的作用 二.为什么每次修改完服务器配置文件之后,都需要重新加载一下配置文件? 一.关于in ...

  9. Linux中fdisk创建扩展分区,linux fdisk创建分区

    在这个时候,你应该在你的硬盘上有大量可用作 Slackware 分区的未分区空间. 现在你已经准备好了创建你的 Linux 根分区.你可以用 Linux 版的 fdisk 来做到这一点. 为了给一个硬 ...

最新文章

  1. android4.3 截屏功能的尝试与失败分析
  2. 备案号链接工信部_工信部备案系统启用新域名
  3. 转载 3年工作经验 面试大厂
  4. nginx过滤html输入,nginx屏蔽指定接口(URL)的操作方式
  5. react学习系列1 修改create-react-app配置支持stylus 1
  6. IOS开发一些资源收集
  7. 《网络攻防第六周作业》
  8. 处理字符数据--排序规则(Collation)
  9. vue前端项目打包并且在服务器上部署过程
  10. linux qt 多点触摸,Qt 4.6 添加 Multi-touch(多点触摸)支持
  11. delphi反编译ded加密解密之反汇编工具
  12. websphere html 缓存,如何清除WebSphere类缓存
  13. 编写java判断闰年_Java 判断闰年代码实例
  14. KV存储相关基础知识
  15. FindWithTag用法
  16. h5物体拖动_研究了50+个爆款H5,原来他们刷屏的套路如此简单
  17. 云上在野容器攻防战:“杀”不掉的挖矿木马
  18. 关于“分节符(下一页)”和“分节符(奇数页)”的问题
  19. 太空射击第13课: 爆炸效果
  20. 水文实时在线监测系统

热门文章

  1. Linux服务器c++开发之路,从Linux基础入门到服务器开发高级架构
  2. dx200手环使用方法_DX200到了!说说听感和操作
  3. Python利用turtle库绘图大熊猫
  4. R 语言 rmd输出有中文 ,怎么去除中文
  5. 在装MySQL的过程中报错找不到ssleay32.dll与应用程序无法正常启动(0xc000007b),请单击“确定关闭应用程序”解决方法
  6. HTTP get请求发送JSON格式数据
  7. 30V / 1.2A 高调光比 LED 恒流驱动器方案PT4115外置SOP8单片机
  8. 叙述式教学方案计算机技术,叙述式教学设计方案模板(1)
  9. 个人永久性免费-Excel催化剂功能第23波-非同一般地批量拆分工作表
  10. 北滘职业技术学校计算机,北窖职业技术学校