关机&重启 | 立即关机 | 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 用户名![]() 解释:uid 是user ID(用户的ID) gid 是group ID(用户组的ID) groups:所在组名称 |
|||||||||||||||
whoami 查看当前是哪个用户 | ||||||||||||||||
切换用户 | 切进用户 | su 用户名 | ||||||||||||||
回退用户 | exit | |||||||||||||||
注销用户 | logout | |||||||||||||||
用户组 | 添加组 | groupadd 组名 | ||||||||||||||
删除组 | groupdel 组名 | |||||||||||||||
修改组 | usermod -g 组名 用户名 | |||||||||||||||
三个相关的文件 | /etc/passwd - 用户(user)的配置文件,记录用户的各种信息 ![]() 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell |
|||||||||||||||
/etc/shadow - 口令的配置文 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔: 警告时间:不活动时间:失效时间:标志 |
||||||||||||||||
/etc/group - 组(group)的配置文件,记录 Linux 包含的组的信息 ![]() 组名:口令:组标识号:组内用户列表 |
||||||||||||||||
运行级别 | 临时修改运行级别 | 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以行为单位读取到内存(模式空间)
- 使用sed的每个脚本对该行进行操作
- 处理完成后输出该行
- 替换命令
注意:下面的分隔符”/“,也可以使用其它字符代替,比如”!”;
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 ‘s/old/new/g’
- 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取出
- 系统变量
判断和循环
- 条件语句
如果有多个语句需要执行可以使用{}将语句括起来
if(表达式)
awk语句1
[else
awk语句2
]
- 循环语句 ```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规则仅仅临时有效,重启就失效了,如需永久生效,需要将规则写进配置文件中:
控制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的全部规则
- 增加
- 开放指定zone的https服务
- firewall-cmd —zone=public —add-service=https
- 开放指定zone的端口
- firewall-cmd —zone=public —add-port=81/tcp
- 开放指定zone的https服务
- 删除
- 删除指定zone的源地址
- firewalld-cmd —zone=public —remove-source=10.0.0.1
- 删除指定zone的端口
- firewalld-cmd —zone=public —remove-port=81
- 删除指定zone的源地址
- 永久生效
以上的firewallD增加操作都是当前运行环境有效,当服务重启或重新加载后就失效了,如需永久生效,需要在执行的命令加上 —permanent ,并通过 firewall-cmd —reload 重新加载即可。
网络
SSH服务
配置文件
使用步骤如下:
- 启动NFS服务
- systemctl enable nfs.service
- 服务端配置文件:/etc/exports
- 书写格式:共享的本机目录 被共享的ip地址(共享的权限)
- 示例:/data/share *(rw,sync,all_squash)
- *:表示所有地址
- rw:读写权限
- sync:读写同步,确保内存中的数据及时同步到磁盘
- all_squash:确保客户端映射过来的用户为匿名用户(保证安全)
- 查看被共享的目录:showmount -e localhost
- 示例:/data/share *(rw,sync,all_squash)
- 书写格式:共享的本机目录 被共享的ip地址(共享的权限)
- 客户端挂载访问:
- mount -t nfs 服务端ip:共享路径 挂载到的本地路径
- 示例:mount -t nfs 10.0.0.1:/data/share /ent
- 启动NFS服务