常用命令--系统管理

对于系统相关的操作命令

date

date [OPTION] [+FORMAT]
显示或设置系统日期和时间

-d STR:显示字符串所指的日期与时间,如”+1 day”,’-2 month’等
-s STR:设置日期和时间
-R:可显示时区
-u:显示UTC时间

时期显示格式有:

  • %H:小时,24小时制(00~23)
  • %I:小时,12小时制(01~12)
  • %k:小时,24小时制(0~23)
  • %l:小时,12小时制(1~12)
  • %M:分钟(00~59)
  • %p:显示出AM或PM
  • %r:显示时间,12小时制(hh:mm:ss %p)
  • %s:从1970年1月1日00:00:00到目前经历的秒数
  • %S:显示秒(00~59)
  • %T:显示时间,24小时制(hh:mm:ss)
  • %X:显示时间的格式(%H:%M:%S)
  • %Z:显示时区,日期域(CST)
  • %a:星期的简称(Sun~Sat)
  • %A:星期的全称(Sunday~Saturday)
  • %h,%b:月的简称(Jan~Dec)
  • %B:月的全称(January~December)
  • %c:日期和时间(Tue Nov 20 14:12:58 2012)
  • %d:一个月的第几天(01~31)
  • %x,%D 日期(mm/dd/yy)
  • %j:一年的第几天(001~366)
  • %m:月份(01~12)
  • %w:一个星期的第几天(0代表星期天)
  • %W:一年的第几个星期(00~53,星期一为第一天)
  • %y:年的最后两个数字(1999则是99)
1
2
3
4
5
6
7
8
9
10
date +%F                                # 显示当前年月日
date -d @1487672155 # 查看指定时间戳的日期
date -d "-2 day" +"%Y-%m-%d %H:%M:%S" # 查看2天前的日期
date -s 20160613 # 设置成20160613,同时时间设为 00:00:00
date -s 05:41:01 # 设置具体时间,不会对日期做更改
date -s "01:01:01 2016-05-23" # 这样可以设置全部时间
date -s "01:01:01 20160523" #
date -s "2016-05-23 01:01:01" #
date -s "20160523 01:01:01" #
date -d '20160512' +%s # 获取指定日期时间戳

hwclock

clock为别名

-r:显示硬件时间
-h:查看帮助
-s|--hctosys:以硬件时钟为准,校正系统时钟
-w|--systohc:以系统时钟为准,校正硬件时钟

at

at [OPTION] TIME
在未来某时刻一次性执行某些任务

OPTION:
-l:查看作业队列,等同于atq命令
-f FILE:从指定文件中读取作业,不用交互输入
-d:删除指定作业,等同于atrm命令
-c:查看指定作业内容
-q QUEUE:指明队列
作业执行结果以邮件发送给提交作业的用户

TIME:
HH:MM[YYYY-mm-dd]
noon,midnight,teatime,tomorrow
now+#UNIT:now+3min (hours,days,weeks)

at作业有队列,用单字母表示,默认使用a队列

mail

mail [OPTION] TO_ADDR
邮件发送接收,实际为mailx程序

-s:指定主题
-f:读取指定邮件文件中的邮件

1
2
3
mail -s 'xxxx' admin@liu.com            # 回车后输入内容,ctrl+d结束并发送   
echo 'xxx' | mail admin@liu.com
mail -s 'xxx' admin@liu.com < file.txt

使用外部smtp发送邮件

  1. 关闭sendmail或者postfix如果有开启的话
  2. 安装mailx如果没安装的话
  3. 修改配置

    1
    2
    3
    4
    5
    6
    7
    8
    # mv /etc/mail.rc{,.abk}
    # vim /etc/mail.rc

    set from=liu@163.com
    set smtp=smtp.163.com
    set smtp-auth-user=liu@163.com
    set smtp-auth-password=xxx
    set smtp-auth=login
  4. 发送测试

    1
    echo 'hello world' | mail -s 'test' aaa@163.com

read

read [OPT] VAR
键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合,一次可读取多个变量的值,变量和输入的值都需要使用空格隔开,shell内部命令

-p:读取值时的提示信息
-t:读取等待时长

1
read -p 'Input Your Name : ' NAME   # 输入内容赋值给变量NAME

declare

declare [OPT] VAR
声明和显示已存在的shell变量,不加参数则显示

-i:定义整数
-x:定义环境变量
-r:定义只读变量
-a:定义数组

