Linux基础
说明
更新时间:2022/10/09 15:53
更新时间:2023/07/21 10:53
本文记录了Linux常用命令,系统Centos7,本文参考了菜鸟教程
本文仅为记录学习轨迹,如有侵权,联系删除
一、命令
(1)端口相关
(1)查看系统监听的所有端口
1、查看系统监听的所有端口,这个命令会显示出当前主机打开的所有端口
命令:netstat -aptn
2、只查看tcp端口
命令:netstat -antpl
3、只查看udp端口
命令:netstat -anupl
注意:
(1)这个是查看正在运行的程序的端口号,如果开放了端口,但是该端口没有用起来是查不到的
(2)具体参数可以看下面的表格
参数 | 说明 |
---|---|
a | 表示所有 |
n | 表示不查询dns |
t | 表示tcp |
u | 表示udp |
p | 表示查询占用的程序 |
(2)查看端口是否被占用
# 查看端口是否被占用,例如查看22端口是否被占用,被占用的话会显示占用的信息,否则就什么也不展示
netstat -tln | grep 22
(3)查看端口被哪个程序占用
# 查看具体端口被哪个程序占用,例如9001,需要提前安装lsof
lsof -i :8080
(4)根据对应端口杀死进程
#杀死进程需要找到进程的pid,可以通过" lsof -i :端口号 "查询到对应端口的pid,例如9001端口对应的pid
kill -9 27102
(5)查看特定端口号是否开放
# 例如查看9002端口是否开放,如果有输出就是已开放,没有就是未开放
netstat -tuln | grep 9002
(6)开放/关闭特定防火墙端口
# 开启端口之前记得先启动防火墙
sudo firewall-cmd --zone=public --add-port=9003/tcp --permanent
# 开启后记得刷新一下防火墙
sudo systemctl reload firewalld
# 关闭防火墙端口
firewall-cmd --remove-port=9003/tcp --permanent
# 记得刷新防火墙
sudo systemctl reload firewalld
–zone | 作用域 |
–add-port=3306/tcp | 添加端口,格式为:端口/通讯协议 |
–permanent | 永久生效,没有此参数重启后失效 |
(7)查看指定区域所有打开的防火墙端口
# 查看指定区域所有打开的端口
sudo firewall-cmd --zone=public --list-ports
(2)防火墙相关
(1)查看防火墙运行状态
# 如果有输出”active (running)“则表示防火墙开启中
systemctl status firewalld
(2)停止/启动/重启/刷新防火墙
# 停止防火墙
systemctl stop firewalld
# 启动防火墙
systemctl start firewalld
# 重启防火墙
systemctl restart firewalld
# 刷新防火墙
systemctl reload firewalld
二、shell
(1)shell脚本
shell脚本以.sh结尾,例如创建一个脚本hello.sh
#!/bin/bash
# (1) #表示注释
# (2)脚本第一行要”#!/bin/bash“开头,#!用来声明脚本由什么shell解释,否则使用默认shell
echo "hello world"
添加可执行权限
chmod +x hello.sh
执行该脚本
bash hello.sh
如果Linux运行文件时报错:bash: $‘\r’: command not found,这是因为Windows系统的文件换行使用的是\r\n,而Unix系统是\n,有以下解决方案
方式一
安装dos2unix来进行文件转换,转换命令如下
yum install -y dos2unix
dos2unix aaa.sh
转换成功后再重新执行aaa.sh
方式二
# 使用vim打开文件
vim aaa.sh
# 转换格式
:set ff=unix
# 保存文件
:wq
(2)打印消息
# 输出
echo "hello world"
(3)变量定义
#!/bin/bash
#注意不要有空格
name=zs
echo "name = "$name
(4)数组
#!/bin/bash
#(1)简单数组
# 方式一
array1=(a1 b1 c1 d1 e1)
# 方式二
array2[0]=a2
array2[1]=b2
array2[2]=c2
array2[3]=d2
array2[4]=e2
echo "array1[0] = "${array1[2]}
echo "array2[0] = "${array2[3]}
#(2)复杂数组(关联数组)
# 方式一
declare -A array3=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
# 方式二
declare -A array4
array4["google"]="www.google.com"
array4["runoob"]="www.runoob.com"
array4["taobao"]="www.taobao.com"
echo "array3["runoob"] = "${array3["runoob"]}
echo "array4["taobao"] = "${array3["taobao"]}
# (3)获取数组中的所有元素
#使用 @ 或 * 可以获取数组中的所有元素
echo "数组的元素为: ${array1[*]}"
echo "数组的元素为: ${array1[@]}"
echo "数组的元素为: ${array3[*]}"
echo "数组的元素为: ${array3[@]}"
# 在数组前加一个感叹号 ! 可以获取数组的所有键
echo "数组的键为: ${!array3[*]}"
echo "数组的键为: ${!array3[@]}"
# (4)获取数组的长度
echo "数组元素个数为: ${#array1[*]}"
echo "数组元素个数为: ${#array3[*]}"
(5)运算符
#!/bin/bash
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi
注意:条件表达式要放在方括号之间,并且要有空格,例如: [ a = = a== a==b] 是错误的,必须写成 [ $a == $b ]。
(6)test命令
(7)流程控制
#!/bin/bash
# (1)条件语句
echo "条件语句==================================================="
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
# (2)for循环
echo "for循环==================================================="
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
# (3)while循环
echo "while 循环==================================================="
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
# (4)until 循环:until 循环执行一系列命令直至条件为 true 时停止。
echo "until 循环==================================================="
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
# (5)break
echo "break 循环==================================================="
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done
# (6)continue
echo "continue==================================================="
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done