Linux 命令整理

1.split 命令

split命令可以将一个大文件分割多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等

选项

-b:值为每一输出档案的大小,单位为 byte-C:每一输出档中,单行的最大 byte 数。
-d:使用数字作为后缀。
-l:值为每一输出档的列数大小。

实例

生成一个大小为100kb的测试文件:

[root@localhost split]# dd if=/dev/zero bs=100k count=1 of=date.file 
1+0 records 
in 1+0 records out 
102400 bytes (102 kB) copied, 0.00043 seconds, 238 MB/s

使用split命令将上面创建的date.file文件分割大小为10KB的小文件:

[root@localhost split]# split -b 10k date.file 
[root@localhost split]# ls 
date.file xaa xab xac xad xae xaf xag xah xai xaj

文件被分割多个带有字母的后缀文件,如果想用数字后缀可使用 -d参数,同时使用-a length来指定后缀的长度:

[root@localhost split]# split -b 10k date.file -d -a 3
[root@localhost split]# ls 
date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009

为分割后的文件指定前缀:

[root@localhost split]# split -b 10k date.file -d -a 3 split_file 
[root@localhost split]# ls 
date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009

使用-l选项根据文件的行数分割文件,例如把文件分割成每个包含10行的小文件:

split -l 10 date.file

2.chkconfig命令

chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
语法

chkconfig(选项)

选项

--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据; 
--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据; 
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕

等级代号列表:

等级0表示:表示关机 
等级1表示:单用户模式 
等级2表示:无网络连接的多用户命令行模式 
等级3表示:有网络连接的多用户命令行模式 
等级4表示:不可用 
等级5表示:带图形界面的多用户模式 
等级6表示:重新启动

实例

chkconfig --list #列出所有的系统服务。 
chkconfig --add httpd #增加httpd服务。 
chkconfig --del httpd #删除httpd服务。 
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、34、5的情况下都是on(开启)的状态。 
chkconfig --list #列出系统所有的服务启动情况。
chkconfig --list mysqld #列出mysqld服务设置情况。 
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、34、5等级。

需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务

如何增加一个服务:

1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig --add servicename在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig --level 35 mysqld on修改服务的默认启动等级
 

3.ip命令

ip命令用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新的功能强大的网络配置工具。

语法

ip(选项)(参数)

选项

-V:显示指令版本信息;
-s:输出更详细的信息;
-f:强制使用指定的协议族;
-4:指定使用的网络层协议是IPv4协议;
-6:指定使用的网络层协议是IPv6协议;
-0:输出信息每条记录输出一行,即使内容较多也不换行显示;
-r:显示主机时,不使用IP地址,而使用主机的域名。

参数

网络对象:指定要管理的网络对象;
具体操作:对指定的网络对象完成具体操作;

实例

用ip命令显示网络设备的运行状态:

