关机&重启 立即关机 shutdown -h now
一小时后关机 shutdown -h 1
立即重启 shutdown -r now
关机 halt
重启系统 reboot
将内存上的数据写入磁盘(建议重启或关机前都应该使用) sync
用户管理 添加用户 useradd [选项] 用户名
useradd 用户名
- 该命令会默认创建一个与用户同名的组,在/home/目录下可查看新建用户的家目录
useradd -d 目录 用户名
- 给新创建的用户指定家目录
useradd -g 用户组 用户名
- 给新创建的用户指定用户组
修改用户 usermod 选项 用户名
修改用户密码 passwd 用户名
删除用户 userdel 用户名
- 会保留home目录(一般采用此种方式)
userdel -r 用户名
- 同时删除home目录
查询用户 id 用户名image.png
解释:uid 是user ID(用户的ID) gid 是group ID(用户组的ID) groups:所在组名称
whoami 查看当前是哪个用户
切换用户 切进用户 su 用户名
回退用户 exit
注销用户 logout
用户组 添加组 groupadd 组名
删除组 groupdel 组名
修改组 usermod -g 组名 用户名
三个相关的文件 /etc/passwd
- 用户(user)的配置文件,记录用户的各种信息
Linux常用命令 - 图2
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow
- 口令的配置文
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:
警告时间:不活动时间:失效时间:标志
/etc/group
- 组(group)的配置文件,记录 Linux 包含的组的信息
Linux常用命令 - 图3
组名:口令:组标识号:组内用户列表
运行级别 临时修改运行级别 inittabl N N 表示运行级别的数子
0:关机;1:单用户;2:多用户状态无网络服务
3:多用户状态有网络服务;4:系统未使用;
5:图形界面;6:系统重启
永久修改运行级别
文件 新建文件夹 mkdir [-p] dirName -p参数实现创建多级目录
新建文件 touch fileName
> 和 >> > 输出重定向:会将原来的文件的内容覆盖。

| | | | >> 输出追加:不会覆盖原来文件的内容,而是追加到文件的尾部。
- 示例:ls >> a.txt 将当前目录的文件列表输出到当前目录的a.txt文件中 | | | | | | | | | | | | | ln | | | | 建立链接,存放链接其他文件的路径
* 语法:
- 创建软链接:ln -s filePath linkName
- 删除软链接:rm -rf linkName | | | | | | | | 注意: 使用软链接访问目录时,其实仍然是link所在目录,通过pwd可证实。 | | | | 传输 | | | | 上传 | | scp [-P port] [-r 开启传目录] 本地路径 user@ip:/远程路径 | | | | | | | | | | | | 下载 | | scp [-P] [-r] user@ip:远程路径 本地路径 | | | | | | | | | | 删 | 删除一个文件或目录 | | | | | rm [options] NAME
-i:删除前逐一询问确认
-f:强制删除
-r:递归删除(删除目录) | | | | | | | | | | 改 | 重命名或移动文件或目录 | | | | | mv [options] SOURCE DEST
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件
-f:在移动操作要覆盖某已有的目标文件时不给任何指示 | | | | | | | | | | | 拷贝文件到指定目录 | | | | | cp [options] SOURCE DEST
-r:递归复制整个文件夹 | | | | | | | | | | | 压缩与解压 | | | 压缩 | | gzip fileName | | | | 压缩成 .gz文件,原文件不保留 | | | | | | | | zip -r File ZipFile | | | | | 将ZipFile(文件或文件夹)压缩成 File.zip文件,且原文件保留,-r是递归压缩。 | | | | | | | | 解压 | | gunzip fileName | | | | | 解压 .gz文件,原文件不保留 | | | | | | | | unzip -d FilePath zipFile.zip | | | | | | 将zipFile.zip文件解压到FilePath目录下,原文件保留,-d指定解压目录。 | | | | | 打包 | | tar [options] FileName.tar.gz Source
-c:产生.tar打包文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包 .tar文件
-t:列出档案文件的内容,查看已经备份了哪些文件 | | | | | | | 示例:
tar -zcvf ab.tar.gz a.txt .b.txt
- 将a.txt和b.txt打包压缩为ab.tar.gz文件
tar -zxvf c.tar.gz -C /text/
- 将c.tar.gz文件解压到 /text目录下
注意:无-C会默认解压到当前目录,-C指令解压到指定目录,且,该指定目录必须存在,否则报错。 | | | | | |