1
2
declare -x          # 显示环境变量
declare -i NUM=600 # 定义整数

env

显示系统已存在的环境变量,功能同declare -xprintenvexport

set

set [+|-OPTION] [ARGS]
显示系统中已经存在的shell变量,设置shell变量的新变量值及修改shell特性时

-a:标示已修改的变量,以供输出至环境变量
-b:使被中止的后台程序立刻回报执行状态
-C:转向所产生的文件无法覆盖已存在的文件
-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消
-e:若指令传回值不等于0,则立即退出shell
-f:取消使用通配符
-h:自动记录函数的所在位置
-H Shell:可利用”!”加<指令编号>的方式来执行history中记录的指令
-k:指令所给的参数都会被视为此指令的环境变量
-l:记录for循环的变量名称
-m:使用监视模式
-n:只读取指令,而不实际执行
-p:启动优先顺序模式
-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接
-t:执行完随后的指令,即退出shell
-u:当执行时使用到未定义过的变量,则显示错误信息
-v:显示shell所读取的输入值
-x:执行指令后,会先显示该指令及所下的参数

-o opti-name:选项名可以是下列之一:

allexport:同-a选项
braceexpand:shell执行花括号扩展,在默认情况下起作用
emacs:使用emacs风格命令行编辑接口.除非shell以-noline-editing选项启动:shell交互时,通过默认启动该选项
errexit:同-e选项
histexpand:同-H选项
ignoreeof:其结果是好像shell命令IGNOREEOF=10被执行
interactive:允许单词前带#号,以使得在交互shell中忽略命令行的全部字符
monitor:同-m选项
noclobber:同-C选项
noexec: 同-n选项
noglob:同-f选项
nohash:同-d选项
notify:同-b选项
nounset:同-u选项
physical:同-p选项
posix:改变BASH属性以匹配标准,默认操作不同于POSIX1003.2标准
verbose:同-v选项
vi:使用vi风格的命令行编辑器
XTRACE:同-x选项,如果没有给出选项名,显示当前选项值

在set命令中,选项前面跟着号’-‘示开启这个选项,’+’表示关闭这个选项

1
set {-|+}o          # 显示shell设置列表,'+'和'-'显示形式不同而已

更多关于set内容日后再添加

echo

echo [SHORT-OPTION] [STRING]
打印shell变量的值,或者直接输出指定的字符串,默认在最后加上换行符

-n:输出最后不加换行符
-e:激活转义字符,如下

\a:发出警告声
\b:退格键
\c:最后不加上换行符号
\n:换行且光标移至行首
\r:光标移至行首,但不换行
\t:插入tab
\\:插入\字符
\0nnn:插入nnn(八进制)所代表的ASCII字符
\xHH:插入HH(十六进制)所代表的ASCII字符

1
echo -e "\e[1;31mred\e[0m"     # 输出红色字

命令提示符设置如下图:
echo

xargs

xargs [opt] [cmd]
取前一个命令的输出作为另一个命令的参数,默认命令为echo

-d:指定分隔符
-n:每次cmd执行时,要使用几个参数
-I:指定替换字符,一般使用{}
-0
-E:指定停止标志符
-t:先打印出执行命令,再输出结果
-p:每次执行前询问

1
2
3
4
5
6
7
8
9
10
cat test.txt | xargs            # 单行输出
cat test.txt | xargs -n3 # 3个连续字符串一行输出
cat test.txt | xargs -E 'aa' # 读取到'aa'时停止
echo "acXnaXgn" | xargs -dX # 以X分隔后输出

find ./ -type f -name "*.tmp" | xargs rm -f
find /dir -name '*.py' | sort | xargs wc -l # 统计每个文件行数
find -name 'a*' -print | xargs -0 -I {} mv {} /dir # 移动文件

echo /dir1 /dir2 /dir3 | xargs -n1 cp test.txt # 复制文件到多目录下

seq

seq [OPTION] LAST
seq [OPTION] FIRST LAST
seq [OPTION] FIRST INCREMENT LAST
用于产生从某个数到另外一个数之间的所有整数

-f:使用printf 样式的浮点格式
-s:使用指定字符串分隔数字(默认使用:\n)
-w:在列前添加0 使得宽度相同

1
seq -s' ' -f"num_%02g" 7 11     # num_07 num_08 num_09 num_10 num_11

history

