linux shell 常用命令总结

 

3.1文件目录操作

ls 打印目录清单

ls [选项] [文件]

选项:

-a 列出目录下的所有文件,包括以.开头的隐含文件。

-A 同-a ,但不列出"."和".."

-i 显示每个文件的inode号

-k 以KB的形式表示文件的大小。

-l 将文件的权限、所有者、文件大小等信息详细列出来。

-r 逆序排列

-R 递归显示子目录

-s 以块大小为单位列出所有文件的大小

-S 根据文件大小排序

 

ls –l 可以写成ll

 

 

cd 进入目录

cd [-L 或 -P] [选项]

-L 如果目标目录是一个符号链接,则切换到符号链接文件的目录

-P 如果目标目录是一个符号链接,则切换到符号连接指向的目录

选项:

cd -#回到上次所在目录

cd #回到主目录

cd /#切换到根目录

cd #切换到_上级目录

 

 

cp复制文件或者目录

cp [选项] [-T] 文件 目的

cp [选项] 文件... 目录

cp [选项] -t 目录 文件...

选项

-a 此参数的效果和同时指定"-dpR"参数相同

-f 强行复制文件或目录,不论目标文件或目录是否已存在

-i 覆盖既有文件之前先询问用户

-p 保留源文件或目录的属性

-r:若给出的源文件是一个目录文件,将复制该目录下所有的子目录和文件。

-i  覆盖前询问(使前面的 -n 选项失效)

-l 链接文件而不复制

-L  总是跟随符号链接

-n 不要覆盖已存在的文件(使前面的 -i 选项失效)

 

复制的 log.log 建立一个连结档 log_link.log

 

cp -s log.log log_link.log

将当前目录下的file1 文件 ,复制到/tmp/test 目录中并且改名为file2

cp file1 /tmp/test/file2

 

 

 

 

 

 

 

mkdir 创建目录

如果命令没有路径名,则在当前目录下创建

mkdir [选项]... 目录名(可包含路径)...

选项:

-m 设定权限<模式>

-P 递归创建多级目录

-V 每次创建新目录都显示信息

--help 显示此帮助信息并退出

--version 输出版本信息并退出

 

 

rmdir 删除空目录

必须具有被删除目录的父目录的 写权限

rmdir [选项] directory

选项:

-p :递归删除目录

-V :显示命令的详细执行过程;

--help :显示命令的帮助信息;

--version :显示命令的版本信息

--ignore-fail-on-non-empty :忽略由目录非空产生的所有错误

 

 

 

删除/temp和其子目录/test

rmdir -p /temp/test

删除/temp和其子目录/test ,并显示详细信息

rmdir -pv /temp/test

 

 

rm 删除文件或目录

删除目录中的一个或多个 文件或目录,也可以删掉整个目录及其子目录

对于链接文件,只是删除整个链接文件,而原有文件保持不变

rm [选项] 文件

选项:

-d :直接把欲删除的目录的硬连接数据删除成0 ,删除该目录

-f :强制删除文件或目录

-i :删除已有文件或目录之前先询问用户

-r或-R :递归处理,将指定目录下的所有文件与子目录一并处理

-V :显示指令的详细执行过程

--preserve-root :不对根目录进行递归操作

 

 

强制删除/temp/test目录及其目录下的所有文件和目录

rm -rf /temp/test

使用交互式凡是删除/root/file目录及其目录下的所有文件和目录

rm -r /root/file

 

mv 移动或重命名文件

mv [选项] 源文件或目录 目标文件或目录

 

选项

-b :若需覆盖文件,则覆盖前先行备份。

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

 

 

文件改名

mv test.log test1.txt

 

移动文件

mv test1.txt test3

 

将文件log1.txt,log2.txt,log3.txt移动到目录test3中。

mv log1.txt log2.txt log3.txt test3

mv -t /opt/soft/test/test4/ log1.txt log2.txt  log3.txt

 

将文件file1改名为file2,如果file2已经存在,则询问是否覆盖

mv -i log1.txt log2.txt

 

将文件file1改名为file2,即使file2存在,也是直接覆盖掉。

mv -f log3.txt log2.txt

 

目录的移动

mv dir1 dir2

 

 

 

移动当前文件夹下的所有文件到上一级目录

mv * ../

 

把当前目录的一个子目录里的文件移动到另一个子目录里