查 | du:文件占用空间 | | | | du [options] PATH
-sh #查询文件或文件夹占有空间大小,PATH可以是相对也可以是绝对路径
-h #显示文件(夹)及其子文件(夹)的大小 | | | | | | | | | | | | 分页查看文件内容 | | | | more 文件名 | | | | | | | | | | | | | less 文件名 | | | 比more更强大,内容懒加载,效率更高,enter 下一行 space 翻页 | | | | | | | | | echo:输出内容到控制台 | | | | | echo [输出内容] | | | | 示例:echo $path 输出环境变量 | | | | | | | head:显示文件开始部分 | | | | | head -n N 文件名 | | | | | 显示文件前N(指定数字)行
示例:head -n 5 a.txt 显示当前目录下a.txt文件的前5行;默认:head a.txt 显示前10行 | | | | | | tail:显示文件结尾部分 | | | | | tail [options] filePath
-n 5 显示后5行
-f 实时追踪文件尾部数据 | | | | | | | | | | | history:查看历史命令 | | | | | history 查看历史指令
history N 查看最近N条历史指令 | | | | | | |

| | | | find:从指定目录向下递归遍历查找指定文件 | | | | | find [range] [options]
-name fileName 按照指定文件名查找(查找文件名为 fileName的文件,可使用通配符)
-user userName 按文件拥有者查找(查找userName用户的文件)
-size +20M 按文件大小查找(查找大于20M的文件,不加符 号为等于,- 为小于,kb用小写k表示)
-mtime +10 按文件创建时间查找(查找10天前的文件) | | | | | | | | | | | locate:快速定位文件路径 | | | | | | locate fileName - 查找文件,注意,locate是模糊查询
updatedb
- 更新locate 数据库 | | | | | | 原理: locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。 | | | | grep & |:过滤查找 & 管道符号
(将 | 前面的数据,交给| 后面处理) | | | | | | | | xxx | grep [options] 查找内容
-n 显示行号
-i 忽略大小写
示例:cat hello.txt | grep aa 查询hello.txt文件中的aa字符 | | | | | | 网络 | | | 防火墙 | 安装 | | | | 方式一:apt-get install firewalld | | | | | | 方式二:yum install firewalld | | | | |

开/关/重启 | | | | | | | 方式一 | | | | | | 方式二 | | | | 关闭 | | | systemctl stop firewalld | | | | | | service firewalld stop | | | | 开启 | | | systemctl start firewalld | | | | | | service firewalld start | | | | 重启 | | | systemctl restart firewalld | | | | | | service firewall restart | | | | 查状态 | | | systemctl status firewalld | | | | | | service firewall status | | | | 开机自启 | | | 开启:systemctl enable firewalld | | | | | | 关闭:systemctl disable firewalld | | | | 查看是否开机启动 | | | | | systemctl is-enabled firewalld | | | | | | | 检查网络联通性 | | | ping IP | | | | | | | | | | | | | 检查端口连通性 | | | telnet IP PORT | | | | | | | | | | | | | 远程文件传输 | | | 本地->远程 | | | scp 本地路径 Linux用户名@服务器IP:远程路径 | | | | | | | | | | | 远程->本地 | | | scp Linux用户名@服务器IP:远程路径 本地路径 | | | | | | | | | | | | 查看端口
占用情况 | | netstat [options]
-an:按一定顺序排列输出
-p:显示占用的程序
-t:显示tcp协议的连接
-u:显示udp协议的连接 | | | | | | |

示例:netstat -ntpl 查看开放的tcp端口 | | | | | | | | | 列出打开文件 | lsof -i:PORT
- 示例
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
| | | | | | | | | | | | | | 时间日期 | | | 查看时间 | | date -R | | | | | | | | | | | | | | 修改时区为东八区(永久生效) | | | |
1. rm -f /etc/localtime:删除本地时间文件
1. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime:复制东八区文件到localtime
| | | | | | | | | | | 进程管理 | | | 进程情况 | | 1.查找进程号:ps -ef | grep nacos | | | | | | 2.查看进程情况:top -p 461 | | | | | 3.直接擦看进程情况:ps -aux | grep nacos | | | | | | 4.内存占用前10的进程详情:ps aux | sort -k4,4nr | head -n 10 | | | | | | | | | | | |

