常用的Linux命令汇总与解析
常用功能
【1】查看进程:
ps -aux
显示所有状态
ps -ef | grep java
: grep 搜索 java (通用)
pstree
以树形查看
-e
显示所有进程,环境变量
-f
全格式
-h
不显示标题
-l
长格式
-w
宽输出
-a
显示终端上地所有进程,包括其他用户地进程
-r
只显示正在运行地进程
-x
显示没有控制终端地进程
【2】删除进程:
kill
命令用于终止进程
例如: kill -9 [PID]
-9
表示强迫进程立即停止
通常用 ps
查看进程 PID ,用 kill
命令终止进程
【3】动态查看日志:
tail -f [文件名]
默认最后10行 实时刷新
tail -nf [文件名]
n为行数 实时刷新 如: tail -100f log.out
(实时监控最后100行的日志)
退出动态查看:ctrl + c
(一般的退出都可以)
【4】查看文件内容
- 如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
- 如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd
或tail -n 10 /etc/passwd
tail -f /var/log/messages
参数-f
使tail
不停地去读最新的内容,这样有实时监视的效果。用Ctrl+c
来终止! - 查看文件中间一段,你可以使用
sed
命令,如:
sed -n '5,10p' /etc/passwd
这样你就可以只查看文件的第5行到第10行。
【5】查看文件具体信息
stat [文件名]
【6】动态查看当前消耗最大的进程:
top
【7】查看文件:
cat
和tac
:将全部内容输入到屏幕,但经常屏幕无法完全容下,只能看到一部分。
cat
从第一行开始,tac
从最后一行开始倒过来输出more
和less
:分页显示。
more
:回车向下翻行,空格向下翻页(无法翻回前一页)q退出
less
:使用pageup
、pagedown
前后翻页(先同more向后翻页才能pagedown)q
退出
查询:打开文件后,输入:/[查询内容]
回车,可以高亮[查询内容]
向前搜索:/
搜索并定位到下一个匹配的文本,n 查找下一个匹配的文本
向后搜索:?
搜索并定位到前一个匹配的文本, n 查找下一个匹配的文本head
和tail
:同【4】,查看文件的前n行和查看文件的后n行nl
、tailf
:少用,忽略- linux目录下,以.开头的文件为隐藏文件,为了查看linux下的隐藏文件,使用带有-a选项的ls命令,即可查看指定目录下的所有文件。
如ls -a /opt
可查看/opt目录下所有文件,包括隐藏文件.a.txt, ., …。
其中.表示当前目录,…表示上一级目录,即父目录。 - 如果想查看文件的详细信息,如文件大小,创建时间等,可使用带有
-l
选项的ls命令。(还有-al -lh
等)
如,要查看/opt目录下文件的详细信息,使用命令:ls -l /opt
。 - 如果要查看ls的详细使用说明,可以使用带
--help
选项的ls
,如ls --help
.
【8】查看网络信息:
ifconfig
【9】查看命令:
man ls
【10】查找文件:
locate <文件名称>
: locate log.txt
find [路径] <表达式>
: find …/ -name log.txt 或者 find -name log.txt
-name <表达式>
根据文件名查找文件
-iname <表达式>
根据文件名查找文件,忽略大小写
-path <表达式>
根据路径查找文件
-ipath <表达式>
根据路径查找文件,忽略大小写
-mtime <天数>
按文件更改时间来查找文件,(-n +n: -n指n天以内,+n指n天以前)
-amin <分钟>
过去N分钟内访问过的文件
-atime <天数>
过去N天内访问过的文件
-cmin <分钟>
过去N分钟内修改过的文件
-ctime <天数>
过去N天内修改过的文件
-anewer <参照文件>
比参照文件更晚被读取过的文件
-cnewer <参照文件>
比参照文件更晚被修改过的文件
-size <大小>
根据文件大小查找文件,单位b c w k M G
-empty
查找空文件
-type <文件类型>
根据文件类型查找文件: b
块设备 c
字符设备 d
目录 p
管道文件 f
普通文件 l
链接 s
端口文件(默认当前目录)
eg: find -name local -type d
(查找名称包含 local 的文件夹)
-
查找某类型文件:
find . -regex '.*\.txt\|.*\.doc\|.*\.mp3'
或ls *.c
或
find -name ‘*.c’
(正则表达式可以在大多数地方使用) -
查找文件内容:(最后跟文件,否则默认当前目录下所有文件)
- 从文件内容查找匹配指定字符串的行:
$ grep [被查找的字符串] [文件名]
- 从文件内容查找与正则表达式匹配的行:
$ grep –e [正则表达式] [文件名]
- 查找时不区分大小写:
$ grep –i [被查找的字符串] [文件名]
- 查找匹配的行数:
$ grep -c [被查找的字符串] [文件名]
- 从文件内容查找不匹配指定字符串的行:
$ grep –v [被查找的字符串] [文件名]
- 从文件内容查找匹配指定字符串的行:
eg:
- 从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
- 系统查找到httpd.conf文件后即时在屏幕上显示httpd.conf文件信息:
find/-name"httpd.conf"-ls
- 在根目录下查找某个文件:
find . -name "test"
- 在某个目录下查找包含某个字符串的文件:
grep -r "zh_CN" ./
- 模糊查找:
find -name ‘*test*’
【11】涉及到一些数字参数的,一般可以使用±号:
+
大于(时间之前) -
小于(时间之内)
【12】查看命令的帮助内容:
[命令] --help
【13】文件详细信息的说明:
-rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog
[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
[ 权限 ] [连结] [拥有者] [群组] [文件容量] [ 修改日期 ] [ 文件名 ]
[权限]说明:
- rw- r-- r--
1 234 567 890
(用数字表示位置)
1
:文件的类型(如目录、文件或链接文件等等):
d:目录
-:文件
l:链接(link file)
b:装置文件里面的可供储存的接口设备(可随机存取装置)
c:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
234
:『文件拥有者的权限』
567
:『同群组的权限』
890
:『其他非本群组的权限』
以下字符中,以三个为一组,且均为『rwx』 的三个参数的组合
r:可读(read)
w:可写(write)
x:可执行(execute)
-:没有权限
【14】删除文件:
rm *
(删除当前目录下)
rm [文件/文件夹名称]
(删除指定目录或文件)
其他参数:
-f
, --force 忽略不存在的文件,不给出提示。
-i
, --interactive 进行交互式删除(删除前会逐一询问是否删除文件,目录下每个文件/目录都会问)
-r
, -R
, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v
, --verbose 详细显示进行的步骤
–help 显示此帮助信息并退出
–version 输出版本信息并退出
一般使用 rm -rf [文件夹]
进行删除文件夹
注:只用rm
不会删除内部目录,一般可以恢复;使用rm -rf
会删除目录下的所有内容,不能恢复
对于链接文件,只是删除了链接,原有文件均保持不变。
删除需要用户对当前文件有写权限
模糊删除:rm -rf *.doc
【15】创建文件夹:
mkdir
在当前目录下创建文件夹[test]:mkdir test
指定目录下创建文件夹[test]: mkdir /usr/local/test
-m
:用于对新建目录设置存取权限,也可以用 chmod 命令进行设置。eg:mkdir -m=r-- letter
-p
:需要时创建上层文件夹(或目录),如果文件夹(或目录)已经存在,则不视为错误。
注: 无法创建已存在的文件夹(不会跟windows一样创建后自动改名)
在想要创建目录的目标路径下你必须具有访问权限
【16】创建文件:
vi [文件名]
,然后 :wq保存退出 (文件名包括类型,如:a.txt)touch [文件名]
,然后可以用vi进行编辑 (文件名包括类型,如:a.txt)
【17】zip/unzip/tar:
命令名: zip
功能说明: 压缩文件。
语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工 作目录>][-ll][-n <字 尾字符串>][-t <日 期时间>][-<压 缩效率>][压 缩文件][文件...][-i <范本样式>][-x <范本样式>]
补充说明: zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具 有".zip"扩展名 的压缩文件。
参 数:
-A
调 整可执行的自动解压缩文件。
-b<工作目录>
指 定暂时存放文件的目录。
-c
替 每个被压缩的文件加上注释。
-d
从 压缩文件内删除指定的文件。
-D
压 缩文件内不建立目录名称。
-f
此 参数的效果和指定"-u"参 数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F
尝 试修复已损坏的压缩文件。
-g
将 文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h
在 线帮助。
-i<范本样式>
只 压缩符合条件的文件。
-j
只 保存文件名称及其内容,而不存放任何目录名称。
-J
删 除压缩文件前面不必要的数据。
-k
使 用MS-DOS兼容格 式的文件名称。
-l
压 缩文件时,把LF字符 置换成LF+CR字 符。
-ll
压 缩文件时,把LF+CR字 符置换成LF字符。
-L
显 示版权信息。
-m
将 文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串>
不 压缩具有特定字尾字符串的文件。
-o
以 压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q
不显 示指令执行过程。
-r
递 归处理,将指定目录下的所有文件和子目录一并处理。
-S
包 含系统和隐藏文件。
-t<日期时间>
把 压缩文件的日期设成指定的日期。
-T
检 查备份文件内的每个文件是否正确无误。
-u
更 换较新的文件到压缩文件内。
-v
显 示指令执行过程或显示版本信息。
-V
保 存VMS操作系统的文 件属性。
-w
在 文件名称里假如版本编号,本参数仅在VMS操 作系统下有效。
-x<范本样式>
压 缩时排除符合条件的文件。
-X
不 保存额外的文件属性。
-y
直 接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之 类的系统下有效。
-z
替 压缩文件加上注释。
-$
保 存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率>
压缩效率是一个介于1-9的 数值。
例 子:
例1. 压缩test.MYI:
[root@mysql test]# zip test1.zip test.MYI
adding: test.MYI (deflated 42%)
[root@mysql test]#ll
-rw-r--r-- 1 root root 1033755 09-24 10:03 test1.zip
压缩率为8的:
[root@mysql test]# zip test2.zip -8 test.MYI
adding: test.MYI (deflated 42%)
[root@mysql test]#ll
-rw-r--r-- 1 root root 1033451 09-24 10:03 test2.zip
例2. 将当前目录下的所有文件和文件夹全部压缩成test.zip文件,-r表示递归压缩子目录下所有文件:
[root@mysql test]# zip -r test.zip ./*
打包目录:
[root@mysql test]# zip test2.zip test2/*
例3. 删除压缩文件test1.zip中test.MYI文件
[root@mysql test]# zip -d test1.zip test.MYI
删除打包文件里面的目录下的文件:
[root@mysql test]# zip -d test2.zip test2/ln.log
deleting: tests/ln.log
例4. 向压缩文件中test1.zip中添加test. MYI文件:
[root@mysql test]# zip -m test1.zip test. MYI
例5. 压缩文件时排除某个文件:
[root@mysql test]# zip test3.zip tests/* -x tests/ln.log
命令名: unzip
功 能说明: 解压缩zip文 件
语 法: unzip [-cflptuvz][-agCjLMnoqsVX][-P <密 码>][.zip文 件][文件][-d <目录>][-x <文件>]
或 unzip [-Z]
补充说明: unzip为.zip压缩文件的解压缩程序。
参 数:
-c
将 解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f
更 新现有的文件。
-l
显 示压缩文件内所包含的文件。
-p
与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任 何的转换。
-t
检 查压缩文件是否正确。,但不解压。
-u
与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中 的其他文件解压缩到目录中。
-v
执 行是时显示详细的信息。或查看压缩文件目录,但不解压。
-z
仅 显示压缩文件的备注文字。
-a
对 文本文件进行必要的字符转换。
-b
不 要对文本文件进行字符转换。
-C
压 缩文件中的文件名称区分大小写。
-j
不 处理压缩文件中原有的目录路径。
-L
将 压缩文件中的全部文件名改为小写。
-M
将 输出结果送到more程 序处理。
-n
解 压缩时不要覆盖原有的文件。
-o
不 必先询问用户,unzip执 行后覆盖原有文件。
-P<密码>
使 用zip的密码选项。
-q
执 行时不显示任何信息。
-s
将 文件名中的空白字符转换为底线字符。
-V
保 留VMS的文件版本信 息。
-X
解 压缩时同时回存文件原来的UID/GID。
[.zip文件]
指定.zip压缩文件。
[文件]
指定 要处理.zip压缩文 件中的哪些文件。
-d<目录>
指 定文件解压缩后所要存储的目录。
-x<文件>
指 定不要处理.zip压 缩文件中的哪些文件。
-Z
unzip -Z
等 于执行zipinfo
指 令。
例 子:
例1: 将压缩文件text.zip在当前目录下解压缩。
[root@mysql test]# unzip test.zip
例2: 将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
[root@mysql test]# unzip -n test.zip -d /tmp
例3: 查看压缩文件目录,但不解压。
[root@mysql test]# unzip -v test.zip
例4: 将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件。
[root@mysql test]# unzip -o test.zip -d tmp/
使用 unzip "*.zip"
ls *.zip | xargs -n1 unzip
解压当前目录下的所有zip文件
命令名: tar
功 能说明: 压缩解压 文件或者目录
语 法: tar [主选项+辅选项] 文件或者目录
补充说明: 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
参 数:
[主选项]:
-c
: 建立压缩档案
-x
:解压
-t
:查看内容
-r
:向压缩归档文件末尾追加文件
-u
:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
[辅助选项]:
-z
:有gzip属性的
-j
:有bz2属性的
-Z
:有compress属性的
-v
:显示所有过程
-O
:将文件解开到标准输出
[下面的参数-f是必须的]
-f
: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
例 子:
例1: 将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -cf all.tar *.jpg
例2: 将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -rf all.tar *.gif
例3: 更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -uf all.tar logo.gif
例4: 列出all.tar包中所有文件,-t是列出文件的意思
# tar -tf all.tar
例5: 解出all.tar包中所有文件,-x是解开的意思
# tar -xf all.tar
常用命令:
压缩
tar -cvf jpg.tar *.jpg
将目录里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg
将目录里所有jpg文件打包成jpg.tar后,并将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg
将目录里所有jpg文件打包成jpg.tar后,并将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg
将目录里所有jpg文件打包成jpg.tar后,并将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg
rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg
zip格式的压缩,需要先下载zip for linux
解压
tar -xvf file.tar
解压 tar包
tar -xzvf file.tar.gz
解压tar.gz
tar -xjvf file.tar.bz2
解压 tar.bz2
tar -xZvf file.tar.Z
解压tar.Z
unrar e file.rar
解压rar
unzip file.zip
解压zip
总结:(不同格式文件解压对应的不同命令)
1、.tar 用 tar -xvf
解压
2、.gz 用 gzip -d
或者gunzip
解压
3、.tar.gz和.tgz 用 tar -xzf
解压
4、.bz2 用 bzip2 -d
或者用bunzip2
解压
5、.tar.bz2用tar -xjf
解压
6、.Z 用 uncompress
解压
7、.tar.Z 用tar -xZf
解压
8、.rar 用 unrar e
解压
9、.zip 用 unzip
解压
【18】显示目标列表:
命令名: ls
参数:
-a
:显示所有档案及目录(ls内定将档案名或目录名称为.
的视为隐藏,不会列出);
-A
:显示除隐藏文件.
和..
以外的所有文件列表;
-C
:多列显示输出结果。这是默认选项;
-l
:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;;
-F
:在每个输出项后追加文件的类型标识符,具体含义:*
表示具有可执行权限的普通文件,/
表示目录,@
表示符号链接,|
表示命令管道FIFO,=
表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b
:将文件中的不可输出的字符以反斜线 \
加字符编码的方式输出;
-c
:与-lt
选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与-l
选项连用时,则排序的一句是文件的状态改变时间;
-d
:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f
:此参数的效果和同时指定aU
参数相同,并关闭lst
参数的效果;
-i
:显示文件索引节点号(inode)。一个索引节点代表一个文件;
--file-type
:与-F
选项的功能相同,但是不显示*
;
-k
:以KB(千字节)为单位显示文件大小;
-m
:用“,”号区隔每个文件和目录的名称;
-n
:以用户识别码和群组识别码替代其名称;
-r
:以文件名反序排列并输出目录内容列表;
-s
:显示文件和目录的大小,以区块为单位;
-t
:用文件和目录的更改时间排序;
-L
:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R
:递归处理,将指定目录下的所有文件及子目录一并处理;
--full-time
:列出完整的日期与时间;
--color[=WHEN]
:使用不同的颜色高亮显示不同类型的。
【19】复制:
命令名:cp
例子:
//由a.txt文件,获得了备份文件a.txt.bak。
cp a.txt a.txt.bak
//如果要拷贝目录,需要使用参数-R:
cp -R a b
【20】文件剪切 :
命令名: mv
这个命令是move单词的缩写,可以用来剪切/重命名文件、目录。
这个命令最初就是为了剪切操作,但从其作用来看,用来重命名再合适不过了!
例子:
mv a c
a可以是文件,也可以是目录,上述操作后,a文件/目录就变成了c文件/目录!
【21】查看文件行数等信息:
命令名:wc
(统计指定文件中的字节数、字数、行数, 并将统计结果显示输出)
例子:
wc -l [filename] 查看文件里有多少行
wc -w [filename] 看文件里有多少个字。
wc -L [filename] 文件里最长的那一行是多少个字。
说明:
该命令统计给定文件中的字节数、字数、行数。
如果没有给出文件名,则从标准输入读取。
wc
同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:(这些选项可以组合使用)
- c
统计字节数。
- l
统计行数。
- w
统计字数。
输出列的顺序和数目不受选项的顺序和数目的影响。
总是按下述顺序显示并且每项最多一列。
行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名。
例子:
$ wc - lcw file1 file2
4 33 file1
7 52 file2
11 11 85 total
//省略任选项-lcw,wc命令的执行结果与上面一样。
使用ls -lht
命令显示当前目录下的所有文件,其中有一列就是显示这个文件的大小。
如果要看一个文件夹的大小,可以用du -sh *
【22】指定行开始查看文件:
查找内容所在行数: 通过命令cat [filename] | grep -n "[内容]"
命令打印出要查找的内容的起始行号和结束行号
从指定行开始查看:
- 从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000
- 显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000
- 只查看文件的第5行到第10行
sed -n '5,10p' filename
解析:
tail -n 1000
:显示最后1000行
tail -n +1000
:从1000行开始显示,显示1000行以后的
head -n 1000
:显示前面1000行
【23】权限:
root
是管理员,root权限就是管理员权限,使用管理员登录既有
sudo
是管理员分配给其他用户的权限,可以包括全部的root权限
[root@localhost /]# useradd Daniel #创建一个用户
[root@localhost /]# passwd Daniel #设置密码
[root@localhost /]# su Daniel #切换用户到Daniel
bash-4.1$ #切换成功 :
#给权限
#Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
#使用权限:在 /etc/sudoers 中有出现的使用者。这里可以直接修改sudoers,也可以额使用visudo,推荐使用visudo,可以判断你的语法是否正确
root@localhost /]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Daniel ALL=(ALL) ALL #这是我们新添加的一行,意思是Daniel这个用户,可以使用所有的命令,使用单个命令(比如useradd),可以将ALL改成/user/sbin/add