Linux 常用命令
这篇文章主要记录在工作中用到的常用 Linux 命令。
服务相关命令
1. 查看所有的服务
1 | systemctl list-units --type=service |
2. 查看当前运行的服务
1 | systemctl list-units --type=service --state=running |
服务文件目录: /usr/lib/systemd/system
查找文件
1. 按照文件名查找文件 -name file name
1 | # 在/dir目录及其子目录下面查找名字为filename的文件 |
2. 按照文件的更改时间来查找文件 -mtime -n +n -n 表示文件更改时间距现在 n 天以内,+n 表示文件更改时间距现在 n 天以前。
1 | # 在系统根目录下查找更改时间在5日以内的文件 |
3. 按照类型查找文件 -type 查找某一类型的文件,诸如: b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。
1 | # 在/etc目录下查找所有的目录 |
查找文件内容
1. 查询且忽略大小写
1 | grep -i exception |
2. 指定上下文 用 grep -A,-B,-C 来查看after/before/around 行 -A, 显示匹配后N行 -B, 显示匹配前N行 -C, 显示匹配前后N行
3. 搜索所有的文件及子目录
1 | grep -r exception |
文件打包命令
1. tar命令
1 | tar [-j|-z] [cv] [-f 建立的文件名] filename... <==打包不压缩 |
选顷不参数: -c :建立打包文件,可搭配 -v 来察看过程中被打包的文件名(filename) -t :察看打包文件的内容有哪些文件名,重点在察看『文件名』就是了 -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。 -j :透过 bzip2 的支持迚行压缩/解压缩:此时文件名最好为 .tar.bz2 -z :透过 gzip 的支持迚行压缩/解压缩:此时文件名最好为 .tar.gz -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来! -f filename:-f 后面要被处理的文件名!建议 -f 单独写一个参数! -C 目录 :这个参数用在解压缩,若要在特定目录解压缩,可以使用这个参数。 其他会使用到的参数介绍: -p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 -m : 使用当前时间更新文件的修改时间 -P(大写) :保留绝对路径,亦即允讲备份数据中含有根目录 --exclude=FILE:在压缩的过程中,不要将 FILE 打包!
2. 打包
1 | tar -zpcv -f etc.tar.gz etc |
3. 解压缩
1 | tar -xzvf etc.tar.gz -C 欲解压缩的目录 |
4. unzip命令
1 | unzip etc.zip -d 目录 |
端口查看
1. 查看指定端口
1 | lsof -i :8080 |
2. 查看进程
1 | lsof -p pid |
3. 查看某端口的连接情况
1 | netstat -anp| grep port |
curl命令
-d参数用于发送 POST 请求的数据体。 1
2
3$ curl -d'login=emma&password=123'-X POST https://google.com/login
# 或者
$ curl -d 'login=emma' -d 'password=123' -X POST https://google.com/login
使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。
-e参数用来设置 HTTP 的标头Referer,表示请求的来源。 1
curl -e 'https://google.com?q=example' https://www.example.com
1
curl -H 'Referer: https://google.com?q=example' https://www.example.com
-H参数添加 HTTP 请求的标头。 1
$ curl -H 'Accept-Language: en-US' https://google.com
1 | $ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com |
上面命令添加两个 HTTP 标头。 1
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
-v参数输出通信的整个过程,用于调试。 1
$ curl -v https://www.example.com
1
$ curl --trace - https://www.example.com
-X参数指定 HTTP 请求的方法。 1
$ curl -X POST https://www.example.com
tcpdump 命令
tcpdump 命令常用参数如下: 1
2
3
4
5
6
7
8
9$ tcpdump -i eth0 -w output_file -nn -s0 -v tcp port 80
-i : 选择要捕获的接口,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该系统上只有一个网络接口,则无需指定。
-w : 写入到指定文件;
-nn : 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度。
-s0 : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number,number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
-v : 使用 -v,-vv 和 -vvv 来显示更多的详细信息,通常会显示更多与特定协议相关的信息。
-A : 表示使用 ASCII 字符串打印报文的全部数据,这样可以使读取更加简单,方便使用 grep 等工具解析输出内容
tcp port 80 : 这是一个常见的端口过滤器,表示仅抓取 80 端口上的流量,通常是 HTTP
top命令
在top命令执行过程中可以输入以下命令对结果进行调整。 1 监控每个逻辑CPU的状况 c 切换显示命令名称和完整命令行。 M 根据驻留内存大小进行排序。 P 根据CPU使用百分比大小进行排序。 E 切换内存单位 Ctrl+L 擦除并且重写屏幕。 h或者? 显示帮助画面,给出一些简短的命令总结说明。