mv test3/*.txt test5

 

diff 比较文件

语法

diff(选项)(参数)

选项

-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用;

-a :diff预设只会逐行比较文本文件;

-b:不检查空格字符的不同;

-c:显示全部内容,并标出不同之处;

-H:比较大文件时,可加快速度;

-i:不检查大小写的不同;

 

 

 

 

 

参数

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

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

 

 

实例

将目录/usr/li下的文件"test.txt"与当前目录下的文件"test.txt"进行比较

 

diff /usr/li test.txt   

 

 

ln  创建链接

类似快捷方式

ln  [选项][源文件或目录][目标文件或目录]

 

选项

-b 删除,覆盖以前建立的链接

-d 允许超级用户制作目录的硬链接

-f 强制执行

-i 交互模式,文件存在则提示用户是否覆盖

-n 把符号链接视为一般目录

-s 软链接(符号链接)

-v 显示详细的处理过程

 

给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:

ln -s log2013.log link2013

 

 

 

 

 

给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同

ln log2013.log ln2013

 

 

2查看文件内容

cat 显示文件内容

cat [option] [file]

如果没有指定文件,或者文件为"-",则从标准输入读取

 

选项:

-b 对非空输出行编号

-E 在每行结束处显示" $"

-n 对输出的所有行编号

-S 不输出多行空行

 

 

 

 

wc 统计文件字数

wc [选项] [文件]

选项:

-c: 统计字节数。

-l: 统计行数。

-w: 统计字数

-m: 统计字符数

-L: 显示最长行的长度

 

 

 

more 分页显示

按空白键( space )就往下一页显示,

按b键就会往回( back )一页显

more [-dlfpcsu ] [-行数 ] [+/ pattern] [+ linenum] [文件名或多文件名 ... ]

 

+ /pattern 在每个档案显示前搜寻该字串( pattern), 然后从该字串前两行之后开始显示

+ linenum 从第几行开始显示

-C 从顶部清屏,然后显示

-| 忽略Ctrl+I (换页)字符

-P 通过清除窗口而不是滚屏来

-S 把连续的多个空行显示为一-行

-U 把文件内容中的下画线去掉

 

显示文件中从第三行起的内容

more +3 /etc/profile

显示文件内容每屏显示5行

more -5 /etc/profile

显示文件内容并把连续的多个空行显示为一-行

more -S file.txt

 

less  分页显示

less是linux正统查看文件内容的工具

在more的时候,我们并没有办法向前面翻,只能往后面看

但less可以使用[pageup] [pagedown]等按键来往前往后翻看文件

更容易用来查看一个文件的内容!

 

less [选项] [文件]

选项:

-i 忽略搜索时的大小写

-m 显示类似more命令的百分比

-N 显示每行的行号

-S 显示连续空行为一-行

-S 行过长时间将超出部分舍弃

-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件

 

 

 

head 显示文件开头

一般默认显示前十行

head [选项] [文件]

 

 

选项:

-n: 指定显示头部内容行数

-c: 指定显示头部内容的字符数

-v: 总是显示文件名的头信息

-q: 不显示文件名的头信息

 

tail   显示文件尾部

默认显示指定文件的后十行

tail [选项] [文件]

选项:

-c: 输出文件尾部的N个字节

-n: 输出文件尾部N行内容 tail -2 text

-q: 当有多行文件参数时,不输出各个文件名

-v: 当有多个参数时,总是输出各个文件名

 

 

 

 

touch 修改文件时间

若文件不存在,系统会建立一个新的文件

  touch  [选项] 文件

 

 

 

选项

-a   改变档案的读取时间记录。

-m 改变档案的修改时间记录。

-c   假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。

-f    不使用,是为了与其他 unix 系统的相容性而保留。

-r   使用参考档的时间记录,与 --file 的效果一样。

-d   设定时间与日期,可以使用各种不同的格式。

-t   设定档案的时间记录,格式与 date 指令相同。

 

 

 

由于文件不存在,建立文件

touch file

 

更新demo1.txt的时间戳,使其和demo2.txt的时间戳相同

touch -r demo1.txt demo2.txt

 

 

由于系统的限制,早于1970年1月1日的时间是错误的

 

find 寻找文件

任何位于参数之前的字符串都将被视为欲查找的目录名

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

 

 

 

find 目标路径 选项 [-print -exec -ok ..

 

-print :将结果输出到屏幕,默认执行。

-exec :对匹配的文件执行该参数所给出的shell命令。相应命令的

形式为'command'{ }\; ,注意{ }和\; 之间的空格。

-ok :和-exec的作用相同,在执行每一个命令之前 ,会给出提示,让用户来确定是否执行。

 

常用选项

-name   按照文件名查找文件。

-perm   按照文件权限来查找文件。

-prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user   按照文件属主来查找文件。

-group  按照文件所属的组来查找文件。

-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。

-type  查找某一类型的文件,诸如:

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

-amin n   查找系统中最后N分钟访问的文件

-atime n  查找系统中最后n*24小时访问的文件

-cmin n   查找系统中最后N分钟被改变文件状态的文件

-ctime n  查找系统中最后n*24小时被改变文件状态的文件

-mmin n   查找系统中最后N分钟被改变文件数据的文件

-mtime n  查找系统中最后n*24小时被改变文件数据的文件

 

 

实例

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

# find . -name "*.c"

将目前目录其其下子目录中所有一般文件列出

# find . -type f

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

# find . -ctime -20

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

# find . -type f -perm 644 -exec ls -l {} \;

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

在/etc目录下查找大于1M的文件和目录

find /etc/ -size + 1M

在/etc目录先查找以is开头的文件

find /etc/ -name is* -type f

在当前目录下查找用户为root的文件和目录

find . -user root

在当前目录下查找所属组为root的文件和目录并显示详细信息

find . -group root -exec -Is -| {} \;

在/root目录查找10分钟之内被修改过内容的文件

find /root -mmin -10 -type f

在/root目录下查找10分钟以前属性被修改过的文件

find /root -cmin +10 -type f

 

 

 

 

 

 

 

 

locate 寻找文件

比 find 好用的文件查找工具

locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

语法

locate [选择参数] [样式]

选项

-e 将排除在寻找的范围之外。

-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案  放在资料库中。

-q 安静模式,不会显示任何错误讯息。

-n 至多显示 n个输出。

-r 使用正规运算式 做寻找的条件。

-o 指定资料库存的名称。

-d 指定资料库的路径

 

 

实例

实例1:查找和pwd相关的所有文件

 

root ~ # locate pwd

/bin/pwd

/etc/.pwd.lock

/sbin/unix_chkpwd

/usr/bin/pwdx

/usr/include/pwd.h

/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py

/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc

/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py

/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc

/usr/lib/syslinux/pwd.c32

/usr/share/help/C/empathy/irc-join-pwd.page

/usr/share/help/ca/empathy/irc-join-pwd.page

/usr/share/help/cs/empathy/irc-join-pwd.page

/usr/share/help/de/empathy/irc-join-pwd.page

/usr/share/help/el/empathy/irc-join-pwd.page

 

 

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

 

root ~ # locate /etc/sh

/etc/shadow

/etc/shadow-

/etc/shells

 

 

实例3:搜索etc目录下,所有以m开头的文件

 

root ~ # locate /etc/m

/etc/magic

/etc/magic.mime

/etc/mailcap

/etc/mailcap.order

/etc/manpath.config

/etc/mate-settings-daemon

 

 

 

 

 

 

 

 

whereis 查找二进制程序、代码等相关文件路径

和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中

语法

whereis(选项)(参数)

选项

-b:只查找二进制文件;

-B<目录>:只在设置的目录下查找二进制文件;

-f:不显示文件名前的路径名称;

-m:只查找说明文件;

-M<目录>:只在设置的目录下查找说明文件;

-s:只查找原始代码文件;

-S<目录>只在设置的目录下查找原始代码文件;

-u:查找不包含指定类型的文件。

参数

指令名:要查找的二进制程序、源文件和man手册页的指令名。

 

 

实例

将相关的文件都查找出来

 

[root@localhost ~]# whereis tomcat

tomcat:

 

[root@localhost ~]# whereis svn

svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz

说明:tomcat没安装,找不出来,svn安装找出了很多相关文件

 

只将二进制文件查找出来

 

[root@localhost ~]# whereis -b svn

svn: /usr/bin/svn /usr/local/svn

 

[root@localhost ~]# whereis -m svn

svn: /usr/share/man/man1/svn.1.gz

 

[root@localhost ~]# whereis -s svn

svn:

说明:whereis -m svn查出说明文档路径,whereis -s svn找source源文件

 

 

 

3基本系统命令

man 帮助文档

参数:

-a:在所有的man帮助手册中搜索;

-f:等价于whatis指令,显示给定关键字的简短描述信息;

-P:指定内容时使用分页程序;

-M:指定man手册搜索的路径。

 

Man man

 

帮助文档按q退出,或者按 ctrl + z 强制结束

 

 

w 显示目前登入系统的用户信息

显示已经登陆系统的用户列表,并显示用户正在执行的指令

语法

w(选项)(参数)

选项

 -h:不打印头信息;

 -u:当显示当前进程和cpu时间时忽略用户名;

 -s:使用短输出格式;

 -f:显示用户从哪登录;

 

 

参数

用户:仅显示指定用户。

 

 

 

who 显示目前登录系统的用户信息

语法

who(选项)(参数)

选项

-H:显示各栏位的标题信息列;

-q:只显示登入系统的帐号名称和总人数;

-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;

-w:显示用户的信息状态栏;

参数

文件:指定查询文件。

 

实例

[root@localhost ~]# who

root     pts/0        2013-08-19 15:04 (192.168.0.134)

root     pts/1        2013-12-20 10:37 (180.111.155.40)

 

[root@localhost ~]# who -q

root root

# users=2

 

[root@localhost ~]# who -H

NAME     LINE         time             COMMENT

root     pts/0        2013-08-19 15:04 (192.168.0.134)

root     pts/1        2013-12-20 10:37 (180.111.155.40)

whoami 打印当前有效的用户名称

相当于执行id -un命令。

 

语法

whoami(选项)

选项

--help:在线帮助;

--version:显示版本信息。

 

实例

[root@localhost ~]# whoami

root

 

[root@localhost ~]# id -un

root

last列出目前与过去登入系统的用户相关信息

它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

 

语法

last(选项)(参数)

选项

-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;

-d:将IP地址转换成主机名称;

-x:显示系统关机,重新开机,以及执行等级的改变等信息。

参数

用户名:显示用户登录列表;

终端:显示从指定终端的登录列表。

 

 

 

date显示或设置系统时间与日期

语法

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

 

时间方面:

% : 印出 %

%n : 下一行

%t : 跳格

%H : 小时(00..23)

%I : 小时(01..12)

%k : 小时(0..23)

%l : 小时(1..12)

%M : 分钟(00..59)

%p : 显示本地 AM 或 PM

%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)

%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数

%S : 秒(00..61)

%T : 直接显示时间 (24 小时制)

%X : 相当于 %H:%M:%S

%Z : 显示时区

日期方面:

%a : 星期几 (Sun..Sat)

%A : 星期几 (Sunday..Saturday)

%b : 月份 (Jan..Dec)

%B : 月份 (January..December)

%c : 直接显示日期与时间

%d : 日 (01..31)

%D : 直接显示日期 (mm/dd/yy)

%h : 同 %b

%j : 一年中的第几天 (001..366)

%m : 月份 (01..12)

%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)

%w : 一周中的第几天 (0..6)

%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yy)

%y : 年份的最后两位数字 (00.99)

%Y : 完整年份 (0000..9999)

 

 

 

 

参数说明:

 

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)

--help : 显示辅助讯息

-s datestr : 将系统时间设为 datestr 中所设定的时间

-u : 显示目前的格林威治时间

--version : 显示版本编号

 

 

 

实例

显示当前时间

[root@localhost ~]# date

2020年 08月 05日 星期三 10:31:57 CST

 

 

[root@localhost ~]# date '+%c'

2020年08月05日 星期三 10时32分57秒

 

 

[root@localhost ~]# date '+%d'

05

 

 

显示月份与日数

[root@localhost ~]# date '+%B %d'

八月 05

 

 

 

 

 

uname 显示Linux系统信息

语法

uname(选项)

选项

-a:显示全部的信息;

-m:显示电脑类型;

-s:显示操作系统名称;

-v:显示操作系统的版本;

-i:输出硬件平台或"unknown";

 

 

实例

 

[root@localhost ~]# uname    #单独使用uname命令时相当于uname -s

Linux

 

 

[root@localhost ~]# uname -a

Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

 

 

 

[root@localhost ~]# uname -n

localhost

 

 

[root@localhost ~]# uname -s

Linux

 

 

 

reboot重启Linux

语法

reboot(选项)

选项

-f:强制重新开机,不调用shutdown指令的功能;

-i:在重开机之前,先关闭所有网络界面;

-n:重开机之前不检查是否有未结束的程序;

-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。

 

 

实例

reboot        //重开机。

reboot -w     //做个重开机的模拟(只有纪录并不会真的重开机)。

 

 

 

shutdown关机

语法

shutdown(选项)(参数)

 

 

选项

-f:重新启动时不执行fsck;

-F:重新启动时执行fsck;

-h:将系统关机;

-k:只是送出信息给所有用户,但不会实际关机;

-r:shutdown之后重新启动;

-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。

 

 

 

立刻关机

shutdown -h now

 

指定5分钟后关机,同时送出警告信息给登入用户:

shutdown +5 "System will shutdown after 5 minutes"

 

 

 

enable启动或禁用shell内建命令

概要

enable [-a] [-dnps] [-f filename] [name ...]

 

选项

-a 打印所有内建命令,无论是否禁用。

-d 移除从动态库中加载的内建命令。

-s 只显示处于启动状态的posix标准内建命令。

-f 动态库中加载内建命令。

 

参数

filename:动态库文件名。

 

name(可选):内建命令,可以为多个。

 

返回值

enable返回成功,除非name不是内建命令或有错误发生。

 

 

例子

# 打印所有内建命令

enable -a

 

# 禁用一到多个内建命令

enable -n echo pwd

# 打印处于启用状态的内建命令

enable

# 打印处于禁用状态的内建命令

enable -n

# 启用一到多个内建命令

enable pwd

 

 

 

type显示指定命令的类型。

type [-afptP] name [name ...]

 

选项

-a:在环境变量PATH中查找并显示所有包含name的可执行文件路径;当'-p'选项没有同时给出时,如果在别名、关键字,函数,内建的信息中存在name,则一并显示。

-f:排除对shell函数的查找。

-p:如果name在执行'type -t name'返回的不是'file',那么什么也不返回;否则会在环境变量PATH中查找并返回可执行文件路径。

-P:即使要查找的name是别名、内建、函数中的一个,仍然会在环境变量PATH中查找并返回可执行文件路径。

-t:根据name的类型返回一个单词(别名,关键字,函数,内建,文件),否则返回空值。

 

参数

name:要查找的命令,可以为多个。

 

返回值

当指定的命令可以找到时返回成功,如果有没找到的返回失败。

 

 

 

4监视系统状态

top 显示或管理执行中的程序

语法

top(选项)

 

选项

-b:以批处理模式操作;

-c:显示完整的治命令;

-d:屏幕刷新间隔时间;

-I:忽略失效过程;

-s:保密模式;

-S:累积模式;

-i<时间>:设置间隔时间;

-u<用户名>:指定用户名;

-p<进程号>:指定进程;

-n<次数>:循环显示的次数。

 

 

 

 

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

实例

top - 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92

Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie

Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   4147888k total,  2493092k used,  1654796k free,   158188k buffers

Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached

解释:

 

top - 09:44:56[当前系统时间],

16 days[系统已经运行了16天],

1 user[个用户当前登录],

load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]

Tasks: 145 total[总进程数],

2 running[正在运行的进程数],

143 sleeping[睡眠的进程数],

0 stopped[停止的进程数],

0 zombie[冻结进程数],

Cpu(s): 99.8%us[用户空间占用CPU百分比],

0.1%sy[内核空间占用CPU百分比],

0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],

0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],

0.0%hi[],

0.0%st[],

Mem: 4147888k total[物理内存总量],

2493092k used[使用的物理内存总量],

1654796k free[空闲内存总量],

158188k buffers[用作内核缓存的内存量]

Swap: 5144568k total[交换区总量],

56k used[使用的交换区总量],

5144512k free[空闲交换区总量],

2013180k cached[缓冲的交换区总量],

 

 

uptime查看Linux系统负载信息

语法

uptime(选项)

选项

-V:显示指令的版本信息。

 

 

实例

使用uptime命令查看系统负载:

 

[root@LinServ-1 ~]# uptime

10:45:44 up 6 min,  2 users,  load average: 0.04, 0.34, 0.22

显示内容说明:

10:45:44             # 系统当前时间

up 6 min   # 主机已运行时间,时间越大,说明你的机器越稳定。

2 user               # 用户连接数,是总连接数而不是用户数

load average: 0.04, 0.34, 0.22

         #  系统平均负载,统计最近1,5,15分钟的系统平均负载

 

 

 

 

 

 

vmstat 显示虚拟内存状态

语法

vmstat(选项)(参数)

选项

-a:显示活动内页;

-f:显示启动后创建的进程总数;

-m:显示slab信息;

-n:头信息仅显示一次;

-s:以表格方式显示事件计数器和内存状态;

-d:报告磁盘状态;

-p:显示指定的硬盘分区状态;

-S:输出信息的单位。

 

 

参数

事件间隔:状态信息刷新的时间间隔;

次数:显示报告的次数。

实例

vmstat 3

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    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0

 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0

 0  0    320  42188 167336 1534392    0    0     0    19 1002   44  0  0 100  0  0

 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0

 0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0

 

 

 

 

ps 报告当前系统的进程状态

语法

ps(选项)

 

 

选项

-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。

a:显示现行终端机下的所有程序,包括其他用户的程序。

-A:显示所有程序。

-H:显示树状结构,表示程序间的相互关系

-N:显示所有的程序,除了执行ps指令终端机下的程序之外。

r:只列出现行终端机正在执行中的程序。

s:采用程序信号的格式显示程序状况。

S:列出程序时,包括已中断的子程序资料。

-T:显示现行终端机下的所有程序。

u:以用户为主的格式来显示程序状况。

x:显示所有程序,不以终端机来区分。

 

 

 

实例

ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率

ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序

ps aux | sort -nk 3  # 按 CPU 资源的使用量对进程进行排序

ps -A # 显示所有进程信息

ps -u root # 显示指定用户信息

ps -aux > ps001.txt

 

 

 

kill 发送信号到进程。

kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...

kill -l [sigspec]

主要用途

发送信号到作业或进程(可以为多个)。

 

选项

-s sig    信号名称。

-n sig    信号名称对应的数字。

-l        列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。

 

参数

pid:进程ID

 

jobspec:作业标识符

 

返回值

返回状态为成功除非给出了非法选项、执行出现错误。

 

例子

[user2@pc] kill -l 9

KILL

 

# 列出所有信号名称:

[user2@pc] kill -l

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL

 5) SIGTRAP …………

 

# 下面是常用的信号。

# 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。

 

HUP     1    终端挂断

INT     2    中断(同 Ctrl + C)

QUIT    3    退出(同 Ctrl + \)

KILL    9    强制终止

TERM   15    终止

CONT   18    继续(与STOP相反,fg/bg命令)

STOP   19    暂停(同 Ctrl + Z)

 

 

 

5磁盘操作

df 检查磁盘空间占用情况

df [选项] [文件]

选项:

-a:包含全部的文件系统

-h:以可读性较高的方式来显示信息

-I (i的大写) 显示inode的信息

-k    指定区块大小为1024字节

-l     仅显示本地端的文件系统

-T    显示文件系统的类型

 

列出各文件系统的i节点使用情况。

df -i

列出文件系统的类型

df -T

以k为单位显示磁盘的使用情况

df –k

 

du 计算文件或目录所占的磁盘空间

du [选项] [文件]

选项:

-a    显示目录中个别文件的大小。

-c    显示几个目录或文件的大小,并统计它们的总和

-m   以MB为单位输出。

-S    仅显示总计,只列出最后加总的值。

-h    以K,M,G为单位,提高信息的可读性。

 

 

显示多个文件所占用的空间

du file file2 file3

显示多个文件所占用的空间,并显示们所占用的空间总和

du -C file file2 file3

显示一个目录及其每个子目录的磁盘使用情况

du /home

 

mount 挂载Linux系统外的文件

语法

mount [-hV]

mount -a [-fFnrsvw] [-t vfstype]

mount [-fnrsvw] [-o options [,...]] device | dir

mount [-fnrsvw] [-t vfstype] [-o options] device dir

 

选项

-V:显示程序版本

-h:显示辅助讯息

-v:显示较讯息,通常和 -f 用来除错。

-a:将 /etc/fstab 中定义的所有档案系统挂上。

-o ro:只读模式挂上。

-o rw:用可读写模式挂上。

 

 

实例

将 /dev/hda1 挂在 /mnt 之下。

#mount /dev/hda1 /mnt

 

将 /dev/hda1 用只读模式挂在 /mnt 之下。

#mount -o ro /dev/hda1 /mnt

 

 

 

 

 

 

 

 

fdisk 查看磁盘使用情况和磁盘分区

语法

fdisk(选项)(参数)

选项

 -b <大小>             扇区大小(512、1024、2048或4096)

 -C <数字>             指定柱面数

 -H <数字>             指定磁头数

 -S <数字>             指定每个磁道的扇区数

参数

m 显示所有命令列示

p 显示硬盘分割情形。

a 设定硬盘启动区。

n 设定新的硬盘分割区。

e 硬盘为延伸]分割区(extend)。

p 硬盘为[主要]分割区(primary)。

t 改变硬盘分割区属性。

q 结束不存入硬盘分割区属性。

w 结束并写入硬盘分割区属性

 

 

 

 

 

 

 

以sda2为例新建分区

fdisk /dev/sda2

 

新建主分区

n 设定新的硬盘分割区。

p 硬盘为[主要]分割区(primary)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6用户和组相关

su 切换账户

su(选项)(参数)

选项

-c<指令>:执行完指定的指令后,即恢复原来的身份;

-m,-p变更身份时,不要变更环境变量;

-s<shell>:指定要执行的shell;

 

实例

变更帐号为test并在执行pwd指令后退出变回原使用者:

 

 

 

变更帐号为test并改变工作目录至test的家目录:

 

 

 

 

 

 

 

 

useradd 创建新用户

语法

useradd(选项)(参数)

选项

-d<登入目录>:指定用户登入时的启始目录;

-e<有效期限>:指定帐号的有效期限;

-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;

-g<群组>:指定用户所属的群组;

-G<群组>:指定用户所属的附加群组;

-r:建立系统帐号;

-s<shell>:指定用户登入后所使用的shell;

-u<uid>:指定用户id。

参数

用户名:要创建的用户名。

 

实例

新建用户加入组:

useradd –g sales jack –G company,employees

 

 

建立一个新用户账户,并设置ID:

 

useradd caojh -u 544

 

 

passwd 更改密码

语法

passwd(选项)(参数)

 

选项

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

 

 

参数

用户名:需要设置密码的用户名。

 

 

存放用户信息的文件

/etc/passwd

/etc/shadow

 

存放组信息的文件

/etc/group

/etc/gshadow

 

 

 

 

 

实例

[root@localhost ~]# passwd linuxde     # 更改或创建linuxde用户的密码;

Changing password for user linuxde.

New UNIX password:           # 请输入新密码;

Retype new UNIX password:    # 再输入一次;

passwd: all authentication tokens updated successfully.  # 成功;

 

 

 

groupadd 创建新工作组

语法

groupadd(选项)(参数)

选项

-g:指定新建工作组的id;

-r:创建系统工作组,系统工作组的组ID小于500;

-K:覆盖配置文件“/ect/login.defs”;

-o:允许添加组ID号不唯一的工作组。

 

 

 

 

 

参数

组名:指定新建工作组的组名。

 

实例

建立一个新组,并设置组ID加入系统:

 

groupadd -g 344 jsdigname

此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

 

 

 

userdel 删除用户

语法

userdel(选项)(参数)

 

选项

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件。

参数

用户名:要删除的用户名。

 

实例

userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于/var目录中,现在我们来删除这个用户:

userdel linuxde       # 删除用户linuxde,但不删除其家目录及文件;

userdel -r linuxde    # 删除用户linuxde,其家目录及文件一并删除;

请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

 

chown 变更文件或目录的拥有者或所属群组

只有文件主和超级用户才可以便用该命令。

 

语法

chown(选项)(参数)

选项

-c:效果类似“-v”参数,但仅回报更改的部分;

-f:不显示错误信息;

-h:只对符号连接的文件作修改,而不更改其他任何相关文件;

-R:递归处理,将指定目录下的所有文件及子目录一并处理;

-v:显示指令执行过程;

 

参数

用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;

文件:指定要改变所有者和工作组的文件列表。

 

 

 

 

 

实例

将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:

 

chown -R liu /usr/meng

 

chmod 变更文件或目录的权限

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

chmod [OPTION]... --reference=RFILE FILE...

 

参数

mode:八进制数或符号组合。

file:指定要更改权限的一到多个文件。

 

 

选项

-c:当文件的权限更改时输出操作信息。

-f:抑制多数错误消息的输出。

-v:无论文件是否更改了权限,一律输出操作信息。

-R:对目录以及目录下的文件递归执行更改权限操作。

 

返回值

返回状态为成功除非给出了非法选项或非法参数。

 

例子

# 查看当前目录(包含隐藏文件)的长格式。

ls -la

  -rw-r--r--   1 user  staff   651 Oct 12 12:53 .gitmodules

 

# 第1位如果是d则代表目录,是-则代表普通文件。

# 更多详情请参阅info coreutils 'ls invocation'(ls命令的info文档)的'-l'选项部分。

# 第2到4位代表当前用户的权限。

# 第5到7位代表组用户的权限。

# 第8到10位代表其他用户的权限。

# 添加组用户的写权限。

chmod g+w ./test.log

# 删除其他用户的所有权限。

chmod o= ./test.log

# 使得所有用户都没有写权限。

chmod a-w ./test.log

# 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。

chmod u=rwx, g=rw, o=r ./test.log

# 等价的八进制数表示:

chmod 754 ./test.log

# 将目录以及目录下的文件都设置为所有用户拥有读写权限。

# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!

chmod -R a=rw ./testdir/

# 根据其他文件的权限设置文件权限。

chmod --reference=./1.log  ./test.log

 

 

 

 

 

id显示用户的ID以及所属群组的ID

语法

id [-gGnru]--[help][--version][用户名称]

 

 

 

 

 

选项

-g或--group   显示用户所属群组的ID。

-G或--groups   显示用户所属附加群组的ID。

-n或--name    显示用户,所属群组或附加群组的名称。

-r或--real    显示实际ID。

-u或--user    显示用户ID。

 

 

实例

[root@localhost ~]# id

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:

 

root组GID号是:0

bin组GID号是:1

daemon组GID号是:2

sys组GID号是:3

adm组GID号是:4

disk组GID号是:6

wheel组GID号是:10

打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项:

 

[root@localhost ~]# id -a

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

 

 

 

 

finger 查找并显示用户信息

语法

finger(选项)(参数)

选项

-m:排除查找用户的真实姓名;

-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;

-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。

不指定finger的选项如果提供操作者的话,缺省设为-l输出风格,否则为-s风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目。

 

参数

用户名:指定要查询信息的用户。

 

实例

 

[root@localhost root]# finger

login Name Tty Idle Login time Office Office Phone

root root tty1 2 Dec 18 13

root root pts/0 1 Dec 18 13

root root *pts/1 Dec 18 13

如果要查询远程机上的用户信息,需要在用户名后面接@主机名,采用用户名@主机名的格式,不过要查询的网络主机需要运行finger守护进程的支持。

 

7压缩

gzip 压缩和解压文件

gzip [选项] 文件

选项:

-d    将压缩文件解压。

-r    递归处理,将指定目录下的所有文件及子目录一并处理;

-t    验证压缩文件的完整性。如果文件完整则不显示任何信息

-v    显示执行过程

 

把当前目录下的每个文件压缩成.gz文件。

gzip

解压file.gz,并列出详细的信息

gzip -dv file.gz

检验file.gz的完整性。

gzip -t file.gz

 

 

 

 

bzip2解压缩

bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法好

若没有加上任何参数,bzip2压缩完文件后会产生bz2的压缩文件,并删除原始的文件。

bzip2 [选项] 文件

选项:

-d    解压缩。

-k    产生压缩文件后保留原文件

-t    测试.bz2压缩文件的完整性。

-v    压缩或解压缩文件时,显示详细的信息。

-z    强制执行压缩。

 

用bizp2压缩install.log并保存原文件。

bzip2 -k install.log

解压install.log.bz2 ,并保留原文件

bzip2 -kd install.log

检验install.log.bz2的完整性。

bzip2 -t file.gz

 

tar打包

tar命令可以为linux的文件和目录创建档案。

利用tar命令,可以把一大堆的文件和目录全部打包成一个文件

tar 选项 归档/压缩文件 [文件或目录列表]

选项:

-c    创建归档/压缩文件包。

-f     指定一个文件名,是必须的选项

-x    还原归档/压缩文件中的文件或目录。

-v    显示命令的执行过程。

-z    采用gzip格式压缩/解压缩文件。

-j     采用bzip2格式压缩/解压缩文件。

 

仅打包不压缩。

tar -cvf install.tar install.log

打包后压缩成bzip2格式的压缩包。

tar -jcvf install.tar.bz2 install.log

将install.tar.bz2中的文件解压到/root目录。

tar -zxvf install.tar.bz2 /root

 

 

8 网络ip相关

ifconfig 配置和显示Linux系统网卡的网络参数

ifconfig(参数)

参数

add<地址>:设置网络设备的ip地址;

del<地址>:删除网络设备的IP地址;

down:关闭指定的网络设备;

up:启动指定的网络设备;

netmask<子网掩码>:设置网络设备的子网掩码;

-a  显示所有配置的网络接口,不论其是否激活

 

实例

显示网络设备信息(激活状态的):

 

说明:

lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。

 

启动关闭指定网卡:

ifconfig eth0 up

ifconfig eth0 down

ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。

 

为网卡配置和删除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/64    #为网卡eth0配置IPv6地址

ifconfig eth0 del 33ffe:3240:800:1005::2/64    #为网卡eth0删除IPv6地址

 

配置IP地址:

[root@localhost ~]# ifconfig eth0 192.168.2.10

[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0

 

 

 

 

route显示并设置Linux中静态路由表

route(选项)(参数)

 

选项

-A:设置地址类型;

-C:打印将Linux核心的路由缓存;

-v:详细信息模式;

-n:不执行DNS反向查找,直接显示数字形式的IP地址;

-net:到一个网络的路由表;

-host:到一个主机的路由表。

参数

Add:增加指定的路由记录;

Del:删除指定的路由记录;

Target:目的网络或目的主机;

gw:设置默认网关;

dev:路由记录所表示的网络接口。

 

 

 

实例

显示当前路由:

 

 

添加网关/设置网关:

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

ping 测网络连通性

语法

ping(选项)(参数)

 

选项

-d:使用Socket的SO_DEBUG功能;

-c<完成次数>:设置完成要求回应的次数;

-f:极限检测;

-i<间隔秒数>:指定收发信息的间隔时间;

-n:只输出数值;

-q:不显示指令执行过程,开头和结尾的相关信息除外;

-R:记录路由过程;

-s<数据包大小>:设置数据包的大小;

-t<存活数值>:设置存活数值TTL的大小;

-v:详细显示指令的执行过程

 

 

 

 

参数

目的主机:指定发送ICMP报文的目的主机。

 

实例

[root@AY1307311912260196fcZ ~]# ping www.jsdig.com

PING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data.

64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms

64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms

64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms

64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms

...按Ctrl+C结束

 

9 shell

echo $SHELL  显示当前使用的shell

开机默认为bash

 

bash   进入shell()

 

exit     退出shell

 

 

 

参考

https://www.cnblogs.com/zhangziqiang/p/7478075.html

https://www.runoob.com/linux/linux-command-manual.html

posted @ 2020-08-05 13:21  周佳豪  阅读(429)  评论(0编辑  收藏  举报