[root@bogon ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7c:58:21 brd ff:ff:ff:ff:ff:ff
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether 52:a2:e3:d1:4e:77 brd ff:ff:ff:ff:ff:ff

显示更加详细的设备信息:

[root@bogon ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    960        16       0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    960        16       0       0       0       0      
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7c:58:21 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    6582303    16976    0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    2688612    12261    0       0       0       0      
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether 52:a2:e3:d1:4e:77 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0

显示核心路由表:

[root@bogon ~]# ip route list
192.168.74.0/24 dev eth0  proto kernel  scope link  src 192.168.74.131  metric 1 
default via 192.168.74.2 dev eth0  proto static

显示邻居表:

[root@bogon ~]# ip neigh list
192.168.74.1 dev eth0 lladdr 00:50:56:c0:00:08 REACHABLE
192.168.74.2 dev eth0 lladdr 00:50:56:f4:26:2a STALE
192.168.74.254 dev eth0 lladdr 00:50:56:f6:c5:df STALE

4.nmap命令

是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

语法

nmap(选项)(参数)

选项

-O:激活操作探测; 
-P0:值进行扫描,不ping主机; 
-PT:是同TCP的ping; 
-sV:探测服务版本信息; 
-sP:ping扫描,仅发现目标主机是否存活; 
-ps:发送同步(SYN)报文;
-PU:发送udp ping-PE:强制执行直接的ICMPping;
-PB:默认模式,可以使用ICMPping和TCPping;
-6:使用IPv6地址;
-v:得到更多选项信息;
-d:增加调试信息地输出;
-oN:以人们可阅读的格式输出;
-oX:以xml格式向指定文件输出信息;
-oM:以机器可阅读的格式输出;
-A:使用所有高级扫描选项;
--resume:继续上次执行完的扫描;
-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用&ldquo;-&rdquo;表示端口范围;
-e:在多网络接口Linux系统中,指定扫描使用的网络接口;
-g:将指定的端口作为源端口进行扫描;
--ttl:指定发送的扫描报文的生存期;
--packet-trace:显示扫描过程中收发报文统计;
--scanflags:设置在扫描报文中的TCP标志。

参数

ip地址:指定待扫描报文中的TCP地址。

实例

安装nmap:

yum install nmap

使用nmap扫描www.baidu.com的开放端口:

[root@bogon ~]# nmap www.baidu.com

Starting Nmap 5.51 ( http://nmap.org ) at 2016-04-23 00:18 PDT
Nmap scan report for www.baidu.com (61.135.169.121)
Host is up (0.0081s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.125
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 4.77 seconds

5.lsof命令

lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。 在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

语法

lsof(选项)

选项

-a:列出打开文件存在的进程; 
-c<进程名>:列出指定进程所打开的文件; 
-g:列出GID号进程详情; 
-d<文件号>:列出占用该文件号的进程; 
+d<目录>:列出目录下被打开的文件; 
+D<目录>:递归列出目录下被打开的文件; 
-n<目录>:列出使用NFS的文件; 
-i<条件>:列出符合条件的进程。(46、协议、:端口、 @ip ) 
-p<进程号>:列出指定进程号所打开的文件; 
-u:列出UID号进程详情; 
-h:显示帮助信息; 
-v:显示版本信息。

实例

[root@bogon ~]# lsof | head 
COMMAND    PID      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1      root  cwd       DIR                8,2      4096          2 /
init         1      root  rtd       DIR                8,2      4096          2 /
init         1      root  txt       REG                8,2    150352     781872 /sbin/init
init         1      root  mem       REG                8,2     65928     912175 /lib64/libnss_files-2.12.so
init         1      root  mem       REG                8,2   1926800     921891 /lib64/libc-2.12.so
init         1      root  mem       REG                8,2     93320     921921 /lib64/libgcc_s-4.4.7-20120601.so.1
init         1      root  mem       REG                8,2     47064     921894 /lib64/librt-2.12.so
init         1      root  mem       REG                8,2    145896     921893 /lib64/libpthread-2.12.so
init         1      root  mem       REG                8,2    268232     921895 /lib64/libdbus-1.so.3.4.0

lsof输出各列信息的意义如下:

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

列出IPV4:

[root@bogon ~]# lsof -i 4
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
cupsd     1655 root    7u  IPv4  10859      0t0  TCP localhost:ipp (LISTEN)
cupsd     1655 root    9u  IPv4  10862      0t0  UDP *:ipp 
sshd      1794 root    3u  IPv4  11371      0t0  TCP *:ssh (LISTEN)
master    1922 root   12u  IPv4  11741      0t0  TCP localhost:smtp (LISTEN)
clock-app 2407 root   21u  IPv4  84677      0t0  TCP localhost:47822->a72-246-188-18.deploy.akamaitechnologies.com:http (CLOSE_WAIT)
dhclient  4407 root    6u  IPv4  64541      0t0  UDP *:bootpc 
sshd      5037 root    3u  IPv4  79891      0t0  TCP localhost:ssh->localhost:58254 (ESTABLISHED)

6.route命令

route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。 在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

语法

route(选项)(参数)

选项

-A:设置地址类型;
-C:打印将Linux核心的路由缓存;
-v:详细信息模式;
-n:不执行DNS反向查找,直接显示数字形式的IP地址;
-e:netstat格式显示路由表; 
-net:到一个网络的路由表; 
-host:到一个主机的路由表。

参数

Add:增加指定的路由记录;
Del:删除指定的路由记录;
Target:目的网络或目的主机;
gw:设置默认网关;
mss:设置TCP的最大区块长度(MSS),单位MB;
window:指定通过路由表的TCP连接的TCP窗口大小;
dev:路由记录所表示的网络接口。

实例

显示当前路由:

[root@bogon ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.74.0    *               255.255.255.0   U     1      0        0 eth0
default         localhost       0.0.0.0         UG    0      0        0 eth0
[root@bogon ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.74.0    0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.74.2    0.0.0.0         UG    0      0        0 eth0

其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:

U Up表示此路由当前为启动状态。 
H Host,表示此网关为一主机。
G Gateway,表示此网关为一路由器。
R Reinstate Route,使用动态路由重新初始化的路由。
D Dynamically,此路由是动态性地写入。
M Modified,此路由是由路由守护程序或导向器动态修改。
! 表示此路由当前为关闭状态。

添加网关/设置网关:

[root@bogon ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0  #增加一条到达244.0.0.0的路由。

屏蔽一条路由:

route add -net 224.0.0.0 netmask 240.0.0.0  reject       #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。

删除路由记录:

route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject

删除和添加设置默认网关:

route del default gw 192.168.120.240
route add default gw 192.168.120.240

7.nslookup命令

nslookup命令是常用域名查询工具,就是查DNS信息用的命令。

nslookup4有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。或者输入nslookup -nameserver/ip。进入非交互模式,就直接输入nslookup 域名就可以了。

语法

nslookup(选项)(参数)

选项

-sil:不显示任何警告信息。

参数

域名:指定要查询域名。

实例

[root@bogon ~]# nslookup www.baidu.com
Server:        192.168.74.2
Address:    192.168.74.2#53

Non-authoritative answer:
www.baidu.com    canonical name = www.a.shifen.com.
Name:    www.a.shifen.com
Address: 61.135.169.125
Name:    www.a.shifen.com
Address: 61.135.169.121

8.dig命令

是常用的域名查询工具,可以用来测试域名系统工作是否正常。

语法

dig(选项)(参数)

选项

@<服务器地址>:指定进行域名解析的域名服务器; 
-b:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求; 
-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息; 
-P:指定域名服务器所使用端口号; 
-t<类型>:指定要查询的DNS数据类型; 
-x:执行逆向域名查询; 
-4:使用IPv4; 
-6:使用IPv6; 
-h:显示指令帮助信息。

参数

主机:指定要查询域名主机; 
查询类型:指定DNS查询的类型; 
查询类:指定查询DNS的class; 
查询选项:指定查询选项。

实例

[root@bogon ~]# dig www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65355
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com.            IN    A

;; ANSWER SECTION:
www.baidu.com.        5    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    5    IN    A    61.135.169.121
www.a.shifen.com.    5    IN    A    61.135.169.125

;; Query time: 5 msec
;; SERVER: 192.168.74.2#53(192.168.74.2)
;; WHEN: Sat Apr 23 00:57:34 2016
;; MSG SIZE  rcvd: 90

9.tcpdump命令

是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

语法

tcpdump(选项)

选项

-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件; 
-i<网络界面>:使用指定的网络截面送出数据包; 
-l:使用标准输出列的缓冲区; 
-n:不把主机的网络地址转换成名字; 
-N:不列出域名; 
-O:不将数据包编码最佳化; 
-p:不让网络界面进入混杂模式; 
-q :快速输出,仅列出少数的传输协议信息; 
-r<数据包文件>:从指定的文件读取数据包数据; 
-s<数据包大小>:设置每个数据包的大小; 
-S:用绝对而非相对数值列出TCP关联数; 
-t:在每列倾倒资料上不显示时间戳记; 
-tt: 在每列倾倒资料上显示未经格式化的时间戳记; 
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型; 
-v:详细显示指令执行过程; 
-vv:更详细显示指令执行过程; 
-x:用十六进制字码列出数据包资料; 
-w<数据包文件>:把数据包数据写入指定的文件。

实例

[root@www ~]# tcpdump host 210.27.48.1                  #也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包
[root@www ~]# tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)  #截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
[root@www ~]# tcpdump ip host 210.27.48.1 and ! 210.27.48.2     #获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包
[root@www ~]# tcpdump -i eth0 src host webserver        #截获主机webserver发送的所有数据
[root@www ~]# tcpdump -i eth0 dst host webserver        #监视所有送到主机webserver的数据包
[root@www ~]# tcpdump tcp port 23 host 210.27.48.1       #获取主机210.27.48.1接收或发出的telnet包
[root@www ~]# tcpdump udp port 123                       #对本机的udp 123 端口进行监视 123 为ntp的服务端口
[root@www ~]# tcpdump net ucb-ether      #打印本地主机与Berkeley网络上的主机之间的所有通信数据包(nt: ucb-ether, 此处可理解为'Berkeley网络'的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的所有数据包)
[root@www ~]# tcpdump 'gateway snup and (port ftp or ftp-data)'   #打印所有通过网关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)
[root@www ~]# tcpdump ip and not net localnet       #打印所有源地址或目标地址是本地主机的IP数据包
[root@www ~]# tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'       #打印TCP会话中的的开始和结束数据包, 并且数据包的源或目的不是本地网络上的主机.(nt: localnet, 实际使用时要真正替换成本地网络的名字))
[root@www ~]# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2 -="" tcp="" 12="" 0xf0="">>2)) != 0)'     #打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包
[root@www ~]# tcpdump 'gateway snup and ip[2:2] > 576'        #打印长度超过576字节, 并且网关地址是snup的IP数据包
[root@www ~]# tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'        #打印所有IP层广播或多播的数据包, 但不是物理以太网层的广播或多播数据报
[root@www ~]# tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'       #打印除'echo request'或者'echo reply'类型以外的ICMP数据包
[root@www ~]# tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
#(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
#(2)-i eth1 : 只抓经过接口eth1的包
#(3)-t : 不显示时间戳
#(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
#(5)-c 100 : 只抓取100个数据包
#(6)dst port ! 22 : 不抓取目标端口是22的数据包
#(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
#(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
[root@www ~]# tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854        #使用tcpdump抓取HTTP包

10.lastlog命令

lastlog命令用于显示系统中所有用户最近一次登录信息。 lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示**Never logged**。注意需要以root身份运行该命令。

语法

lastlog(选项)

选项

-b<天数>:显示指定天数前的登录信息; 
-h:显示召集令的帮助信息;
-t<天数>:显示指定天数以来的登录信息; 
-u<用户名>:显示指定用户的最近登录信息。

实例

[root@bogon ~]# lastlog
Username         Port     From             Latest
root             pts/3    192.168.74.1     Sat Apr 23 06:02:37 -0700 2016
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
uucp                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
gopher                                     **Never logged in**

 

11.xargs命令

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

选项

-i 用 {} 代替 传递的数据
-I string 用string来代替传递的数据-n[数字] 设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-P n 允许的最大线程数量为n
-s[大小] 设置传递参数的最大字节数(小于131072字节)
-x 大于 -s 设置的最大长度结束 xargs命令执行

实例

[root@localhost ~]# ls |grep .php |xargs -i mv {} {}.bak     #将当前目录下php文件,改名字
[root@localhost ~]# ls |grep .php |xargs -I {} mv {} {}.bak   #与上例相同
[root@localhost ~]# find ./ -name "*.tmp" | xargs -i rm -rf {}  #删除当前文件夹下的,tmp文件

 

12.locate命令

locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

语法

locate/slocate(选项)(参数)

选项

-d或--database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,您可使用 这个参数另行指定。
--help  在线帮助。
--version  显示版本信息。

参数

查找字符串:要查找的文件名中含有的字符串。

实例

搜索etc目录下所有以sh开头的文件:

[root@bogon ~]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells

搜索用户主目录下,所有以m开头的文件并且忽略大小写:

locate -i ~/m

 

13.paste命令

paste命令用于合并文件的列。paste指令会把每个文件以列对列的方式,一列列地加以合并。

语法

paste(选项)(参数)

选项

-d<间隔字符>或--delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
-s或--serial  串列进行而非平行处理。
--help  在线帮助。
--version  显示帮助信息。
[文件…] 指定操作的文件路径

参数

文件列表:指定需要合并的文件列表。

实例

使用paste指令将文件"file"、"testfile"、"testfile1"进行合并,输入如下命令:

paste file testfile testfile1 #合并指定文件的内容

但是,在执行以上命令之前,首先使用"cat"指令对3个文件内容进行查看,显示如下所示:

$ cat file                  #file文件的内容  
xiongdan 200  
lihaihui 233  
lymlrl 231  
$ cat testfile              #testfile文件的内容  
liangyuanm  ss  
$ cat testfile1             #testfile1文件的内容  
huanggai 56  
zhixi 73

当合并指令"$ paste file testfile testfile1"执行后,程序界面中将显示合并后的文件内容,如下所示:

xiongdan 200  
lihaihui 233  
lymlrl 231  
liangyuanm  ss  
huanggai 56  
zhixi 73

若使用paste指令的参数"-s",则可以将一个文件中的多行数据合并为一行进行显示。例如,将文件"file"中的3行数据合并为一行数据进行显示,输入如下命令

$ paste -s file             #合并指定文件的多行数据

上面的命令执行后,显示的数据内容如下所示:

xiongdan 200 lihaihui 233 lymlrl 231

注意:参数"-s"只是将testfile文件的内容调整显示方式,并不会改变原文件的内容格式。

14.umask命令

umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。

语法

umask (选项)(参数)

选项

-p:输出的权限掩码可直接作为指令来执行; 
-S:以符号方式输出权限掩码。

参数

权限掩码:指定权限掩码。

实例

使用指令"umask"查看当前权限掩码,则输入下面的命令:

[root@bogon tmp]# umask
0022

接下来,使用指令"mkdir"创建一个目录,并使用指令"ls"获取该目录的详细信息,输入命令如下:

[root@bogon test1]# mkdir test1
[root@bogon test1]# ls -d -l test1/
drwxr-xr-x 2 root root 4096 Apr 23 07:26 test1/

注意:在上面的输出信息中,"drwxr-xr-x"="777-022=755"。

15.col命令

col命令是一个标准输入文本过滤器,它从标注输入设备读取文本内容,并把内容显示到标注输出设备。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符>和>>,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效滤除这些控制字符。

语法

col (选项)

选项

-b 过滤掉所有的控制字符,包括RLF和HRLF。
-f 滤除RLF字符,但允许将HRLF字符呈现出来。
-x 以多个空格字符来表示跳格字符。
-l<缓冲区列数> 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。

实例

将man 命令的帮助文档保存为man_help,使用-b 参数过滤所有控制字符。在终端中使用如下命令:

man man | col -b > man_help

注:其中"|"用于建立管道,把man命令的输出结果转为col命令的输入数据

 

16.ln命令

ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。

注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

语法

ln(选项)(参数)

选项

-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本

参数

源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件; 
目标文件:指定源文件的目标连接文件。

实例

[root@localhost test_ln]# ln -s /home/zhangy/heartbeat ./   #在当前目录下,建立heartbeat的软连接
[root@localhost test_ln]# ln -s /home/zhangy/test ./        #建立目录的软件接
[root@localhost test_ln]# ln /home/zhangy/tee.txt ./        #建立硬连接
[root@localhost test_ln]# ll       
总计 4
lrwxrwxrwx 1 root root 22 05-11 11:04 heartbeat -> /home/zhangy/heartbeat       #文件软件接
-rw-r--r-- 2 root root  0 2010-11-24 tee.txt                                     #文件硬连接
lrwxrwxrwx 1 root root 17 05-11 11:04 test -> /home/zhangy/test                 #目录软件接

17.uniq命令

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

语法

uniq(选项)(参数)

选项

-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
[输入文件] 指定已排序好的文本文件。
[输出文件] 指定输出的文件。

参数

输入文件:指定要去除的重复行文件。如果不指定此项,则从标准读取数据; 
输出文件:指定要去除重复行后的内容要写入的输出文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

实例

文件testfile中第2 行、第5 行、第9 行为相同的行,使用uniq 命令删除重复的行,可使用以下命令:

uniq testfile

testfile中的原有内容为:

$ cat testfile      #原有内容  
test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85  
Linux 85

使用uniq 命令删除重复的行后,有如下输出结果:

$ uniq testfile     #删除重复行后的内容  
test 30  
Hello 95  
Linux 85

检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:

uniq-c testfile

结果输出如下:

$ uniq-ctestfile      #删除重复行后的内容  
3 test 30             #前面的数字的意义为该行共出现了3次  
4 Hello 95            #前面的数字的意义为该行共出现了4次  
2 Linux 85            #前面的数字的意义为该行共出现了2次

18.tr命令

tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

语法

tr(选项)(参数)

选项

-c或——complerment:取代所有不属于第一字符集的字符; 
-d或——delete:删除所有属于第一字符集的字符; 
-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示; 
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

参数

字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;

字符集2:指定要转换成的目标字符集。

实例

将输入字符由大写转换为小写:

echo "HELLO WORLD" | tr 'A-Z' 'a-z' –->hello world

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

使用tr删除字符:

echo "hello 123 world 456" | tr -d '0-9' --> hello world

字符集补集,从输入文本中将不在补集中的所有字符删除:

[root@bogon test1]# echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n'
 1  2  3  4

巧妙使用tr做数字相加操作:

[root@bogon test1]# echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '\n' '+') 0 ]
45

19.dmesg命令

dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里。

语法

dmesg [-cn][-s <缓冲区大小>]

选项

-c  显示信息后,清除ring buffer中的内容。
-s<缓冲区大小>  预设置为8196,刚好等于ring buffer的大小。
-n  设置记录信息的层级。

实例

[root@bogon test1]# dmesg | head
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
Command line: ro root=UUID=8e678f1e-b0e8-4bfc-af6b-c6dbd92a9c52 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
KERNEL supported cpus:
  Intel GenuineIntel
  AMD AuthenticAMD
  Centaur CentaurHauls
Disabled fast string operations
BIOS-provided physical RAM map:

20.gzip命令

gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

语法

gzip(选项)(参数)

选项

-a或--ascii  使用ASCII文字模式。
-c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d或--decompress或----uncompress  解开压缩文件。
-f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或--help  在线帮助。
-l或--list  列出压缩文件的相关信息。
-L或--license  显示版本与版权信息。
-n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。
-N或--name  压缩文件时,保存原来的文件名称及时间戳记。
-q或--quiet  不显示警告信息。
-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。
-t或--test  测试压缩文件是否正确无误。
-v或--verbose  显示指令执行过程。
-V或--version  显示版本信息。
-<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。
--best  此参数的效果和指定"-9"参数相同。
--fast  此参数的效果和指定"-1"参数相同。

参数

文件列表:指定要压缩的文件列表。

实例

压缩文件:

[root@bogon a]# ls //显示当前目录文件
a.c b.h d.cpp
[root@bogon a]# gzip * //压缩目录下的所有文件
[root@bogon a]# ls //显示当前目录文件
a.c.gz    b.h.gz    d.cpp.gz

21.cut命令

cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

语法

cut(选项)(参数)

选项

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除

实例

当你执行who命令时,会输出类似如下的内容:

$ who
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)

如果我们想提取每一行的第3个字节,就这样:

$ who|cut -b 3
c
c

 

22.which命令

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

语法

which (文件...)

选项

-n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w  指定输出时栏位的宽度。
-V  显示版本信息。

参数

指令名:指令名列表。

实例

查找文件、显示命令路径:

[root@bogon test1]# which pwd
/bin/pwd
[root@bogon test1]# which adduser
/usr/sbin/adduser
[root@bogon test1]#

 

23.diff命令

diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
语法

 

diff(选项)(参数)

选项

-B或--ignore-blank-lines  不检查空白行。
-c  显示全部内文,并标出不同之处。
-C<行数>或--context<行数>  与执行"-c-<行数>"指令相同。
-d或--minimal  使用不同的演算法,以较小的单位来做比较。
-D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。
-e或--ed  此参数的输出格式可用于ed的script文件。
-f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H或--speed-large-files  比较大文件时,可加快速度。
-l<字符或字符串>或--ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i或--ignore-case  不检查大小写的不同。
-l或--paginate  将结果交由pr程序来分页。
-n或--rcs  将比较结果以RCS的格式来显示。
-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q或--brief  仅显示有无差异,不显示详细的信息。
-r或--recursive  比较子目录中的文件。
-s或--report-identical-files  若没有发现任何差异,仍然显示信息。
-S<文件>或--starting-file<文件>  在比较目录时,从指定的文件开始比较。
-t或--expand-tabs  在输出时,将tab字符展开。
-T或--initial-tab  在每行前面加上tab字符以便对齐。
-u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。
-v或--version  显示版本信息。
-w或--ignore-all-space  忽略全部的空格字符。
-W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
-x<文件名或目录>或--exclude<文件名或目录>  不比较选项中所指定的文件或目录。
-X<文件>或--exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
-y或--side-by-side  以并列的方式显示文件的异同之处。
--help  显示帮助。
--left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
--suppress-common-lines  在使用-y参数时,仅显示不同之处。

参数

文件1:指定要比较的第一个文件; 
文件2:指定要比较的第二个文件。

实例

并排格式输出:

[root@localhost test3]# diff log2013.log log2014.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2013-03               | 2014-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-08               | 2013-07
2013-09                 2013-09
2013-10                 2013-10
                      > 2013-11
                      > 2013-12

 

说明:

  • "|"表示前后2个文件内容有不同
  • "<"表示后面文件比前面文件少了1行内容
  • ">"表示后面文件比前面文件多了1行内容

    24.cmp命令

    Linux cmp命令用于比较两个文件是否有差异。

    当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。

    语法

    cmp(选项)(参数)

    选项

    c或--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
    -i<字符数目>或--ignore-initial=<字符数目>  指定一个数目。
    -l或--verbose  标示出所有不一样的地方。
    -s或--quiet或--silent  不显示错误信息。
    -v或--version  显示版本信息。
    --help  在线帮助。

    参数

    目录:比较两个文件的差异。

    实例

    要确定两个文件是否相同,请输入:

    cmp prog.o.bak prog.o
    这比较 prog.o.bak 和 prog.o。如果文件相同,则不显示消息。如果文件不同,则显示第一个不同的位置;例如:
    prog.o.bak prog.o differ: char 4, line 1

    如果显示消息 cmp: EOF on prog.o.bak,则 prog.o 的第一部分与 prog.o.bak 相同,但在 prog.o 中还有其他数据。

     

    25.bg命令

    bg命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。

    在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

    语法

    bg(参数)

    参数

    作业标识:指定需要放到后台的作业标识号。

    实例

    使用bg命令将任务号为1的任务放到后台继续执行,输入如下命令:

    bg 1

    如果系统中只有一个挂起的任务时,即使不为该命令设置参数"1",也可以实现这个功能。

    注意:实际上,使用bg命令与在指令后面添加符号"&"的效果是一样的。例如,使用&将find / -name password放到后台执行,输入如下命令:

    find / -name password & #后台执行任务



    26.lsb_release命令

    LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。
    语法

    选项

    -v 显示版本信息。
    -i 显示发行版的id。
    -d 显示该发行版的描述信息。
    -r 显示当前系统是发行版的具体版本号。 
    -c 发行版代号。
    -a 显示上面的所有信息。
    -h 显示帮助信息。

    如果当前发行版是LSB兼容的,那么/etc/lsb_release文件中会包含LSB_VERSION域。这个域的值可以是用冒号隔开的一系列支持的模块。这些模块名是当前版本支持的LSB的模块名。如果当前版本不是LSB兼容的,就不要包含这个域。

    可选的域包括DISTRIB_ID, DISTRIB_RELEASE, DISTRIB_CODENAME,DISTRIB_DESCRIPTION,它们可以覆盖/etc/distrib-release文件中的内容。注:这里的distrib要替换为当前的发行版的名字。如果存在/etc/lsb-release.d目录,会在该目录中查找文件名并作为附加的模块版本加在LSB_VERSION前面。文件/etc/distrib-release中包含了一些描述信息,用来说明应该分析哪些文件名。

    一般的格式是Distributor release x.x (Codename)  注意:Debian系统中缺乏相应的描述信息(见/etc/debian-version),为了支持Debian系统,大部分信息都被加在了lsb-release文件中。 redhat和fedora系统中,还支持一个参数:

    -s, --short 输出简短的描述信息。

    27.type命令

    type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。
    语法

    type(选项)(参数)

    选项

    -a 显示一个名字的所有可能
    -t 判断一个名字当前是否是alias、keyword、function、builtin、file
    -p 查看一个外部命令的执行路径
    -P 查看内部命令路径

    参数

    指令:要显示类型的指令。

    实例

    [root@localhost ~]# type ls
    ls is aliased to `ls --color=auto'
    [root@localhost ~]# type cd
    cd is a shell builtin
    [root@localhost ~]# type date
    date is /bin/date

    28.netstat命令

    netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
    语法

    netstat(选项)

    选项

    -a或--all 显示所有连线中的Socket。
    -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
    -c或--continuous 持续列出网络状态。
    -C或--cache 显示路由器配置的快取信息。
    -e或--extend 显示网络其他相关信息。
    -F或--fib 显示FIB。
    -g或--groups 显示多重广播功能群组组员名单。
    -h或--help 在线帮助。
    -i或--interfaces 显示网络界面信息表单。
    -l或--listening 显示监控中的服务器的Socket。
    -M或--masquerade 显示伪装的网络连线。
    -n或--numeric 直接使用IP地址,而不通过域名服务器。
    -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
    -o或--timers 显示计时器。
    -p或--programs 显示正在使用Socket的程序识别码和程序名称。
    -r或--route 显示Routing Table。
    -s或--statistice 显示网络工作信息统计表。
    -t或--tcp 显示TCP传输协议的连线状况。
    -u或--udp 显示UDP传输协议的连线状况。
    -v或--verbose 显示指令执行过程。
    -V或--version 显示版本信息。
    -w或--raw 显示RAW传输协议的连线状况。
    -x或--unix 此参数的效果和指定"-A unix"参数相同。
    --ip或--inet 此参数的效果和指定"-A inet"参数相同。

    实例

    列出所有端口 (包括监听和未监听的)

    netstat -a #列出所有端口 
    netstat -at #列出所有tcp端口 
    netstat -au #列出所有udp端口

    列出所有处于监听状态的 Sockets

    netstat -l #只显示监听端口 
    netstat -lt #只列出所有监听 tcp 端口 
    netstat -lu #只列出所有监听 udp 端口 
    netstat -lx #只列出所有监听 UNIX 端口

    29.nano命令

    nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。

    nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方式来处理某些文件可能会带来问题,比如Linux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成系统不灵了。因此,如果你想避免这种情况出现,就加上-w选项吧。
    语法

    nano [选项] [[+行,列] 文件名]...

    选项

    -h, -?         --help                  显示此信息
     +行,列                                 从所指列数与行数开始
     -A             --smarthome             启用智能 HOME 键
     -B             --backup                储存既有文件的备份
     -C <目录>      --backupdir=<目录>      用以储存独一备份文件的目录
     -D             --boldtext              用粗体替代颜色反转
     -E             --tabstospaces          将已输入的制表符转换为空白
     -F             --multibuffer           启用多重文件缓冲区功能
     -H             --historylog            记录与读取搜索/替换的历史字符串
     -I             --ignorercfiles         不要参考nanorc 文件
     -K             --rebindkeypad          修正数字键区按键混淆问题
     -L             --nonewlines            不要将换行加到文件末端
     -N             --noconvert             不要从 DOS/Mac 格式转换
     -O             --morespace             编辑时多使用一行
     -Q <字符串>    --quotestr=<字符串>     引用代表字符串
     -R             --restricted            限制模式
     -S             --smooth                按行滚动而不是半屏
     -T <#列数>     --tabsize=<#列数>       设定制表符宽度为 #列数
     -U             --quickblank            状态行快速闪动
     -V             --version               显示版本资讯并离开
     -W             --wordbounds            更正确地侦测单字边界
     -Y <字符串>    --syntax=<字符串>       用于加亮的语法定义
     -c             --const                 持续显示游标位置
     -d             --rebinddelete          修正退格键/删除键混淆问题
     -i             --autoindent            自动缩进新行
     -k             --cut                   从游标剪切至行尾
     -l             --nofollow              不要依照符号连结,而是覆盖
     -m             --mouse                 启用鼠标功能
     -o <目录>      --operatingdir=<目录>   设定操作目录
     -p             --preserve              保留XON (^Q) 和XOFF (^S) 按键
     -q             --quiet                 沉默忽略启动问题, 比如rc 文件错误
     -r <#列数>     --fill=<#列数>          设定折行宽度为 #列数
     -s <程序>      --speller=<程序>        启用替代的拼写检查程序
     -t             --tempfile              离开时自动储存,不要提示
     -u             --undo                  允许通用撤销[试验性特性]
     -v             --view                  查看(只读)模式
     -w             --nowrap                不要自动换行
     -x             --nohelp                不要显示辅助区
     -z             --suspend               启用暂停功能
     -$             --softwrap              启用软换行

    用法

    光标控制

    移动光标:使用用方向键移动。 
    选择文字:按住鼠标左键拖到

    复制、剪贴和粘贴:

    复制一整行:Alt+6 
    剪贴一整行:Ctrl+K

    退出:

    按Ctrl+X 
    如果你修改了文件,下面会询问你是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。如果输入了Y,下一步会让你输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则输入新名称然后确 定。这个时候也可用Ctrl+C来取消返回。

    30.pgrep命令

    pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。
    语法

    pgrep(选项)(参数)

    选项

    -f 显示完整程序
    -l 显示源代码
    -n 显示新程序
    -o 显示旧程序
    -v 与条件不符合的程序
    -x 与条件符合的程序
    -p<进程号> 列出父进程为用户指定进程的进程信息
    -t<终端> 指定终端下的所有程序
    -u<用户> 指定用户的程序

    参数

    进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

    实例

    [root@localhost ~]# pgrep -l -t tty1  #显示指定终端相关程序
    2015 Xorg
    [root@localhost ~]# pgrep -l ssh   #显示ssh相关程序
    1802 sshd
    2257 sshd

    31.service命令

    service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
    语法

    service(选项)(参数)

    选项

    -h:显示帮助信息; 
    --status-all:显示所服务的状态。

    参数

    服务名:自动要控制的服务名,即/etc/init.d目录下的脚本文件名; 
    控制命令:系统服务脚本支持的控制命令。

    实例

    # service mysqld        #打印指定服务mysqld的命令行使用帮助。
    
    # service mysqld start    #启动mysqld
    
    # service mysqld stop    #停止mysqld
    
    # service mysqld restart    #重启mysqld
    
    # service mysqld reload    #重新加载my.cnf配置文件

    32.init命令

    init命令是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1。init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。
    语法

    init(选项)(参数)

    选项

    -b:不执行相关脚本而直接进入单用户模式;
    -s:切换到单用户模式。

    参数

    运行等级:指定Linux系统要切换到的运行等级。

    实例

    几个常用的命令

    查看系统进程命令:ps -ef | head 
    查看init的配置文件:more /etc/inittab 
    查看系统当前运行的级别:runlevel

    到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。你也可以在/etc/inittab中查看它的英文介绍。

    #0 停机(千万不能把initdefault 设置为0) 
    #1 单用户模式 
    #2 多用户,没有 NFS(和级别3相似,会停止部分服务) 
    #3 完全多用户模式 
    #4 没有用到 
    #5 x11(Xwindow) 
    #6 重新启动(千万不要把initdefault 设置为6)

     

    33.runlevel命令

    runlevel命令用于打印当前Linux系统的运行等级。
    语法

    runlevel

    实例

     

    [root@localhost ~]# runlevel 
    N 5

    34.exec命令

    exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。
    语法

    exec(选项)(参数)

    选项

    -c:在空环境中执行指定的命令。

    参数

    指令:要执行的指令和相应的参数。

    实例

    比如在进行find操作时,可以在find后面加上exec命令来对查询到的内容进行额外的处理:
    [root@localhost bai]# find / -name bai -exec ls -al {} \;
    总用量 20
    drwxr-xr-x.   3 root root  4096 9月  16 02:09 .
    drwxr-xr-x. 577 root root 12288 9月  16 02:12 ..
    drwxr-xr-x.   2 root root  4096 9月  23 2011 LC_MESSAGES
    总用量 12
    drwxr-xr-x. 3 root root 4096 9月  20 18:45 .
    drwxr-xr-x. 3 root root 4096 9月  20 18:45 ..
    drwxr-xr-x. 3 root root 4096 9月  20 18:45 zeng
    总用量 8
    d---------. 2 root root 4096 9月  17 01:40 .
    drwxr-xr-x. 3 root root 4096 9月  17 22:54 ..
    总用量 24
    drwxr-xr-x.  3 root root 4096 9月  23 12:09 .
    dr-xr-x---. 35 root root 4096 9月  24 19:43 ..
    -rwxr-xr-x.  1 root root 5009 9月  23 11:26 a.out
    drwxr-xr-x.  3 root root 4096 9月  23 14:30 bai
    -rwxrwxrwx.  1 root root  163 9月  23 11:25 hell.c

    35.export命令

    export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

    一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
    语法

    export(选项)(参数)

    选项

    -f:代表[变量名称]中为函数名称; 
    -n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中; 
    -p:列出所有的shell赋予程序的环境变量。

    参数

    变量:指定要输出或者删除的环境变量。

    实例

    [root@localhost ~]# export
    declare -x G_BROKEN_FILENAMES="1"
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="localhost"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"

    36.nohup命令

    nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

    无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
    语法

    nohup(选项)(参数)

    选项

    --help:在线帮助; 
    --version:显示版本信息。

    参数

    程序及选项:要运行的程序及选项。

    实例

    使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

    nohup command > myout.file 2>&1 &

    在上面的例子中,输出被重定向到myout.file文件中。
    37.unset命令

    unset命令用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。
    语法

    unset(选项)(参数)

    选项

    -f:仅删除函数; 
    -v:仅删除变量。

    参数

    shell变量或函数:指定要删除的shell变量或shell函数。

    实例

    使用unset命令将前面所创建的环境变量mylove及其对应的值进行删除,输入如下命令:

    unset -v mylove

    执行以上命令后,系统将删除指定的环境变量。用户可以使用env命令和grep命令对其进行查询。已经删除的环境变量再次使用指令查询时,将出现查询不到指定环境变量的输出信息。
    38.bc命令

    bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。
    语法

    bc(选项)(参数)

    选项

    -i:强制进入交互式模式; 
    -l:定义使用的标准数学库; 
    -w:对POSIX bc的扩展给出警告信息; 
    -q:不打印正常的GNU bc环境信息; 
    -v:显示指令版本信息; 
    -h:显示指令的帮助信息

    参数

    文件:指定包含计算任务的文件。

    实例

    算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:

    [root@localhost ~]# echo "1.223*3" |bc
    3.669

     

    39.md5sum命令

    md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。

    MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。

    语法

    md5sum(选项)(参数)

    选项

    -b:二进制模式读取文件; 
    -t或--text:把输入的文件作为文本文件看待; 
    -c:从指定文件中读取MD5校验和,并进行校验; 
    --status:验证成功时不输出任何信息; 
    -w:当校验不正确时给出警告信息。

    参数

    文件:指定保存着文件名和校验和的文本文件。

    实例

    生成一个文件1.txt.bak 的md5值:

    [root@localhost ~]# md5sum 1.txt.bak 
    80069221289d73941f0e73482697d379  1.txt.bak
    [root@localhost ~]# md5sum zzz > zzz.md5                 # 生成md5加密检验和
    [root@localhost ~]#  md5sum -c zzz.md5                   # 检验与文件是否一致,

    40.killall命令

  • killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
    语法

    killall(选项)(参数)

    选项

    -e:对长名称进行精确匹配; 
    -l:忽略大小写的不同; 
    -p:杀死进程所属的进程组; 
    -i:交互式杀死进程,杀死进程前需要进行确认; 
    -l:打印所有已知信号列表; 
    -q:如果没有进程被杀死。则不输出任何信息; 
    -r:使用正规表达式匹配要杀死的进程名称; 
    -s:用指定的进程号代替默认信号“SIGTERM”; 
    -u:杀死指定用户的进程。

    参数

    进程名称:指定要杀死的进程名称。

    实例

    杀死所有同名进程

    killall vi

     

    41.seq命令

    seq命令用于产生从某个数到另外一个数之间的所有整数。
    语法

    seq [选项]... 尾数
    seq [选项]... 首数 尾数 
    seq [选项]... 首数 增量 尾数

    选项

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

    实例

    -f选项:指定格式

    [root@localhost ~]# seq -f "%3g" 9 11
      9
     10
     11

    %后面指定数字的位数 默认是%g,%3g那么数字位数不足部分是空格。

    [root@localhost ~]# seq -f "str%3g" 9 11
    str  9
    str 10
    str 11

    -w选项:指定输出数字同宽

    [root@localhost ~]# seq -w 98 101
    098
    099
    100
    101

     

    42.sort命令

    sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
    语法

    sort(选项)(参数)

    选项

    -b:忽略每行前面开始出的空格字符; 
    -c:检查文件是否已经按照顺序排序; 
    -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; 
    -f:排序时,将小写字母视为大写字母; 
    -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符; 
    -m:将几个排序号的文件进行合并; 
    -M:将前面3个字母依照月份的缩写进行排序; 
    -n:依照数值的大小排序; 
    -o<输出文件>:将排序后的结果存入制定的文件; 
    -r:以相反的顺序来排序; 
    -t<分隔字符>:指定排序时所用的栏位分隔字符; 
    +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

    参数

    文件:指定待排序的文件列表。

    实例

    在使用sort命令以默认的式对文件的行进行排序,使用的命令如下:

    sort testfile

    sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。

    使用 cat命令显示testfile文件可知其原有的排序如下:

    $ cat testfile      #testfile文件原有排序  
    test 30  
    Hello 95  
    Linux 85

    使用sort命令重排后的结果如下:

    $ sort testfile #重排结果  
    Hello 95  
    Linux 85  
    test 30

    43.wc命令

    Linux wc命令用于计算字数。

    利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

    语法

    wc(选项)(参数)

    选项

    -c或--bytes或——chars:只显示Bytes数; 
    -l或——lines:只显示列数; 
    -w或——words:只显示字数。

    参数

    文件:需要统计的文件列表。

    实例

    先查看testfile文件的内容,可以看到:

    [root@localhost ~]# cat testfile  
    Linux networks are becoming more and more common, but scurity is often an overlooked  
    issue. Unfortunately, in today’s environment all networks are potential hacker targets,  
    fro0m tp-secret military research networks to small home LANs.  
    Linux Network Securty focuses on securing Linux in a networked environment, where the  
    security of the entire network needs to be considered rather than just isolated machines.  
    It uses a mix of theory and practicl techniques to teach administrators how to install and  
    use security applications, as well as how the applcations work and why they are necesary.
    使用 wc统计,结果如下:
    [root@localhost ~]# wc testfile           # testfile文件的统计信息  
    3 92 598 testfile       # testfile文件的行数为3、单词数92、字节数598

     

    44.sudo命令

    sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
    语法

    sudo(选项)(参数)

    选项

    -b:在后台执行指令; 
    -h:显示帮助; 
    -H:将HOME环境变量设为新身份的HOME环境变量; 
    -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。 
    -l:列出目前用户可执行与无法执行的指令; 
    -p:改变询问密码的提示符号; 
    -s:执行指定的shell; 
    -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份; 
    -v:延长密码有效期限5分钟; 
    -V :显示版本信息。

    参数

    指令:需要运行的指令和对应的参数。

    实例

    列出目前的权限

    sudo –l

    列出 sudo 的版本资讯

    sudo -V

    45.ulimit命令

    ulimit命令用来限制系统用户对shell资源的访问。

    如果不懂什么意思,下面一段内容可以帮助你理解: 假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。 而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大 小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联 系。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。 ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。 作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。
    语法

    ulimit(选项)

    选项

    -a  显示目前资源限制的设定。
    -c <core文件上限>  设定core文件的最大值,单位为区块。
    -d <数据节区大小>  程序数据节区的最大值,单位为KB。
    -f <文件大小>  shell所能建立的最大文件,单位为区块。
    -H  设定资源的硬性限制,也就是管理员所设下的限制。
    -m <内存大小>  指定可使用内存的上限,单位为KB。
    -n <文件数目>  指定同一时间最多可开启的文件数。
    -p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。
    -s <堆叠大小>  指定堆叠的上限,单位为KB。
    -S  设定资源的弹性限制。
    -t <CPU时间>  指定CPU使用时间的上限,单位为秒。
    -u <程序数目>  用户最多可开启的程序数目。
    -v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。

    实例

    [root@localhost ~]# ulimit -a
    core file size          (blocks, -c) 0              #core文件的最大值为100 blocks。
    data seg size           (kbytes, -d) unlimited      #进程的数据段可以任意大。
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited      #文件可以任意大。
    pending signals                 (-i) 3637           #最多有3637个待处理的信号。
    max locked memory       (kbytes, -l) 64             #一个任务锁住的物理内存的最大值为64KB。
    max memory size         (kbytes, -m) unlimited      #一个任务的常驻物理内存的最大值。
    open files                      (-n) 65535          #一个任务最多可以同时打开65535的文件。
    pipe size            (512 bytes, -p) 8              #管道的最大空间为4096字节。
    POSIX message queues     (bytes, -q) 819200         #POSIX的消息队列的最大值为819200字节。
    real-time priority              (-r) 0              
    stack size              (kbytes, -s) 10240          #进程的栈的最大值为10240字节。
    cpu time               (seconds, -t) unlimited      #进程使用的CPU时间。      
    max user processes              (-u) 3637           #当前用户同时打开的进程(包括线程)的最大个数为98304。
    virtual memory          (kbytes, -v) unlimited      #没有限制进程的最大地址空间。
    file locks                      (-x) unlimited      #所能锁住的文件的最大个数没有限制。

    46.dd命令

    dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。 建议在有需要的时候使用dd 对物理磁盘操作,如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。另外,使用dd对磁盘操作时,最好使用块设备文件。
    语法

    dd(选项)

    选项

    bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数; 
    cbs=<字节数>:转换时,每次只转换指定的字节数; 
    conv=<关键字>:指定文件转换的方式; 
    count=<区块数>:仅读取指定的区块数; 
    ibs=<字节数>:每次读取的字节数; 
    obs=<字节数>:每次输出的字节数; 
    of=<文件>:输出到文件; 
    seek=<区块数>:一开始输出时,跳过指定的区块数; 
    skip=<区块数>:一开始读取时,跳过指定的区块数; 
    --help:帮助; --version:显示版本信息。

    实例

    [root@localhost ~]# dd if=/dev/zero of=sun.txt bs=1M count=1
    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB) copied, 0.0162621 s, 64.5 MB/s

    该命令创建了一个1M大小的文件sun.txt,其中参数解释:

    if    代表输入文件。如果不指定if,默认就会从stdin中读取输入。 
    of    代表输出文件。如果不指定of,默认就会将stdout作为默认输出。 
    bs    代表字节为单位的块大小。 
    count 代表被复制的块数。 /dev/zero 是一个字符设备,会不断返回0值字节(\0)。

    47.wget命令

  • wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

语法

wget(选项)(参数)

选项

-a<日志文件>:在指定的日志文件中记录资料的执行过程; 
-A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔; 
-b:进行后台的方式运行wget; 
-B<连接地址>:设置参考的连接地址的基地地址; 
-c:继续执行上次终端的任务; 
-C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on; 
-d:调试模式运行指令; 
-D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔; 
-e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令; 
-h:显示指令帮助信息; 
-i<文件>:从指定文件获取要下载的URL地址; 
-l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔; 
-L:仅顺着关联的连接; 
-r:递归下载方式; 
-nc:文件存在时,下载文件不覆盖原有文件; 
-nv:下载时只显示更新和出错信息,不显示指令的详细执行过程; 
-q:不显示指令执行过程; 
-nh:不查询主机名称; 
-v:显示详细执行过程; 
-V:显示版本信息; 
--passive-ftp:使用被动模式PASV连接FTP服务器; 
--follow-ftp:从HTML文件中下载FTP连接文件。

 

参数

URL:下载指定的URL地址。

实例

[root@localhost ~]# wget http://tel.mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso    #下载centos境像

[root@localhost ~]# wget -c http://tel.mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso    #断点下载

[root@localhost ~]# wget -P /home/download http://tel.mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso    #指定目录下载

[root@localhost ~]# wget -Q 1M http://tel.mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso    #限定最大下载速度

[root@localhost ~]# wget -r -np -nd http://tel.mirrors.163.com/centos/6.4/os/x86_64/   #下载 http://tel.mirrors.163.com/centos/6.4/os/x86_64/ 目录中的所有文件

48.ipcalc命令

ipcalc命令是一个简单的ip地址计算器,可以完成简单的IP地址计算任务。
语法

ipcalc(选项)

选项

-b:由给定的IP地址和网络掩码计算出广播地址; 
-h:显示给定UP地址所对应的主机名; 
-m:由给定的IP地址计算器网络掩码; 
-p:显示给定的掩码或IP地址的前缀; 
-n:由给定的IP地址和网络掩码计算网络地址; 
-s:安静模式; --help:显示帮助信息。

实例

[root@localhost ~]# ipcalc -p 192.168.2.1 255.255.255.0
PREFIX=24

[root@localhost ~]# ipcalc -n 192.168.2.1 255.255.255.0
NETWORK=192.168.2.0

49.telnet命令

telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。
语法

telnet(选项)(参数)

选项

-8:允许使用8位字符资料,包括输入与输出; 
-a:尝试自动登入远端系统; 
-b<主机别名>:使用别名指定远端主机名称; 
-c:不读取用户专属目录里的.telnetrc文件; 
-d:启动排错模式; 
-e<脱离字符>:设置脱离字符; 
-E:滤除脱离字符; 
-f:此参数的效果和指定"-F"参数相同; 
-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机; 
-k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名; -K:不自动登入远端主机; 
-l<用户名称>:指定要登入远端主机的用户名称; 
-L:允许输出8位字符资料; 
-n<记录文件>:指定文件记录相关信息; 
-r:使用类似rlogin指令的用户界面; 
-S<服务类型>:设置telnet连线所需的ip TOS信息; 
-x:假设主机有支持数据加密的功能,就使用它; 
-X<认证形态>:关闭指定的认证形态。

参数

远程主机:指定要登录进行管理的远程主机; 
端口:指定TELNET协议使用的端口号。

实例

[root@localhost ~]# telnet     #telnet内部操作
telnet> display

echo            [^E]
escape          [^]]
rlogin          [off]
tracefile       "(standard output)"
flushoutput     [^O]
interrupt       [^C]
quit            [^\]
eof             [^D]
erase           [^?]
kill            [^U]
lnext           [^V]
susp            [^Z]
reprint         [^R]
worderase       [^W]
start           [^Q]
stop            [^S]
forw1           [off]
forw2           [off]
ayt             [^T]

[root@localhost ~]# telnet 127.0.0.1 6379     #当前用户登录远程主机

50.sar命令

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
语法

sar(选项)(参数)

选项

-A:显示所有的报告信息; 
-b:显示I/O速率; 
-B:显示换页状态; 
-c:显示进程创建活动; 
-d:显示每个块设备的状态; 
-e:设置显示报告的结束时间; 
-f:从指定文件提取报告; 
-i:设状态信息刷新的间隔时间; 
-P:报告每个CPU的状态; 
-R:显示内存状态; 
-u:显示CPU利用率; 
-v:显示索引节点,文件和其他内核表的状态; 
-w:显示交换分区状态; 
-x:显示给定进程的状态。

参数

间隔时间:每次报告的间隔时间(秒); 
次数:显示报告的次数。

实例

察看内存和交换空间的使用率:

[root@localhost ~]# sar -r
Linux 2.6.32-431.el6.x86_64 (bogon)     04/23/2016     _x86_64_    (1 CPU)

12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
12:10:01 AM     67044    419240     86.21     24812    157660    616212     24.47
12:20:02 AM     37896    448388     92.21     19692    191492    617132     24.51
12:30:01 AM     34680    451604     92.87     19824    193484    615824     24.46
12:40:01 AM     32068    454216     93.41     20132    194516    617132     24.51
12:50:01 AM     32820    453464     93.25     20304    194812    615824     24.46
01:00:01 AM     29968    456316     93.84     20448    197528    615824     24.46
01:10:01 AM     27852    458432     94.27     21008    199032    615824     24.46
06:00:01 AM     21504    464780     95.58     21348    203232    620360     24.64
06:10:01 AM     18108    468176     96.28     22348    203568    625572     24.85
06:50:01 AM     17992    468292     96.30     22460    203568    625572     24.85
07:00:01 AM     12264    474020     97.48     23136    206716    630208     25.03
07:10:01 AM      8880    477404     98.17     75016    126752    635700     25.25
07:20:01 AM      6060    480224     98.75     75196    130012    635816     25.25
07:30:01 AM      7432    478852     98.47     75364    130148    634508     25.20
07:40:01 AM      8920    477364     98.17     75516    129196    634508     25.20
07:50:02 AM      8672    477612     98.22     75652    129208    634508     25.20
08:00:01 AM      8424    477860     98.27     75788    129456    634508     25.20
08:10:01 AM      6432    479852     98.68     76024    129484    635816     25.25

Average:    kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
Average:        21501    464783     95.58     42448    169437    625603     24.85

07:20:46 PM       LINUX RESTART

07:30:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
07:40:01 PM    178712    307572     63.25     77940     97536    302740     12.02
07:50:01 PM    176208    310076     63.76     78176     97896    307276     12.20
08:00:01 PM    175588    310696     63.89     78176     98416    307388     12.21
08:10:01 PM    175216    311068     63.97     78188     98684    307388     12.21
08:20:01 PM     79364    406920     83.68    138936     98696    307276     12.20
09:50:01 PM     77596    408688     84.04    138936     99052    312104     12.40
10:00:01 PM     77596    408688     84.04    138936     99096    312104     12.40
10:10:01 PM     77472    408812     84.07    138936     99140    312104     12.40
10:20:01 PM     74124    412160     84.76    138936    102452    312104     12.40
10:30:01 PM     74124    412160     84.76    138936    102456    312104     12.40
10:40:01 PM     74124    412160     84.76    138936    102460    312104     12.40
10:50:01 PM     73008    413276     84.99    138936    103488    312104     12.40
11:00:01 PM     72636    413648     85.06    138936    103896    312104     12.40
11:10:01 PM     53268    433016     89.05     95208    191404    313264     12.44
Average:       102788    383496     78.86    118437    106762    310155     12.32

 

kbmemfree与kbmemused字段分别显示内存的未使用与已使用空间,后面跟着的是已使用空间的百分比(%memused字段)。kbbuffers与kbcached字段分别显示缓冲区与系统全域的数据存取量,单位为KB。

观察系统部件10分钟,并对数据进行排序:

sar -o temp 60 10
posted @ 2016-04-23 21:13  程亚军  阅读(1854)  评论(0编辑  收藏  举报