history [OPT]

数字:显示最近几条
-c:清空内存中的历史
-d #:删除指定编号的历史
-w:从内存中写入到~/.bash_history文件中
-r:从历史文件中读取到内存

相关内容查看:bash基本特性介绍

watch

定时监控一个命令的运行结果

-n:指定指令执行的间隔时间(秒)
-d:高亮显示指令输出信息不同之处
-t:不显示标题

1
watch -n 1 "df -i"      # 监测磁盘inode和block数目变化情况

source

source FILENAME
重新执行刚修改的配置文件,使之立即生效,而不必注销并重新登录,功能同.

pstree

pstree [OPTION]
显示进程树

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-p:显示程序识别码
-u:显示用户名称
-c:不使用精简标示法
-h:列出树状图时,特别标明现在执行的程序
-l:采用长列格式显示树状图
-n:用程序识别码排序。预设是以程序名称来排序
-U:使用UTF-8列绘图字符

ps

ps [OPTION]
选项有3种风格

  1. UNIX:选项前带-
  2. BSD:选项前不能带-
  3. GUN long option:长选项,选项前--

a:所有与终端有关的进程
u:以用户为中心来组织进程状态信息显示
x:所有与终端无关的进程,带[]为内核线程
-e:显示所有进程
-f:显示完整格式
-F:显示完整格式
-H:以层级结构
o:显示指定字段内容,各字段以,隔开,常用字段有:

pcpu:cpu占用率
pid:进程ID
ppid:父进程ID
pmem:内存使用率
pcomm:可执行文件名
cmd:命令
nice:优先级
user:启动用户
stat:进程状态
time:累计时间
etime:进程启动后度过的时间
tty:所关联的TTY
--sort:可根据以上字段进行排序,+为升 -为降

1
2
3
4
ps aux     
ps -ef
ps -eFH
ps axo pid,pcpu,ni,priority,comm --sort -pcpu,+ni | head

