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命令

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


在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值