uname
uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等).
语法
uname (选项)
选项
-a或--all:显示全部的信息;
-m或--machine:显示电脑类型;
-n或-nodename:显示在网络上的主机名称;
-r或--release:显示操作系统的发行编号;
-s或--sysname:显示操作系统名称;
-v:显示操作系统的版本;
-p或--processor:输出处理器类型或"unknown";
-i或--hardware-platform:输出硬件平台或"unknown";
-o或--operating-system:输出操作系统名称;
--help:显示帮助;
--version:显示版本信息.
实例
bash$ uname
Linux
bash$ uname -s
Linux
bash$ uname -a
Linux liudezhi-lenovo-g50-80 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
arch
arch命令用于显示当前主机的硬件架构类型。arch命令等同于命令name -m.
bash$ arch
x86_64
bash$ uname -m
x86_64
lastcomm
给出前一个命令的信息, 存储在 /var/account/pacct 文件中. 命令名字和用户名字都可以通过选项来指定. 这是GNU的一个统计工具.
lastlog
lastlog命令用于显示系统中所有用户最近一次登录信息 .
lastlog文件在每次有用户登录时被查询 . 可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容. 它根据UID排序显示登录名、端口号(tty)和上次登录时间 . 如果一个用户从未登录过,lastlog显示**Never logged** . 注意需要以root身份运行该命令.
语法
lastlog (选项)
选项
-b<天数>:显示指定天数前的登录信息;
-h:显示召集令的帮助信息;
-t<天数>:显示指定天数以来的登录信息;
-u<用户名>:显示指定用户的最近登录信息.
实例
用户名 端口 来自 最后登陆时间
root tty2 Thu Mar 23 20:43:21 +0800 2017
daemon **从未登录过**
bin **从未登录过**
sys **从未登录过**
sync **从未登录过**
liudezhi tty1 Sun Mar 26 14:24:30 +0800 2017
...
lsof
lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP) . 找回/恢复删除的文件 . 是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行.
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
语法
lsof (选项)
选项
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息.
strace
系统跟踪(System trace): 是跟踪系统调用和信号的诊断和调试工具. 如果你想了解特定的程序或者工具包为什么运行失败的话, 那么这个命令和下边的ltrace命令就显得非常有用了, …当然, 这种失败现象可能是由缺少相关的库, 或者其他问题所引起.
ltrace
ltrace命令是用来跟踪进程调用库函数的情况 .
语法
ltrace [option...] [command [arg ...]]
选项
-a 对齐具体某个列的返回值.
-c 计算时间和调用,并在程序退出时打印摘要.
-C 解码低级别名称(内核级)为用户级名称.
-d 打印调试信息.
-e 改变跟踪的事件.
-f 跟踪子进程.
-h 打印帮助信息.
-i 打印指令指针,当库调用时.
-l 只打印某个库中的调用.
-L 不打印库调用.
-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出.
-o, --output=file 把输出定向到文件.
-p PID 附着在值为PID的进程号上进行ltrace.
-r 打印相对时间戳.
-s STRLEN 设置打印的字符串最大长度.
-S 显示系统调用.
-t, -tt, -ttt 打印绝对时间戳。
-T 输出每个调用过程的时间开销.
-u USERNAME 使用某个用户id或组ID来运行命令.
-V, --version 打印版本信息,然后退出.
-x NAME treat the global NAME like a library subroutine.
实例
bash$ ltrace ./a.out
__libc_start_main(0x400526, 1, 0x7fffd397b6a8, 0x400540 <unfinished ...>
puts("Hello World!"Hello World!
) = 13
+++ exited (status 0) +++
# 输出调用时间开销
bash$ ltrace -T ./a.out
__libc_start_main(0x400526, 1, 0x7ffd55c8fa68, 0x400540 <unfinished ...>
puts("Hello World!"Hello World!
) = 13 <0.000211>
+++ exited (status 0) +++
# 显示系统调用
bash$ ltrace -S ./a.out
SYS_brk(0) = 0x146a000
SYS_access("/etc/ld.so.nohwcap", 00) = -2
SYS_mmap(0, 8192, 3, 34) = 0x7f931d6a5000
SYS_access("/etc/ld.so.preload", 04) = -2
SYS_open("/etc/ld.so.cache", 524288, 01) = 3
nmap
nmap命令是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络 .
这个命令将会扫描一个服务器来定位打开的端口,并且定位与这些端口相关的服务. 这个命令也能够上报一些包过滤与防火墙的信息. 这是一个防止网络被黑客入侵的非常重要的安全工具.
nc
nc命令是netcat命令的简称,都是用来设置路由器 .
语法
nc/netcat (选项)(参数)
选项
-g<网关>:设置路由器跃程通信网关,最多设置8个;
-G<指向器数目>:设置来源路由指向器,其数值为4的倍数;
-h:在线帮助;
-i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口;
-l:使用监听模式,监控传入的资料;
-n:直接使用ip地址,而不通过域名服务器;
-o<输出文件>:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;
-p<通信端口>:设置本地主机使用的通信端口;
-r:指定源端口和目的端口都进行随机的选择;
-s<来源位址>:设置本地主机送出数据包的IP地址;
-u:使用UDP传输协议;
-v:显示指令执行过程;
-w<超时秒数>:设置等待连线的时间;
-z:使用0输入/输出模式,只在扫描通信端口时使用 .
参数
. 主机:指定主机的IP地址或主机名称.
. 端口号:可以是单个整数或者是一个范围.
free
free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区 .
语法
free(选项)
选项
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息.
实例
bash$ free -m
total used free shared buff/cache available
Mem: 3870 826 2143 270 900 2499
Swap: 3813 790 3023
# 打印出未使用的RAM内存.
bash$ free | grep Mem | awk '{ print $4 }'
2178860
procinfo
从 /proc pseudo-filesystem中提取并显示所有信息和统计资料. 这个命令将给出更详细的信息.
bash$ procinfo | grep Bootup
Bootup: Thu Aug 31 12:18:09 2017 Load average: 0.38 0.36 0.31 2/630 21159
lsdev
列出系统设备, 也就是显示所有安装的硬件.
bash$ lsdev
Device DMA IRQ I/O Ports
------------------------------------------------
0000:00:02.0 5000-503f
0000:00:1f.2 47 5060-507f 5080-5087 5088-508f 5090-5093 5094-5097
0000:00:1f.3 5040-505f
0000:02:00.0 4000-40ff
...
du
递归的显示(磁盘)文件的使用状况. 除非特殊指定, 否则默认是当前工作目录.
语法
du [选项][文件]
选项
-a或-all 显示目录中个别文件的大小.
-b或-bytes 显示目录或文件大小时,以byte为单位.
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和.
-k或--kilobytes 以KB(1024bytes)为单位输出.
-m或--megabytes 以MB为单位输出.
-s或--summarize 仅显示总计,只列出最后加总的值.
-h或--human-readable 以K,M,G为单位,提高信息的可读性.
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过.
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小.
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小.
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件.
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小.
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位.
-l或--count-links 重复计算硬件链接的文件.
实例
# 显示目录或者文件所占空间:
bash$ du
12 ./.presage
8 ./.gnome2/accels
12 ./.gnome2
4 ./.wine/dosdevices
4 ./.wine/drive_c/users/Public/桌面
...
65606236
# 只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的65606236为当前目录的总大小
# 显示指定文件所占空间:
bash$ du hello.c
4 hello.c
# 查看指定目录所占空间:
bash$ du shell
12 shell/exec
16 shell/case
8 shell/nl
# 显示多个文件所占空间:
bash$ du true.sh ne.sh
4 true.sh
4 ne.sh
# 只显示总和的大小:
bash$ du -s
1771212 .
bash$ du -s shell
408 shell
df
df命令用于显示磁盘分区上的可使用的磁盘空间 . 默认显示单位为KB . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息 .
语法
df (选项)(参数)
选项
-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息 .
参数
文件:指定文件系统上的文件.
实例
# 查看系统磁盘设备,默认是KB为单位:
bash$ df
文件系统 1K-块 已用 可用 已用% 挂载点
udev 1961480 0 1961480 0% /dev
tmpfs 396356 6528 389828 2% /run
/dev/sda9 33511192 13855732 17930124 44% /
tmpfs 1981768 40124 1941644 3% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
# 使用-h选项以KB以上的单位来显示,可读性高:
bash$ df -h
udev 1.9G 0 1.9G 0% /dev
tmpfs 388M 6.4M 381M 2% /run
/dev/sda9 32G 14G 18G 44% /
tmpfs 1.9G 39M 1.9G 3% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
...
# 查看全部系统文件:
bash$ df -a
文件系统 1K-块 已用 可用 已用% 挂载点
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
udev 1961480 0 1961480 0% /dev
devpts 0 0 0 - /dev/pts
tmpfs 396356 6528 389828 2% /run
/dev/sda9 33511192 13855732 17930124 44% /
...
dmesg
dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里 .
语法
dmesg (选项)
选项
-c:显示信息后,清除ring buffer中的内容;
-s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小;
-n:设置记录信息的层级.
实例
bash$ dmesg | grep hda
[ 14.545802] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[ 14.726499] snd_hda_codec_conexant hdaudioC1D0: CX20751/2: BIOS auto-probing.
[ 14.726800] snd_hda_codec_conexant hdaudioC1D0: autoconfig for CX20751/2: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[ 14.726802] snd_hda_codec_conexant hdaudioC1D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 14.726803] snd_hda_codec_conexant hdaudioC1D0: hp_outs=1 (0x16/0x0/0x0/0x0/0x0)
[ 14.726804] snd_hda_codec_conexant hdaudioC1D0: mono: mono_out=0x0
[ 14.726805] snd_hda_codec_conexant hdaudioC1D0: inputs:
[ 14.726807] snd_hda_codec_conexant hdaudioC1D0: Internal Mic=0x1a
[ 14.726808] snd_hda_codec_conexant hdaudioC1D0: Mic=0x19
[ 14.727558] snd_hda_codec_conexant hdaudioC1D0: Enable sync_write for stable communication
stat
stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细 .
语法
stat (选项)(参数)
选项
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息 .
参数
文件:指定要显示信息的普通文件或者文件系统对应的设备文件名.
实例
bash$ ls -l myfile
-rw-rw-r-- 1 liudezhi liudezhi 31 Aug 31 21:33 myfile
bash$ stat myfile
文件:'myfile'
大小:31 块:8 IO 块:4096 普通文件
设备:80ah/2058d Inode:9047328 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/liudezhi) Gid:( 1000/liudezhi)
最近访问:2017-08-31 21:33:24.615912455 +0800
最近更改:2017-08-31 21:33:24.615912455 +0800
最近改动:2017-08-31 21:33:24.687912465 +0800
创建时间:-
bash$ stat -f myfile
文件:"myfile"
ID:454f0b8a78aacf24 文件名长度:255 类型:ext2/ext3
块大小:4096 基本块大小:4096
块:总计:58021376 空闲:41414608 可用:38461533
Inodes: 总计:14745600 空闲:14668298
bash$ stat -t myfile
myfile 31 8 81b4 1000 1000 80a 9047328 1 0 0 1504186404 1504186404 1504186404 0 4096
# 如果目标文件不存在,stat将会返回一个错误消息.
bash$ stat nonexitstent-file
stat: 无法获取'nonexitstent-file' 的文件状态(stat): 没有那个文件或目录
vmstat
vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态 .
语法
vmstat (选项)(参数)
选项
-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:输出信息的单位 .
参数
. 事件间隔:状态信息刷新的时间间隔.
. 次数:显示报告的次数.
实例
bash$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 796032 1748512 96848 1178944 3 10 62 86 153 32 2 3 93 1 0
netstat
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况 .
netstat -r 等价于route命令.
bash$ netstat
激活Internet连接 (w/o 服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 100.84.76.10:49114 tm-in-f199.1e100.:https SYN_SENT
tcp 1 0 100.84.76.10:48682 106.75.75.228:http CLOSE_WAIT
...
uptime
显示系统运行的时间, 还有其他的一些统计信息.
bash$ uptime
21:59:21 up 9:41, 1 user, load average: 0.18, 0.19, 0.17
hostname
hostname命令用于显示和设置系统的主机名称 . 环境变量HOSTNAME也保存了当前的主机名 . 在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名 . 如果需要永久修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network的相关内容.
语法
hostname(选项)(参数)
选项
-v:详细信息模式;
-a:显示主机别名;
-d:显示DNS域名;
-f:显示FQDN名称;
-i:显示主机的ip地址;
-s:显示短主机名称,在第一个点处截断;
-y:显示NIS域名.
参数
主机名:指定要设置的主机名.
实例
bash$ hostname
liudezhi-lenovo-g50-80
bash$ echo $HOSTNAME
liudezhi-lenovo-g50-80
hostid
hostid命令用于打印当前主机的十六进制数字标识 . 是主机的唯一标识,是被用来限时软件的使用权限,不可改变 .
bash$ hostid
007f0101
sar
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备 . sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态 . 它的特点是可以连续对系统取样,获得大量的取样数据 . 取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小 .
语法
sar (选项)(参数)
选项
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态.
参数
. 间隔时间:每次报告的间隔时间.
. 次数:显示报告的次数.
readelf
这个命令会显示elf 格式的二进制文件的统计信息. 这个工具是binutils工具包的一部分.
bash$ readelf -h /bin/bash
ELF 头:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
类别: ELF64
数据: 2 补码,小端序 (little endian)
版本: 1 (current)
OS/ABI: UNIX - System V
ABI 版本: 0
size
size [/path/to/binary]命令可以显示2进制可执行文件或归档文件每部分的尺寸. 这个工具主要提供给程序员使用.
bash$ size /bin/bash
text data bss dec hex filename
997958 36496 23480 1057934 10248e /bin/bash