行编辑器

sed

sed一般用于对文本内容做替换

  • sed的基本工作方式
  1. 将文件1以行为单位读取到内存(模式空间)
  2. 使用sed的每个脚本对该行进行操作
  3. 处理完成后输出该行
  • 替换命令

注意:下面的分隔符”/“,也可以使用其它字符代替,比如”!”;
sed默认只会替换第一行匹配的字符

  • 单替换
    • sed ‘s/old/new/‘ filename
  • 多替换
    • sed -e ‘s/old/new/‘ -e ‘s/old/new/‘ filename …
    • sed ‘s/old/new/‘;’s/old/new/‘ filename …
  • 替换并回写原文件
    • sed -i ‘s/old/new/‘ ‘s/old/new/‘ filename …
  • 正则替换
    • sed ‘s/正则/new/‘ filename
    • sed -r ‘s/扩展正则/new/‘ filename
  • 全局替换
    • sed ‘s/old/new/g’
      • 显示从第一行开始的1行数据
  • sed -n “1,1p”

    awk

    awk一般用于对文本内容进行统计、按需要的格式进行输出。
    对比sed,awk更像是脚本语言,awk用于结构化或者半结构化文本的处理,而sed一般用于处理非结构化文本,将其处理为结构化,然后再通过awk进行进一步的处理。
  • awk脚本的流程控制

    • BEGIN{}:输入数据前例程
    • {}:主输入循环
    • END{}:所有文件读取完成例程
  • 记录和字段

    • 记录:文本的每行称为awk的记录
    • 字段:默认通过空格、制表符分隔开的单词称做字段(也可自定义分隔符)
      • 通过$0 $1 $2 … $n 来表示每一个字段
      • 自定义分隔符:awk -F ‘,’ ‘{print $1,$2}’ filename
        • 分隔符也可使用正则
  • 表达式

    • 系统变量
      • FS 和 OFS 字段分隔符(OFS表示输出的字段分隔符)
      • RS记录分隔符
      • NR 和 FNR行数
      • NF字段数量,最后一个字段内容可以用$NF取出
  • 判断和循环

    • 条件语句

如果有多个语句需要执行可以使用{}将语句括起来

  1. if(表达式)
  2. awk语句1
  3. [else
  4. awk语句2
  5. ]
  • 循环语句 ```shell while(表达式) awk语句1

do{ awk语句1

}while(表达式)

for(初始值;循环条件;累加) awk语句1


   - **数组**
   - **函数**

<a name="vjSce"></a>
# 防火墙
<a name="iYESU"></a>
## Iptables
CentOS 6默认的防火墙。iptables通过控制内核的netfilter来实现过滤,所以性能很强。

- **表 & 链**
   - **规则表**
| **规则表** | **功能** |
| --- | --- |
| filter | 控制ip和端口的访问权限 |
| nat | 网络地址转换 |
| mangle | 数据包修改(QOS),用于实现服务质量 |
| raw | 高级功能,如:网址过滤 |

   - **规则链**
| **名称** | **功能** |
| --- | --- |
| INPUT | 客户端 -> 服务端 |
| OUTPUT | 服务端 -> 客户端 |
| FORWARD | 转发 |
| PREROUTING | 路由前转换 |
| POSTROUTING | 路由后转换 |


<a name="83o1q"></a>
### filter表

- **格式:**iptables [-t filter] 规则链 条件 动作
   - -t : 指操作的表,filter、nat、mangle或raw,默认使用filter;
   - 规则链(chain):
      - -A 规则链名:指定规则链,并插入到尾行;
      -  -I 规则链名:指定规则链,并插入到首行
   - 条件:
      - -i 网卡名:默认eth0
      - -s 源ip地址:默认0.0.0.0/0
      - -d 目标ip地址:默认本机
      - -p 网络协议
      - -sport 限制来源的端口号(可以是单个端口,也可以是范围 如 80:100 )
      - -dport 限制目标的端口号
   - 动作:
      - -j 
         - ACCEPT:允许匹配
         - DROP:丢弃匹配
         - REDIRECT:重定向、映射、透明代理
         - SNAT:源地址转换
         - DNAT:目标地址转换
         - MASQUERADE:IP伪装(NAT),用于ADSL
         - LOG:日志记录

- **注意**
   - 使用的是filter表,则 "-t filter " 可省略;
   - 匹配规则优先级从上至下依次降低,矛盾规则,以优先级高的为准;
- **示例**
   - 查看已设置的过滤规则
```shell
#会尝试反向解析ip为域名显示
iptables -t filter -L
#不会尝试反向解析,直接显示设置值
iptables -t filter -nL
#显示详细信息
iptables -t filter -vnL
  • 添加规则

    # 允许本机的3306端口被所有机器访问
    iptables -t filter -A INPUT -p tcp --dport 3306 -j ACCEPT
    # 允许地址10.0.0.1的机器访问
    iptables -t filter -A INPUT -s 10.0.0.1 -j ACCEPT
    # 拒绝地址10.0.0.1的机器访问
    iptables -t filter -A INPUT -s 10.0.0.1 -j DROP
    # 允许访问地址10.0.0.1
    iptables -t filter -A OUTPUT -d 10.0.0.1 -j ACCEPT
    # 修改INPUT规则链默认的匹配规则为丢弃
    iptables -P INPUT DROP
    
  • 删除规则

    # 清空规则
    iptables -F
    # 清除第一条规则
    iptables -nL --line-number #查看规则序号
    iptables -D 规则链 1
    # 清除指定规则
    iptables -D 规则名称
    

    nat表

