在前面的文章中,截止到 微服务系列:分布式日志 ELK 搭建指南 这篇,我们终于算是将微服务系列给基本学完了,一时间难以决定接下来要写些什么东西。
想了想还是决定写几篇 Linux
相关命令的文章,毕竟平时也经常去 Linux
服务器上部署项目,你可能会问,部署这块不应该是运维的工作嘛?不好意思,小公司没有专业运维,都是我们开发自己来。所以,熟悉一些常用的 Linux
命令还是很有必要的。
当然,最主要的目的还是自己写下来,印象会更深刻,并且方便以后查阅,毕竟收藏的别人的文章基本都在收藏夹里吃灰哈哈,不如自己动手写下来。本篇可能暂时不会放太多命令,但应该会持续更新的。
一、文件和目录
贴一张 Linux
系统的各个目录的含义,图片来自 2万字系统总结,带你实现 Linux 命令自由?
1. cd 命令
最基本的、最常用的命令之一,用于切换目录,参数既可以是绝对路径,也可以是相对路径。
2. ls 命令
同样是最基本、最常用的命令之一,list 的意思,查看当前文件夹下的内容
,它的参数很多,只贴几个较为常用的:
注:这些参数可以组合使用,比如
3. cp 命令
用于复制文件,copy 的意思,常用参数如下:
例如:
4. mv 命令
用于移动文件、目录、或者重命名,move 的意思,常用参数如下:
例如:
5. rm 命令
用于删除文件或目录,remove 的意思,由于 Linux
下没有回收站,一旦删除非常难恢复,因此需要谨慎操作,常用参数如下:
例如:
6. pwd 命令
显示当前目录的路径
7. which 命令
查看命令的可执行文件所在路径,例如:
8. du 命令
用于显示目录或文件的大小,disk usage 的意思,常用参数如下:
例如:
9. cat 命令
一次性显示文件所有内容,更适合查看小的文件,concatenate 的意思,更官方一点的说法是 用于连接文件并打印到标准输出设备上。
常用参数如下:
例如:
10. less 命令
分页显示文件内容,更适合查看大的文件。
快捷操作:
- 空格键:前进一页(一个屏幕);
-
b
键:后退一页; - 回车键:前进一行;
-
y
键:后退一行; - 上下键:回退或前进一行;
-
d
键:前进半页; -
u
键:后退半页; -
q
键:停止读取文件,中止 less
命令; -
=
键:显示当前页面的内容是文件中的第几行到第几行以及一些其它关于本页内容的详细信息; -
h
键:显示帮助文档; -
/
键:进入搜索模式后,按 n
键跳到一个符合项目,按 N
键跳到上一个符合项目,同时也可以输入正则表达式匹配。
例如:
还有一个命令 more
和 less
对应,只是 more
不能后退,日常使用中用 less
就够了。
11. find 命令
用于查找文件,它会去遍历你的实际硬盘进行查找,而且它允许我们对每个找到的文件进行后续操作,功能非常强大。
- 何处:指定在哪个目录查找,此目录的所有子目录也会被查找。
- 何物:查找什么,可以根据文件的名字来查找,也可以根据其大小来查找,还可以根据其最近访问时间来查找。
- 做什么:找到文件后,可以进行后续处理,如果不指定这个参数,
find
命令只会显示找到的文件。
find
的使用也相对较为复杂,参数也比较多,我也不想全部列出来,只贴几个实际使用的例子好了:
其他还有 根据文件最近访问时间查找、操作查找结果
等一般也用不到,就不贴了。
12. file 命令
这个命令比较简单,用于辨识文件类型。例如:
13. tar 命令
该命令用于对文件进行打包或者解压缩,常用参数如下:
tar
的相关参数也非常多,看下面几个例子也就简单的会用了:
除了 tar
命令之外,linux
还有 zip/unzip
命令来压缩或者解压 .zip
文件(zip
压缩文件一般来自于 windows
操作系统)
如果没有这两个命令,可以安装一下:
14. head 命令
显示文件的开头几行(默认是10行)
参数:
-
-n
指定行数 head -n 5 gc.log
15. tail 命令
显示文件的结尾几行(默认是10行)
参数:
-
-n
指定行数 tail -n 5 gc.log
-
-f
会每过1秒检查下文件是否有更新内容,tail -f gc.log
实际开发中,我们经常去服务器上查看系统错误日志,一般会这样用
二、用户与权限
这两个东西实际上我还真用到过,比如说 linux
系统上安装的 elasticsearch
、kibana
等需要用非 root
用户才能启动。
1. su 命令
用于变更为其他使用者的身份,switch user 的意思。
2. useradd + passwd 命令
-
useradd
添加新用户 -
passwd
修改用户密码
这两个命令需要 root
用户权限
3. userdel 命令
删除用户,需要 root
用户权限
4. sudo 命令
以 root
身份运行命令
5. chown 命令
改变文件的所有者,需要 root
身份才能运行,参数:
- -R 递归设置子目录和子文件
6. chmod 命令
修改访问权限,常用参数:
- -R 递归地修改文件访问权限
这个命令还有一些深层次的东西,稍微复杂,我也不想再详细的讲解下去了,一般都是这样使用:
三、文本操作
说到文本操作,最常用的还是 grep
命令了,在工作中进行部署项目的时候,需要 kill 掉某个进程时用到这个命令来查找进程号。
1. grep 命令
grep
命令用于查找文件里符合条件的字符串,换句话说是在文件中查找关键字,并显示关键字所在行。
例如:
常用参数:
- -i
忽略大小写,
grep -i path /etc/profile - -n
显示行号,
grep -n path /etc/profile - -v
只显示搜索文本不在的那些行,
grep -v path /etc/profile - -r
递归查找,
grep -r hello /etc,Linux 中还有一个 rgrep 命令,作用相当于
grep -r
四、重定向、管道
学习重定向,我们需要了解 Linux
中的 标准输入
、标准输出
、标准错误输出
。
名称 | 代码 | 操作符 |
标准输入(stdin) | 0 | < 或 << |
标准输出(stdout) | 1 | >, >>, 1> 或 1>> |
标准错误输出(stderr) | 2 | 2> 或 2>> |
1. 输出重定向 >
>
表示重定向到新的文件,我们在运行 jar
包的时候,经常会将日志重定向到一个特定目录的特定文件中,例如:
注意:
使用
>
要注意,如果输出的文件不存在它会新建一个,如果输出的文件已经存在,则会覆盖。因此执行这个操作要非常小心,以免覆盖其它重要文件。
2. 输出重定向 >>
这个表示重定向到文件末尾,即将内容追加到文件的末尾,而不像 >
命令会直接覆盖文件内容。同样的,如果文件不存在,也会被创建。
所以,对于我们的项目的启动的日志,最好是使用 >>
命令,建议
3. 输出重定向 2>
标准错误输出,例如:
启动后,标准输出写入文件 cloud-system.log
,2> error.log
当发生错误时会写入 error.log
文件中。
4. 输出重定向 2>>
标准错误输出(追加到文件末尾)类似 >>
。
5. 输出重定向 2>&1
标准输出和标准错误输出都重定向都一个地方
6. 管道 |
把两个命令连起来使用,一个命令的输出作为另外一个命令的输入。
说实话,管道这个命令的功能还是很强大的,我们直接来看例子
【实例 1】
此命令功能是查看文件 gc.log.00
是否存在于当前目录下。
即将 ls
输出的内容当做 grep
命令的输入。
【实例 2】
使用管道将 cat 命令的输出作为 less 命令的输入,这样就可以将 cat 命令的输出每次按照一个屏幕的长度显示。
【实例 3】
这个命令平时使用的还是比较多的,ps -ef
命令是列出所有进程的意思,这个命令的意思就是 查找出和 cloud-system.jar 有关的进程
五、进程
1. ps 命令
用于显示当前系统中的进程,英文全拼: process status
。ps
命令显示的进程列表不会随时间而更新,是静态的,是运行 ps
命令那个时刻的状态或者说是一个进程快照。
常用参数:
-
-ef
列出所有进程; -
-u
列出此用户运行的进程; -
-aux
通过 CPU
和内存使用来过滤进程 ps -aux | less
; -
-aux --sort -pcpu
按 CPU
使用降序排列, -aux --sort -pmem
表示按内存使用降序排列 -
-axjf
以树形结构显示进程, ps -axjf
它和 pstree
效果类似。
在 管道
中的【实例 3】中,我们用到了这个命令,是非常常用的。
2. top 命令
获取进程的动态列表。
- 展示的这些进程是按照使用处理器
%CPU
的使用率来排序的。
3. kill 命令
结束一个进程, kill + PID
。
4. & 命令
启动后台进程,它的缺点是后台进程与终端相关联,一旦关闭终端,进程就自动结束了。
5. nohup 命令
用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。英文全称:no hang up
,
nohup
命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out
的文件到当前目录下
nohup
命令也可以和 &
结合使用,后台启动并可以退出终端,程序运行不会中断。
6. jobs 命令
显示当前终端后台进程状态。
注意:
jobs 是查看当前终端的后台进程状态,如果你退出终端,再次连接终端则看不到上一个被关闭终端的后台进程,但其实进程还在。
六、系统
1. halt 命令
关闭系统,需要 root
身份。
2. reboot 命令
重启系统,需要 root
身份。
3. poweroff
直接运行即可关机,不需要 root
身份。
暂时写到这里,后面应该会继续补充的。
文章参考:2万字系统总结,带你实现 Linux 命令自由