linux命令
linux命令查询页 (opens new window)
# shell特殊变量
# 前一个命令的参数,比如创建目录并打开 mkdir -p a/b/c && cd $_
$_
1
2
3
2
3
# linux换源、centos换源
centos7
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache
sudo yum update -y # 验证是否换源成功
1
2
3
4
5
2
3
4
5
非阿里云服务器,其他厂商云服务器使用阿里云镜像
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
sudo yum clean all
sudo yum makecache
sudo yum update -y # 验证是否换源成功
1
2
3
4
5
6
2
3
4
5
6
# 创建用户、密码
useradd es # 创建用户es
echo "password" | passwd --stdin es # 设定es用户的密码是password
passwd docker # 隐式修改docker密码
passwd -l es # 锁定es用户
passwd -u es # 解除对es的锁定
passwd -d docker # 清除docker用户的密码
passwd -S docker # 显示docker用户的密码状态
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 文件和目录列表
# -F区分文件和目录,以/结尾就是目录,以*结尾就是可执行文件;
ls -F
# -a列出所有文件,以.开头就是隐藏文件
ls -a
# -l展示更多信息,-h显示容量,带上具体大小单位
ls -lh
# 过滤器,?代表单个,*代表零个或多个
ls -l my_sc?pt
ls -l my_sc*pt
# 通配符 [ai]代表a或者i;[a-i]代表a到i;[!a]代表不是a的都选上
ls -l my_scr[ai]pt
ls -l my_scr[a-i]pt
# 创建多级目录并打开
mkdir -p a/b/c && cd $_
# 或者在bashrc里面添加自定义函数
vim ~/.bashrc
mkcd () {
mkdir -p "$"
cd "$"
}
source ~/.bashrc
# 创建多个目录
mkdir -p a b c && ls -F
# 创建文件
touch new_file
# 改变文件的修改时间
touch -a new_file && ls -l
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 查看占用cpu/内存的进程,并找到进程运行位置
top # shift+p,按照cpu占用排序,找到pid
ls -l /proc/[pid]/exe
top # shift+m,按照内存占用排序,找到pid
ls -l /proc/[pid]/exe
1
2
3
4
5
2
3
4
5
# 查看文件以及查找文件
# 查看文件类型
file my_file
# 查看文件,给所有行都加上行号
cat -n text1
# 只给有文本的行加上行号(非空行加上行号)
cat -b text1
# 根据名字查找文件,在/目录下查找名字是tong的文件
find / -name tong
# 查找根目录下大于1G的文件
find / -type f -size +1G
find / -type f -size +100M
# 在查询大于1G文件的同时,显示创建者、size(以b为单位)、修改日期、路径;
find / -type f -size +1G -print0 | xargs -0 ls -l
# 查询大文件并排序,显示文件大小和路径,如需查看详情信息,将 du -h 改为 ls -l 即可
find / -type f -size +1G -print0 | xargs -0 du -h | sort -nr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查找文本或内容
# 查找一个字符串在多个文件中的出现情况:
grep "search_string" file1 file2 file3
#其中,search_string是您要查找的字符串,file1、file2和file3是您要在其中查找字符串的文件名。
如果您要在一个目录中查找所有文件中的字符串,则可以使用grep命令的-r选项,如下所示:
bash
Copy code
grep -r "search_string" /path/to/directory
这将在/path/to/directory目录中递归搜索并打印所有包含search_string的行。
如果您希望在查找结果中显示匹配行所在的文件名和行号,则可以使用grep命令的-n和-H选项,如下所示:
bash
Copy code
grep -rnH "search_string" /path/to/directory
这将在/path/to/directory目录中递归搜索并打印所有包含search_string的行,同时显示每个匹配行所在的文件名和行号。
除了grep命令之外,还有其他一些工具可以帮助您查找文本内容,如ack和ag等。这些工具通常比grep命令更快和更灵活。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 防火墙相关命令
sudo systemctl status firewalld
sudo systemctl start firewalld
sudo systemctl stop firewalld
1
2
3
2
3
# 防火墙端口
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=端口号/协议 --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="59.42.120.160" port protocol="tcp" port="15027" accept' --permanent
sudo firewall-cmd --remove-port=端口号/协议 --permanent
sudo firewall-cmd --remove-port=80/tcp --permanent
sudo firewall-cmd --reload
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 网络端口相关命令
# netstat命令用于显示网络连接、路由表和网络接口等信息。下面是一些常用的netstat命令及其用法:
# 用来自查的,查询本机的
netstat -a:显示所有连接和监听端口。
netstat -t:显示TCP连接。
netstat -u:显示UDP连接。
netstat -n:以数字形式显示地址和端口号。
netstat -p:显示进程名称和进程ID。
netstat -l:显示监听端口。
netstat -s:显示各种网络统计信息。
# 列出正在监听的网路服务
netstat -tunl
# 列出已连接的网络连接状态
netstat -tun
# 删除已建立或正在监听的连接
netstat -tunp
kill -9 pid
# 关闭某个端口的服务
# 1.找端口对应的服务
netstat -tnlp | grep 111 # 比如找到的是LISTEN 990/rpcbind
# 2.找服务对应的文件
which rpcbind # 比如找到的是/sbin/rpcbind
# 3.找文件对应的软件
rpm -qf /sbin/rpcbind # 比如找到的是rpcbind-0.2.0-8.e16.x86_64
# 4.查找时候有关闭方式
rpm -qc rpcbind | grep init # 比如找到的是/etc/rc.d/init.d/rpcbind
# 5.关闭
/etc/rc.d/init.d/rpcbind stop
# nmap命令用于扫描网络上的主机和端口,以便发现安全漏洞。下面是一些常用的nmap命令及其用法:
# 用来查非本机的设备
nmap IP地址:扫描指定IP地址上的所有端口。
nmap -p 端口号 IP地址:扫描指定IP地址上的指定端口。
# 扫描类型
nmap -sT IP地址:扫描TCP数据包已建立的连接。
nmap -sS IP地址:使用TCP数据包带有 SYN 卷标的数据。
nmap -sP IP地址:以Ping 的方式进行扫描。
nmap -sU IP地址:以UDP 的数据包格式进行扫描。
nmap -sO IP地址:以IP 的协议进行主机的扫描。
# 扫描参数
nmap -O IP地址:识别指定IP地址上的操作系统类型。
nmap -sV IP地址:识别指定IP地址上的服务和版本号。
# tcpdump命令用于捕获网络流量并分析协议。下面是一些常用的tcpdump命令及其用法:
tcpdump -i 网络接口:捕获指定网络接口上的所有流量。
tcpdump -n:以数字形式显示地址和端口号。
tcpdump -X:以十六进制和ASCII码显示数据包。
tcpdump -r 文件名:读取指定文件中的数据包。
# telnet命令用于测试网络连接和远程登录。下面是一些常用的telnet命令及其用法:
telnet IP地址 端口号:测试指定IP地址上的指定端口是否可用。
telnet IP地址:在指定IP地址上开启一个telnet会话。
telnet -l 用户名 IP地址:使用指定用户名登录指定IP地址。
# ping命令用于测试网络连接和检测网络延迟。下面是一些常用的ping命令及其用法:
ping IP地址:测试与指定IP地址的连接是否正常。
ping -c 次数 IP地址:指定测试次数。
ping -s 数据包大小 IP地址:指定数据包大小。
ping -i 时间间隔 IP地址:指定发送数据包的时间间隔。
# traceroute命令用于跟踪数据包在网络上的路径。下面是一些常用的traceroute命令及其用法:
traceroute IP地址:跟踪到指定IP地址的路径。
traceroute -n IP地址:以数字形式显示地址。
traceroute -w 延迟时间 IP地址:指定等待响应的最大时间。
traceroute -m 最大跳数 IP地址:指定最大跳数。
# iptables命令用于配置Linux系统的网络防火墙。下面是一些常用的iptables命令及其用法:
iptables -L:显示当前的防火墙规则。
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT:允许指定端口的TCP连接。
iptables -A INPUT -p udp --dport 端口号 -j ACCEPT:允许指定端口的UDP连接。
iptables -A INPUT -s IP地址 -j DROP:拒绝指定IP地址的连接。
iptables -A INPUT -i 网络接口 -j DROP:拒绝指定网络接口的连接。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 查看端口通不通
# 随系统自启动服务
# 查看rpcbind是否有开机自启动
chkconfig --list | grep rpcbind
# 将其设置为不随系统自启动
chkconfig --level 35 rpcbind off
# 关闭现在已启动的服务
/etc/init.d/rpcbind stop
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 文件拷贝
# linux如何将文件稳定地拷贝到远程的机子上
scp [可选参数] [源文件或目录] [目标地址]
# -r:递归拷贝整个目录。
# -P:指定远程服务器的端口号。
# -p:保留原文件的修改时间、访问时间和权限
# 将本地的文件 localfile.txt 拷贝到远程机器 192.168.1.100 的 /home/user 目录下
scp localfile.txt username@192.168.1.100:/home/user/
# 要递归拷贝整个目录,可以加上 -r 参数
scp -r localdir/ username@192.168.1.100:/home/user/
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 日志
- tail
- head
- cat
- tac
- echo
# 从第3000行开始,显示1000行。即显示3000~3999行
cat test.log | tail -n +3000 | head -n 1000
# >意思是创建,>>是追加
1
2
3
4
5
2
3
4
5
# sed
sed编辑器不会修改文本文件的数据,只会将修改后的数据发送到stdout;查看原理的文本文件,依然时原始数据
# s命令用于替换,将前者用后者替换
echo "this is a dog" | sed 's/dog/cat/'
# 所有brown替换成green,但是实际上不生效,cat查看还是brown
sed 's/brown/green/' demo.txt
# -i 生效,cat查看变成green
sed -i 's/brown/green/' demo.txt
# 如果要执行多个sed命令,要用-e;下面就是将文件中所有brown和dog替换掉
sed -e 's/brown/green/; s/dog/cat/' demo.txt
# 如果要从文件中读取命令,要用-f;
sed -e 's/brown/green/; s/dog/cat/' demo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# sed进阶
1
2
2
# gawk
1
2
2
# gawk进阶
1
2
2
编辑 (opens new window)