配置文件

  • 路径:/etc/sysconfig/iptables-config
  • 注意:通过命令设置的iptables规则仅仅临时有效,重启就失效了,如需永久生效,需要将规则写进配置文件中:

    • 方法一:直接操作配置文件(不建议,容易出错,而且不方便);
    • 方法二:通过命令配置规则后,再通过 “service iptables save” 命令将其当前的iptables配置保存进配置文件iptables.save中,下次iptables启动的时候会自动读取。

      firewallD服务

      CentOS7 默认的防火墙,是在iptables基础上的简化封装。使用firewallD前应该先关闭iptables,否则会出现冲突。
      firewallD通过zone为单位来管理规则,默认的zone为public,命令操作时可省略。
  • 控制firewallD服务本身

systemctl start/stop/enable/disable/status firewalld.service

  • 查询
    • 查询指定zone的全部规则
      • firewall-cmd —zone=public —list-all
    • 查询所以的zone
      • firewall-cmd —get-zones
    • 查询默认的zone
      • firewall-cmd —get-default-zone
    • 查询已激活的zone
      • firewall-cmd —get-active-zone
  • 增加
    • 开放指定zone的https服务
      • firewall-cmd —zone=public —add-service=https
    • 开放指定zone的端口
      • firewall-cmd —zone=public —add-port=81/tcp
  • 删除
    • 删除指定zone的源地址
      • firewalld-cmd —zone=public —remove-source=10.0.0.1
    • 删除指定zone的端口
      • firewalld-cmd —zone=public —remove-port=81
  • 永久生效

以上的firewallD增加操作都是当前运行环境有效,当服务重启或重新加载后就失效了,如需永久生效,需要在执行的命令加上 —permanent ,并通过 firewall-cmd —reload 重新加载即可。

网络

SSH服务

  • 配置文件

    • 服务端配置文件:/etc/ssh/sshd_config
    • 客户端配置文件:/etc/ssh/ssh_config

      NFS服务

      用于Linux间的文件共享协议。
  • 使用步骤如下

    • 启动NFS服务
      • systemctl enable nfs.service
    • 服务端配置文件:/etc/exports
      • 书写格式:共享的本机目录 被共享的ip地址(共享的权限)
        • 示例:/data/share *(rw,sync,all_squash)
          • *:表示所有地址
          • rw:读写权限
          • sync:读写同步,确保内存中的数据及时同步到磁盘
          • all_squash:确保客户端映射过来的用户为匿名用户(保证安全)
        • 查看被共享的目录:showmount -e localhost
    • 客户端挂载访问:
      • mount -t nfs 服务端ip:共享路径 挂载到的本地路径
      • 示例:mount -t nfs 10.0.0.1:/data/share /ent

防火墙详见:https://www.cnblogs.com/liuhaidon/p/11558676.html