扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Linux中命令格式为:
成都创新互联专注于洛阳网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供洛阳营销型网站建设,洛阳网站制作、洛阳网页设计、洛阳网站官网定制、成都微信小程序服务,打造洛阳网络公司原创品牌,更为您提供洛阳网站排名全网营销落地服务。
command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个选项或参数。
选项options:
选项是调整命令执行行为的开关,即,选项不同决定了命令的显示结果不同。
选项分为长选项和短选项。
短选项:比如-h,-l,-s等。(- 后面接单个字母)
l短选项都是使用‘-’引导,当有多个短选项时,各选项之间使用空格隔开。
l有些命令的短选项可以组合,比如-l –h 可以组合为–lh
l有些命令的短选项可以不带-,这通常叫作BSD风格的选项,比如ps aux
l有些短选项需要带选项本身的参数,比如-L 512M
长选项:比如--help,--list等。(-- 后面接单词)
l长选面都是完整的单词
l长选项通常不能组合
l如果需要参数,长选项的参数通常需要‘=’,比如--size=1G
参数arguments:
参数是指命令的作用对象。
如ls命令,不加参数的时候显示是当前目录,也可以加参数,如ls /dev, 则输出结果是/dev目录。
以上简要说明了选项及参数的区别,但具体Linux中哪条命令有哪些选项及参数,需要我们靠经验积累或者查看Linux的帮助了。《Linux就该这么学》一起学习
总结:
选项是限定结果的显示结果
短选项(- 一个横杠):只能修饰一个字符的选项,比如: ls -a,当然多个短选项可以合并,比如tar -cvf
长选项(-- 两个横杠):可以修饰单个字符,也可以修饰一个单词,比如:(1) chkconfig --list (2)chkconfig --add xxx (3)service --status-all
参数是传递到脚本中的真实的参数
无论是工作中使用还是应付各种面试,linux sort 都是必须要掌握的 linux 基本命令之一。尤其是 linux sort -k 命令,经常会被搞晕,索性好好研究一下 sort 命令
语法:
选项:
参数就不一一介绍了,直接上例子,首先先看下原始的排序数据
cat sort.log
1、打印从哪列开始是乱序
sort -c sort.log; echo $?
sort -C sort.log; echo $?
其中,返回结果 1,表示文件不是已经排序好的文件
2、默认排序( 整行进行ASCII字符升序)
sort sort.log
3、高能来了,让人迷糊的 k 语法,首先看下 k 的语法格式
这个语法格式可以被其中的逗号(”,”)分为两大部分,Start部分和End部分
Start和End部分都由三部分组成,其中的Modifier部分就是类似n和r的选项部分,可省略
FStart、Fend,表示使用的域,而CStart则表示在FStart域中从第几个字符开始算"排序首字符",同理,CEnd表示结尾的第几个字符是排序末尾字符,.CStart、.CEnd是可以省略的,分别表示从本域的开头部分开始、到本域的域尾结束,CEnd设定为0,也是表示结尾到域尾。口说无凭,上几个例子吧
3.1 对第三列进行排序,如果不加n,按照 ASCII字符排序
sort -t $'\t' -k 3 sort.log
3.2 加n后,按照数值排序
sort -t $'\t' -k 3n sort.log
3.3 不指定 FEnd 时,多个 -k 从前往后排序可以,从后往前不行
从后往前,多个 -k,数据符合预期
sort -t $'\t' -k 3n -k 1 sort.log
从后往前,多个 -k ,第三列相同时,按照第一列降序排列,数据符合预期
sort -t $'\t' -k 3n -k 1r sort.log
更换成从前往后
sort -t $'\t' -k 1 -k 3n sort.log
sort -t $'\t' -k 1 -k 3nr sort.log
通过 sort -t $'\t' -k 1 -k 3n sort.log 和 sort -t $'\t' -k 1 -k 3nr sort.log 返回的结果发现,在第一列相等时,无论其三列是正序排列,还是逆序排列,结果都一样,说明后边的 -k 未生效
当指定 FEend 后
sort -t $'\t' -k 1,1 -k 3nr sort.log
3.4 作用域
紧跟在字段后的选项(如"-k3n"的"n"和"-k2nr"的"n","r")称为私有选项,使用短横线写在字段外的选项(如"-n"、"-r")为全局选项。当没有为字段分配私有选项时,该排序字段将继承全局选项,所有选项包括但不限于"bfnrhM"
除了"b"选项外,其余选项无论是指定在FStart还是FEnd中都是等价的,对于"b"选项,指定在FStart则作用于FStart,指定在FEnd则作用于FEnd
sort -t $'\t' -k1r,2 sort.log ,可以看出一、二列都是倒叙排列
3.5 注意
指定n选项按数值排序时, 由于"n"选项只能识别数字和负号"-",当排序时遇到无法识别字符时,将导致该key的排序立即结束,n选项绝对不会跨域进行比较
默认情况下,sort会进行一次 "最后的排序" ,按照默认规则对整行进行一次排序,这次排序称为"最后的排序"
sort -t $'\t' -k3n sort.log ,在第三列相等时,整行会按照 ASCII 进行最后的升序排列
sort -t $'\t' -k3,4n -s sort.log ,加了 -s 后,不会进行最后的排序(1000相同时,e在b的前边了),而是保留原排序
3.6 按照某个域中的第n个字符进行排序
sort -t $'\t' -k2.3,2.3 sort.log ,按第二列第三个字符进行排序
4、 -h 使用易读性数字(例如:2K、1G)
sort -t $'\t' -k5h sort.log
sort -t $'\t' -k2,2 sort.log|uniq
sort -t $'\t' -k2,2 -u sort.log 会对第二列进行去重,而 sort -t $'\t' -k2,2 sort.log|uniq 会对整行进行去重(当然uniq也可以按照第二列进行去重)
sort整理完了,欢迎大牛指教
其实就是两个减号。
Linux下有条不成文的规定:
参数里,凡是一个字母的缩写都是用一个减号起头;
凡是有整个单词的参数都是用两个减号起头。
你看到的是一条长线,那只是字体不同造成的显示效果不同罢了,
其实不论长线还是两个短线都是两个减号组成的。
命令有参数的时候空一格加一个 “-”
例如: ll -Z
shell写判断的时候的判断参数需要有“-”
例如:if [ -d /var ]; then echo "/var is a directory"; else echo "/var is not exists"; fi;
ps简介
前面介绍的两个命令都是用于查看当前系统用户的情况,下面就来看看进程的情况,这也是本章的主题。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps命令及其参数
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
该命令语法格式如下:
ps [选项]
下面对命令选项进行说明:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
x 显示没有控制终端的进程。
O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。对于ps的不同格式都存在着默认的顺序指定。这些默认顺序可以被用户的指定所覆盖。其中“+”字符是可选的,“-”字符是倒转指定键的方向。
pids 只列出指定进程的情况。各进程ID之间使用逗号分隔。该进程列表必须在命令行参数的最后一个选项后面紧接着给出,中间不能插入空格。比如:ps -f1,4,5。
以下介绍长命令行选项,这些选项都使用“--”开头:
--sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键。“+”字符是可选的,因为默认的方向就是按数字升序或者词典渌承颉1热纾?ps -jax -sort=uid,-ppid,+pid。
--help 显示帮助信息。
--version 显示该命令的版本信息。
在前面的选项说明中提到了排序键,接下来对排序键作进一步说明。需要注意的是排序中使用的值是ps使用的内部值,并非仅用于某些输出格式的伪值。排序键列表见表4-3。
表4-3 排序键列表
短格式
长格式
说 明
c
cmd
可执行的简单名称
C
cmdline
完整命令行
f
flags
长模式标志
g
pgrp
进程的组ID
G
tpgid
控制tty进程组ID
j
cutime
累计用户时间
J
cstime
累计系统时间
k
utime
用户时间
K
stime
系统时间
m
min_flt
次要页错误的数量
M
maj_flt
主要页错误的数量
n
cmin_flt
累计次要页错误
N
cmaj_flt
累计主要页错误
o
session
对话ID
p
pid
进程ID
P
ppid
父进程ID
r
rss
驻留大小
R
resident
驻留页
s
size
内存大小(千字节)
S
share
共享页的数量
t
tty
tty次要设备号
T
start_time
进程启动的时间
U
uid
UID
u
user
用户名
v
vsize
总的虚拟内存数量(字节)
y
priority
内核调度优先级
常用ps命令参数
前面两节介绍的参数可能让读者觉得有些可怕,实际上这是一个非常容易使用的命令,一般的用户只需掌握一些最常用的命令参数就可以了。 最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
[例20] 以root身份登录系统,查看当前进程状况
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。
可以使用u选项来查看进程所有者及其他一些详细信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。
在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这时就需要使用x选项。使用x选项可以观察到所有的进程情况。
[例21] 下面是使用x选项的例子:
$ ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 -bash
5813 ttyp1 S 0:00 -bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz | /
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less -is
5941 ttyp1 R 0:00 ps x
可以发现突然一下子就多出了那么多的进程。这些多出来的进程就是没有控制终端的进程。 前面看到的所有进程都是test用户自己的。其实还有许多其他用户在使用着系统,自然也就对应着其他的很多进程。如果想对这些进程有所了解,可以使用a选项来查看当前系统所有用户的所有进程。经常使用的是aux组合选项,这可以显示最详细的进程情况。
[例22]
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1136 64 ? S Nov25 0:02 init [3]
root 2 0.0 0.0 0 0 ? SW Nov25 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Nov25 0:03 [kupdate]
root 4 0.0 0.0 0 0 ? SW Nov25 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Nov25 0:00 [kswapd]
root 163 0.0 0.1 1628 332 ? S Nov25 0:02 sshd
root 173 0.0 0.0 1324 200 ? S Nov25 0:00 syslogd
root 181 0.0 0.0 1420 0 ? SW Nov25 0:00 [klogd]
daemon 191 0.0 0.1 1160 312 ? S Nov25 0:00 /usr/sbin/atd
root 201 0.0 0.1 1348 492 ? S Nov25 0:00 crond
root 212 0.0 0.0 1292 68 ? S Nov25 0:00 inetd
……
在显示的最前面是其他用户的进程情况,可以看到有root、daemon等用户以及他们所启动的进程。 在上面的例子中,介绍了ps命令最常见的一些选项和选项组合,用户可以根据自己的需要选用。
有些命令显示的内容太多,一页屏幕显示不完,就需要翻页命令。一般是用管道符将这样的命令的输出让more或less处理,就像这样:
dmesg |more (查看系统硬件信息)
或dmesg |less
more命令的翻页按键:
空格:表示向下翻一页
回车:表示向下滚动一行
/字符串:表示查询字符串
q:离开more界面
而less命令和more的不同之处在于,它可以向上翻页,字符串查询也可以向上查询。less命令的按键(more命令的按键在less中一样):
PageUp:向上翻页
PageDown:和空格键一样是向下翻页
?字符串:表示向下查询字符串
n:重复查询字符串
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流