others-linux常用命令行
others-linux常用命令行
前篇
grep 查询
常用参数
- -c:显示匹配次数
- -i:忽略大小写差异
- -n:在行首显示行号
- -A:After的意思,显示匹配字符串后n行的数据
- -B:before的意思,显示匹配字符串前n行的数据
- -v:显示没有匹配行-A:After的意思,显示匹配部分之后n行
- -B:before的意思,显示匹配部分之前n行
- –color:以特定颜色高亮显示匹配关键字
示例
一般使用
1
2
3
4
5
6
7
8
9$ grep -inr --color "1116" a_temp.lua
379:Duke009 = 1116,
382:rmg-rummy09-1116
$ grep -inr --color "www.*com" a_temp.lua // 正则
32:apk: https://www.rmgstation.com/download/
222:--- urltest: http://www.baidu.com/s?wd=hello&ag=world
正则匹配
- Linux grep基本用法与正则表达式 - https://blog.csdn.net/xy010902100449/article/details/51426354
- vim 和grep 正则表达式相似和区别 - https://www.cnblogs.com/mengyu/p/6653858.html
正则表达式由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
vim元字符 | grep 元字符 | 说明 |
---|---|---|
^ |
^ |
匹配输入字符串的开始位置 |
$ |
$ |
匹配输入字符串的开始位置 |
* |
* |
匹配前面的子表达式0次或n次(n>0) |
\+ |
\+ |
匹配前面的子表达式1次或n次(n>1) |
\? |
\? |
匹配前面的子表达式0次或1次 |
\{n} |
\{n\} |
匹配确定的 n 次(n>=0) |
\{n,} |
\{n,\} |
最少匹配n 次(∞>n>=0) |
\{n,m} |
\{n,m\} |
最少匹配 n 次且最多匹配 m 次(n<m) |
\< |
\< |
匹配单词词首 |
\> |
\> |
匹配单词词尾 |
| |
或字符,如:x|y 匹配x或者y | |
[abc] |
[abc] |
字符集合。匹配所包含的任意一个字符 |
[^abc] |
[^abc] |
表示匹配除方括号中字符之外的任意字符。 |
[a-z] |
[a-z] |
字符范围,匹配a-z任意字符 |
[^a-z] |
[^a-z] |
表示匹配除方括号中a-z字符之外的任意字符。 |
\d |
---------- |
匹配一个数字字符。等价于 [0-9] |
\D |
---------- |
匹配非数字字符 |
\w |
\w |
匹配0-9,A-Z,a-z |
\W |
\W |
匹配非0-9,A-Z,a-z |
find 查找文件
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
1 | $ find . -name "*.c" |
将目前目录其其下子目录中所有一般文件列出
1 | $ find . -type f |
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
1 | $ find . -ctime -20 |
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
1 | $ find /var/log -type f -mtime +7 -ok rm {} \; |
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
1 | $ find . -type f -perm 644 -exec ls -l {} \; |
cat
-n 或 –number:由 1 开始对所有输出的行数编号。
-v 或 –show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 –show-ends : 在每行结束处显示 $。
-T 或 –show-tabs: 将 TAB 字符显示为 ^I。
-A, –show-all:等价于 -vET。
-e:等价于”-vE”选项;
-t:等价于”-vT”选项;
1 | $ cat -n aaa.txt |
tail
- Linux tail 命令 - https://www.runoob.com/linux/linux-comm-tail.html
- tail 命令 - https://www.cnblogs.com/peida/archive/2012/11/07/2758084.html
显示命令
显示最后 10 行内容, 直接 tail 文件
1
$ tail aaa.txt
-f 循环读取, 不断刷新, 实时显示新增内容
1
$ tail -f aaa.txt
指定行显示
显示文件末尾 5行 内容
1
$ tail -n 5 aaa.txt
显示第五行之后的内容
1
$ tail -n +5 aaa.txt
curl
查看状态码
1
2$ curl -s -w "%{http_code}\n" http://www.gstatic.com/generate_204
204- http_code 就是状态码占位符
kill
列出 kill 命令相关的信号表示
1 | $ kill -l |
命令格式: kill -9 PID
信号编号 | 信号名 | 解释 |
---|---|---|
0 | EXIT | 程序退出时收到该信号 |
1 | HUP | 挂掉电话线或中断连接的挂起信号, 这个信号也会造成某些进程在没有终止的情况下重新初始化 |
2 | INT | 表示结束进程, 但并不是强制性的, 常用的 ctrl+c 组合键就是发出一个 kill -2 的信息 |
3 | QUIT | 退出 |
9 | KILL | 杀死进程, 即强制结束进程 |
11 | SEGV | 段错误 |
15 | TERM | 正常结束进程, 是 kill 命令的默认信号 |
whereis 查看命令所在路径
查找文件
1 | $ whereis -b go |
还一个 which
1 | $ which go # 安装位置 |
top 进程信息
Linux top命令用于实时显示 process 的动态
所有进程的信息, 直接 top
1
$ top
指定进程的信息
1
2$ top -p 139
//显示进程号为139的进程信息,CPU、内存占用率等指定更新周期
1
2$ top -d 3
//表示更新周期为3秒根据内存, cpu 等排序
1
2
3
4
5
6
7
8
9$ top -o %MEM // 内存排序
$ top -o %CPU // cpu 排序
- 指定服务信息
```json
$ top -b -n 1 | grep test_
915262 root 20 0 1236780 16088 9332 S 0.0 0.4 0:37.42 test_feishu_bot
926767 root 20 0 1602564 7368 6288 S 0.0 0.2 0:00.03 test_flag.test
tar 解压缩
1 | // 压缩 |
zip 解压缩
1 | // 压缩 |
scp 上下行文件
1 | # 下行到本地 /c/Users/Administrator |
ps 查看后台程序 pid
使用命令:
ps -aux
, 查看 aaa 程序的进程号1
2
3$ ps -aux | grep aaa
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 24446 0.0 0.1 14728 1144 pts/2 S+ 11:58 0:00 grep --color=auto aaa
netstat 查看进程端口
netstat 命令
1
2
3
4root@v2ray:~/v2ray# netstat -naptln | grep docker # 指定 关键字
tcp6 0 0 :::6306 :::* LISTEN 2060/docker-proxy
tcp6 0 0 :::28017 :::* LISTEN 20268/docker-proxy
tcp6 0 0 :::7379 :::* LISTEN 2046/docker-proxy
如果没有这个 netstat 命令,则安装net-tool
1 $ apt-get install net-tools
ps 命令
1
2
3
4root@v2ray:~/v2ray# ps -auxf | grep v2ray
root 13704 0.0 1.9 720688 19928 pts/0 Sl Jan13 0:23 | \_ ./v2ray -config config-india02-business.json
root 13714 0.0 2.2 720688 22280 pts/0 Sl Jan13 0:24 | \_ ./v2ray -config config-india01.json
root 25748 0.0 0.1 14736 1040 pts/0 S+ 07:58 0:00 | \_ grep --color=auto v2ray
查看正在运行的服务
命令 ps auxw
, 必要时可以加上 | grep xxx 查询xxx服务是否在运行
1 | root@7c1a2201d46a:~# ps auxw |
查看某个服务占用的端口
两种方式
使用 netstat 命令
1
2
3root@itsself:~# netstat -naptln | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 428455/redis-server
tcp6 0 0 ::1:6379 :::* LISTEN 428455/redis-server使用 ps 和 lsof 命令
1
2
3
4
5
6
7root@itsself:~# ps aux | grep redis
redis 428455 0.0 0.1 50376 7452 ? Ssl 10:13 0:09 /usr/local/bin/redis-server 0.0.0.0:6379
root 431221 0.0 0.0 9032 716 pts/0 S+ 14:09 0:00 grep --color=auto redis
root@itsself:~# lsof -i -P -n | grep 428455
redis-ser 428455 redis 6u IPv4 5004741 0t0 TCP *:6379 (LISTEN)
redis-ser 428455 redis 7u IPv6 5004742 0t0 TCP [::1]:6379 (LISTEN)
查看端口被哪个服务占用
和 查看某个服务占用的端口 是一样的, 就是过滤条件设为 端口
1
netstat -atulnp | grep 6379
查看所有在用端口
a
1
2
3
4
5
6$ lsof -i -P -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-n 427 systemd-network 17u IPv4 16092 0t0 UDP 172.18.172.236:68
systemd-r 448 systemd-resolve 12u IPv4 17111 0t0 UDP 127.0.0.53:53
systemd-r 448 systemd-resolve 13u IPv4 17112 0t0 TCP 127.0.0.53:53 (LISTEN)
查看建立链接的服务
ss 命令
1
2
3
4$ ss -tonp state established
Recv-Q Send-Q Local Address:Port Peer Address:Port Process
0 0 127.0.0.1:5001 127.0.0.1:34136 users:(("v2ray",pid=914888,fd=18)) timer:(keepalive,10sec,0)
0 0 172.18.172.236:6301 113.89.32.25:58487 users:(("nginx",pid=1414877,fd=80))或者 netstat 命令
1
2
3
4
5
6
7$ netstat -tonpnetstat -tonp | grep ESTABLISHED
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
root@itssz:~# netstat -tonp | grep ESTABLISHED
tcp 0 0 127.0.0.1:5001 127.0.0.1:42630 ESTABLISHED 914888/v2ray keepalive (13.17/0/0)
tcp 0 0 172.18.172.236:443 183.14.28.120:11701 ESTABLISHED 1414878/nginx: work off (0.00/0/0)
rsync
服务器之间传输文件好用, 可以传输文件或文件夹
1
rsync -avzP ./aaa.test root@aaa.bbb.cn:~/aaa.test
-a
:归档模式(archive mode)。这是一个组合选项,相当于-rlptgoD
。它会递归地传输目录,并保持文件的属性,包括权限、时间戳、符号链接等。-r
:递归传输目录。-l
:保持符号链接。-p
:保持文件权限。-t
:保持文件时间戳。-g
:保持文件组。-o
:保持文件所有者。-D
:保持设备文件和特殊文件。
-v
:详细模式(verbose)。在传输过程中显示详细信息。-z
:压缩文件数据(compress)。在传输时对文件数据进行压缩,以减少传输的数据量。-P
:这个选项实际上是两个选项的组合:--partial
:保留部分传输的文件,以便下次可以从中断的地方继续传输。--progress
:显示传输进度信息。
nslookup - 查看域名 cname 链
nslookup 命令
1
2
3
4
5
6
7
8$ nslookup aaa.bbb.cn
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: ccc.eee.cn
Address: 1.2.3.4
Aliases: aaa.bbb.cn
df - 查看硬盘使用情况
命令
1
2
3
4
5
6
7# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 380M 680K 379M 1% /run
/dev/vda1 99G 28G 67G 30% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
telnet
测试某个 tcp 端口是否连通
1
2
3
4
5
6
7
8
9
10$ telnet <hostname> <port>
// 成功输出
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
// 失败输出
Trying 192.168.1.100...
telnet: Unable to connect to remote host: Connection refused<hostname>
:目标主机的 IP 地址或域名。<port>
:目标服务运行的端口号。
关闭
telnet
会话: 如果telnet
成功连接到端口,可以按下Ctrl + ]
,然后输入quit
以退出telnet
会话。
chown 修改文件夹所有权
命令
1
$ chown itsuser001:itsuser001 game_rgame_www