显示说明

  • USER,UID:用户
  • PID :进程ID
  • %CPU,C:CPU占比
  • %MEM:物理内存占比
  • VSZ :虚拟内存集 (Kbytes)
  • RSS :常驻内存集 (Kbytes)
  • TTY :终端号,?表示与终端机无关
  • STAT,S:该程序目前的状态
  • START,STIME:进程启动的时间
  • TIME:进程运行的时间
  • COMMAND:该程序的实际指令
  • PRI:这个是 Priority (优先执行序) 的缩写
  • NI:这个是Nice值
  • ADDR:该程序在内存的那个部分,运行中一般就是 “-“
  • SZ:使用的内存大小
  • WCHAN:目前这个程序是否正在运作当中,-`表示正在运作

更多状态说明见man手册

进程状态:

D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵死
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l: 多线程进程
s: 会话进程首进程

pgrep, pkill

pgrep [OPTION] PATTERN
显示指定进程信息,pkill默认为发送中止信号

-u UID:显示指定用户有关进程
-U UID:显示指定用户进程
-t TERMINAL:查看与指定终端的进程
-l:显示PID和进程名
-a:显示完整格式
-P PID:显示此进程的子进程

1
2
pgrep -U gdm
pkill httpd

pidof

pidof PRECOSS
根据程序名称,查找其相关进程的ID号

top

实时动态地查看系统的整体运行情况

-d:指定刷新时间
-p PID:查看指定pid进程
-c:显示整个命令行而不只是显示命令名
-b:以批次方式显示
-n:显示多少批次后退出

信息头说明:

  1. 第一行:任务队列信息,同uptime显示信息
    当前时间,运行时间,用户数,1、5、15分钟负载
  2. 第二行:进程信息
    进程总数,运行中,睡眠态,停止态,僵尸态
  3. 第三行:cpu占用信息
    us用户空间,sy内核空间,ni改变过优先级,id空闲,wa等待,hi硬中断,si软中断,st被虚拟化偷走
  4. 第四行:内存信息
    物理总量,使用量,空闲,缓存
  5. 第五行:swap信息
    交换区总量,使用量,空闲,缓存

注:cpu的负载取决于核心数,小于核心数为正常值;在内存信息中,buffers是指用来给块设备做的缓冲大小,如目录内容等,cached是用来给文件内容做缓冲

交互命令:

  • M:根据驻留内存大小进行排序
  • P:根据CPU使用百分比进行排序
  • T:根据累计时间进行排序
  • l:是否显示平均负载和启动时间
  • t:是否显示进程和CPU状态相关信息
  • m:是否显示内存相关信息
  • c:是否显示完整的命令行信息
  • x:高亮显示,在z模式下更明显,再按shift+<|>指定列排序
  • q:退出top
  • s|d:修改刷新时间
  • k:终止某个进程,默认15信号
  • 1:显示所有CPU核心的负载情况
  • i:忽略闲置和僵死进程
  • h:查看帮助
  • f:修改显示列,按指定字母选择,如p显示swap信息
  • H:显示线程
  • W:将当前设置写入配置文件[~/.toprc]

内容标题意义:

  • PID:进程id
  • USER:进程所有者
  • PR:进程优先级
  • NI:nice值。负值表示高优先级,正值表示低优先级
  • VIRT:虚拟内存集,进程申请虚拟内存总量,并非所使用内存
  • RES:常驻内存集,进程使用的、未被换出的物理内存大小,单位kb。
  • SHR:共享内存大小,可能也被其他应用程序使用着
  • S:进程状态。D:不可中断的睡眠状态 R:运行 S:睡眠 T:跟踪/停止 Z:僵死
  • %CPU:上次更新到现在的CPU时间占用百分比
  • %MEM:进程使用的物理内存百分比
  • TIME+:进程使用的CPU时间总计,单位1/100秒
  • COMMAND:进程名称(命令名/命令行)

uptime

显示系统时间、运行时长及平均负载,同top命令第一行内容,需手动安装

htop

它与传统的top命令功能一样,但它有更加强大的功能及能显示更多的信息,通过方向键移动光标,同时支持鼠标操作

-d:设置刷新的延迟时间
-u:显示指定的用户的进程信息列表
-s:按指定的列排序

交互命令:

  • F1~F10:略,F2可定义显示信息内容和样式
  • 空格:多选操作,可以同时kill多个选中进程
  • l:显示选中进程打开的文件
  • s:追踪进程的系统调用
  • t:显示进程树,同F5
  • a:设置指定进程运行在哪个cpu上
  • q:返回主界面或退出

iftop

iotop

ss

ss [OPTION] [FILTER]
socket statistics的缩写,用于代替netstat命令,选项相近。ss能够显示比netstat更多的信息并且速度也更快。netstat是从/proc 下的文件中读取信息再整理显示的,而ss命令直接从内核空间获取信息

OPTION

-n:数字方式显示IP和端口号,比如显示 80 而不是 http
-t:显示TCP协议端口
-u:UDP
-l:默认不显示监听的套接字,这个参数指明只显示监听连接
-4:显示ipv4服务监听状态
-p:相关程序和PID
-e:扩展格式信息
-s:显示套接字使用的统计信息
-o:计时器信息
-m:内存用量
-h:查看帮助

FILTER

dport|sport OP :PORT:匹配远程dport或本地src端口连接

OP为比较符: >,<,==,!=,>=,<=gt,lt,eq,ne,ge,le,使用><转义
PORT可为端口号或服务名,如:80:http

dst|src IP[:PORT]:匹配远程dst或本地src地址和端口
state:匹配状态,包括all, established, listen, closed, closing, close-wait, syn-sent, syn-recv, time-wait ,fin-wait-1, last-ack, connected…
-a|-o:条件间关系and、or

1
2
3
4
5
6
7
8
9
10
11
12
13
ss -tuln            # 
ss -s # socket统计
ss -l # 查看所有监听
ss -lp | grep ssh # 查看ssh端口

# 过滤功能
ss dst 192.168.1.1 # 匹配远程主机
ss src 172.16.60.2:22 # 匹配本机22号端口
ss sport \> :50 # 本地端口号大于50
ss sport eq :http # 匹配80端口
ss -a dport = :22 or sport = :22 # 匹配远程或本地22端口
ss -o state established '( dport = :22 or sport = :22 )' # 匹配22号端口已建立连接
####注意等号前后空格,括号要转义或引号且里面有空格

直接执行 ss 会列出当前所有已建立的非监听的(non-listening)连接,一个常用的参数 -tuln

lsof

lsof [option] [FILE|USER|PID...]|
列出某个进程打开的所有文件信息。打开的文件可能是普通的文件、目录、NFS文件、块文件、字符文件、共享库、常规管道、命名管道、符号链接、Socket流、网络Socket、UNIX域Socket,以及其它更多类型

-i[46] [protocol][@hostname|hostaddr][:service|port]:符合条件的进程

46:IPv4 or IPv6
protocol:TCP or UDP
hostname:主机名
hostaddr:IPv4位置
service:/etc/service中的 service name (可以不只一个)
port:端口号 (可以不只一个)

-p PID:查看该进程打开了哪些文件,进程号前可以使用^取反
-u USER:显示指定用户的进程打开的文件,用户名前可以使用^取反
-g GID:显示归属gid的进程情况
-n:不反解IP至HOSTNAME
-c STR:显示其COMMAND列中包含指定字符(STR)的进程所有打开的文件,可重复使用
+d /DIR/:显示指定目录下被进程打开的文件
+D /DIR/:基本功能同上,但会对指定目录进行递归查找
-N:列出所有NFS文件
-d FD:显示指定文件描述符的相关进程,也可以为描述符指定一个范围
-d mem:列出所有内存映射文件
-d mmap:显示所有内存映射设备
-d txt:列出所有加载在内存中并正在执行的进程,包含code和data
-d cwd:正在访问当前目录的进程列表
-a:用来连接上述多个选项,and的意思
-v MOUNT_POINT:查看当前挂载点被哪些进程使用

1
2
3
4
5
6
7
lsof -i :80
lsof -i tcp
lsof -c httpd -a -u ^root
lsof /tmp/a.txt
lsof -p 1245,5566,45222
lsof -d 0-2
lsof -v /mnt

注:多条件时默认为or关系,and关系需加-a选项

iostat

iostat [OPTION] [DELAY [COUNT]]
用于查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息
-c:显示CPU使用情况
-d:显示磁盘使用情况
-k:以 KB 为单位显示
-m:以 MB 为单位显示
-N:显示磁盘阵列(LVM) 信息
-n:显示NFS 使用情况
-p DEV:显示磁盘和分区的情况
-t:显示终端和CPU的信息
-x:显示详细信息

1
2
3
iostat 2 4          # 每2秒刷一次,显示4次
iostat -d sda1 # 查看指定分区信息
iostat -mx 1 5 # 以M为单位显示详情

显示字段说明

  • cpu属性
    %user:CPU处在用户模式下的时间百分比
    %nice:CPU处在带NICE值的用户模式下的时间百分比
    %system:CPU处在系统模式下的时间百分比
    %iowait:CPU等待输入输出完成时间的百分比
    %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
    %idle:CPU空闲时间百分比

    提示:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

  • disk属性
    rrqm/s:每秒进行 merge 的读操作数目。即 rmerge/s
    wrqm/s:每秒进行 merge 的写操作数目。即 wmerge/s
    r/s:每秒完成的读 I/O 设备次数。即 rio/s
    w/s:每秒完成的写 I/O 设备次数。即 wio/s
    rsec/s:每秒读扇区数。即 rsect/s
    wsec/s:每秒写扇区数。即 wsect/s
    rkB/s:每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节
    wkB/s:每秒写K字节数。是 wsect/s 的一半
    avgrq-sz:平均每次设备I/O操作的数据大小 (扇区)
    avgqu-sz:平均I/O队列长度。
    await:平均每次设备I/O操作的等待时间 (毫秒)
    svctm:平均每次设备I/O操作的服务时间 (毫秒)
    %util:一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

    提示:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待

vmstat

vmstat [OPTION] [DELAY [COUNT]]
显示虚拟内存的使用状态,同时可以报告关于进程、内存、I/O等系统整体运行状态

-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量
-m:显示slabinfo
-n:只在开始时显示一次各字段名称
-s:显示内存统计数据
-d:显示磁盘相关统计信息
-p:显示指定磁盘分区统计信息

显示字段说明

  • proc
    r:等待运行的进程个数,CPU上等待运行任务的队列长度
    b:处于不可中断睡眠的进程个数,被阻塞的任务队列长度
  • memory
    swad:交换内存使用总量
    free:空闲的物理内存总量
    buffer:用于buffer的内存总量
    cache:用于cache的内存总量
  • swap
    si:数据进入swap中的数据速率(kb/s)
    so:数据离开swap的速率
  • io
    bi:从块设备读入数据到系统的速率
    bo:保存数据到块设备的速率
  • system
    in:interrupts, 中断速率
    cs:context switch, 上下文切换的速率
  • cpu
    us:用户空间
    sy:内核空间
    id:空闲
    wa:等待
    st:被虚拟化给偷走的时间
1
2
3
4
vmstat                  # 只显示一条数据后退出
vmstat 2 # 每2秒显示一条数据
vmstat 2 3 # 每2秒显示一条数据,总显示3条
vmstat -p /dev/sda1 # 查看/dev/sda1磁盘的读/写状态

mpstat

mpstat [-P {|ALL}] [delay [count]]
MultiProcessor Statistics,是实时系统监控工具,其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中

-P {|ALL}:表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
delay:相邻的两次采样的间隔时间
count:采样的次数,count只能和delay一起使用

1
mpstat -p ALL 2

显示字段说明

  • %user :指定时间段内,用户态的CPU时间(%),不包含nice值为负进程 (usr/total)*100
  • %nice :指定时间段内,nice值为负进程的CPU时间(%) (nice/total)*100
  • %sys :指定时间段内,内核时间(%) (system/total)*100
  • %iowait :指定时间段内,硬盘IO等待时间(%) (iowait/total)*100
  • %irq :指定时间段内,硬中断时间(%) (irq/total)*100
  • %soft :指定时间段内,软中断时间(%) (softirq/total)*100
  • %idle :指定时间段内,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

pmap

pmap [OPTION] PID
显示一个进程的内存映射表,读取/proc/#/maps文件整理显示

-x:显示更详细信息

glances

功能类型top的监控工具

-b:以byte为单位显示网上数据速度
-d:关闭磁盘IO模块
-m:关闭mount模块
-n:关闭network模块
-t:指定刷新时间
-1:每颗cpu数据单独显示
-o {HTML|CSV}:统计数据保存为html或csv格式文件
-f:指定目录保存的文件,默认生成glances.html|csv

内建命令使用h查看,此处略去

1
2
3
4
5
glances -o HTML -f /tmp/    # 

# C/S模式下运行,用于监控远程服务器
glances -s -B IPADDR # 服务端模式,IPADDR为主机地址,用于监听
glances -c IPADDR # 客户端模式,IPADDR为远程服务器地址

dstat

dstat [OPTION] [DELAY [COUNT]]
多功能系统资源统计生成工具,信息上有点类似于top、free、iostat、vmstat等多个工具的合集

-c:CPU状态
-C:指定cpu状态
-d:磁盘读写状态
-D:指定磁盘或汇总信息
-g:显示page相关统计数据
-m:物理内存使用情况
-n:网络使用情况
-p:进程信息,包括runnable、uninterruptible、new
-r:I/O请求
-s:swap已使用和剩余量
--tcp
--udp
--raw
--socket
--ipc
--top-cpu:最占用cpu进程
--top-io
--top-mem
--top-oom
--top-lantency:延迟最大的进程
……

默认选项为-cdngy

sar

sar [OPTION] [DELAY [COUNT]]
获取系统的cpu、磁盘、内存、网络运行状态等信息,由sysstat包提供

1
2
3
4
5
6
7
8
9
10
11
12
# 以下数据统计每秒1次,共5次
sar -u 1 5 # cpu
sar -P 0 1 5 # 第一个cpu
sar -d 1 5 # 磁盘IO
sar -r 1 5 # 内存
sar -n DEV 1 5 # 网络
sar -n SOCK 1 5 # 套节字使用情况
sar -q 1 5 # 进程队列长度和平均负载状态
sar -B 1 5 # 内存分页监控

sar 1 0 -r -e 15:00:00 > data.txt # 每秒统计1次内存使用情况直到15点,并写入文件
sar -r -f data # 从文件是读取

strace

追踪到一个程序所执行的系统调用

-c:统计时间
-e:用来展示特定的系统调用,如open,write等等
-p:追踪指定pid进程
-o:保存结果到指定文件
-t:在每行的输出之前添加时间
-tt:显示更精确的时间,-ttt为时间搓
-r:相对时间

1
2
3
4
strace -t ls
strace -c ls
strace -e open -tt ls
strace -p 11231 -o result.txt

kill

kill [-s SIGNAL|-SIGNAL] PID
kill -l [SIGNAL]
用于向进程发送信号,实现进程管理,默认发送15信号终止进程
主要信号:

  • 1) SIGHUP:无须关闭进程而让其重读配置文件
  • 2) SIGINT:中止正在运行的进程,等同ctrl+c
  • 9) SIGKILL:强制立刻杀死运行中的进程
  • 15) SIGTERM:终止正在运行的进程
  • 18) SIGCONT:继续暂停的进行
  • 19) SIGSTOP:暂停正在运行的进程

信号标示方法有:1.完整名(SIGHUP…)、2.数字信号(1, 2, 9…)、3.缩写(HUP, INT…)

1
2
3
kill -l                     # 显示信号列表
kill {-[SIG]HUP|1} 3030 # 重读3030进程配置文件
kill -9 2334 # 强制中止

killall

killall [-SIGNAL] program
根据进程名来中止相关进程

1
killall httpd   # 中止http

jobs

查看所有作业,带有作业编号

显示符号说明
+:后台正在运行或下次运行的作业
-+作业运行后的下一个运行作业

终止作业:kill %JOBID

fg

fg [[%]JOBID]
将指定后台作业调回前台,默认调回带+号作业,也可指定作业号,其中%可省

bg

bg [[%]JOBID]
让送往后台的作业继续运行

nice

nice [OPTION] [COMMAND]
以指定的nice值(优先级)运行命令,值范围为-19~20,数值小优先级高,仅管理员才能调低nice值

1
2
nice 10 htop                            # 设置htop命令运行的nice值为10
ps axo pid,ni,priority,comm | grep xxx # 查看指定命令优先级

renice

renice [-n] NICE PID
调整运行中的进程nice值

1
renice -12 23023    # 调整pid为23023的进程nice为-12(优先级为8)

who

获取当前登录的用户信息

w

who,但会列出更多绿细节

users

列出当前登录的用户名

1
users | tr ' ' '\n'

last

提供登录会话信息,默认读取 /var/log/wtmp 日志

1
2
3
last -f /var/log/wtmp
last USER
last reboot

chroot

chroot NEWROOT
切换根所在目录

ldd

查看命令所依赖的共享库文件

1
ldd /bin/ls

sync

强制被改变的内容立刻写入磁盘,更新超块信息

chkconfig

检查、设置系统的各种服务,centos7上已废弃

1
2
3
4
5
chkconfig --list                # 列出所有的系统服务
chkconfig --add httpd # 增加httpd服务
chkconfig --del httpd # 删除httpd服务
chkconfig --level httpd 345 on # 设置httpd在2345运行级别下都是开启
chkconfig mysqld on # 设定mysqld在2345级别下开启

uname

uname [OPTION]
当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)

-r:系统发行编号
-a:全部信息
-n:主机名

lsmod

显示内核所有加载的模块信息,来源于/proc/modules
模块文件放置在/lib/modules/$(uname -r)/kernel/../*.ko

modinfo

modinfo [OPTION] MOD_NAME
查看某模块的详细信息,不管是否已加载

-k:当系统上有多个内核时,可手动指定查看
-F:仅显示指定字段信息
-a:仅列出作者名
-d:仅列出模块说明
-l:仅列出授权
-n:显示模块文件路径

modprobe

modprobe [OPTION] MOD_NAME
动态装载和卸载模块,包括相关依赖模块,默认装载的模块不要轻易去卸载

-r:卸载
-C:基于配置文件

depmod

depmod [-Ane]
内核模块依赖关系文件的生成工具或显示

-A:搜寻比/lib/modules/$(uname -r)/modules.dep内还要新的模块,如果真找到新模块,则更新写入
-n:不写入modules.dep中,而是显示到屏幕上
-e:显示出目前已载入的不可执行的模块名称

insmod

insmod MOD_FILENAME
装载模块,MOD_FILENAME为模块完整路径名,但不能解决依赖关系

rmmod

卸载模块

mkinitrd

为当前使用的内核重新制作ramdisk文件

1
mkinitrd /boot/initramfs-$(uname -r).img  $(uname -r)

sysctl

sysctl [OPTION] [var[=value]]
查看或设定/proc/sys目录下的内核参数,内核参数配置文件/etc/sysctl.conf

-a:查看所有
-w:写入新值
-p:重读配置文件

1
2
3
4
sysctl -a                       # 查看所有内核参数
sysctl kernel.hostname # 查看指定参数值, 另一种方式:cat /proc/sys/kernel/hostname
sysctl -w net.ipv4.ip_forward=1 # 设置值,另一种方式:echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -p # 重读配置文件/etc/sysctl.conf