Linux的7个运行级别
0:关机
1:单用户(root,经常用来找回root密码)
2:不带NFS的多用户
3:完全多用户模式
4:系统保留,未分配
5:X11图形化界面
6:重启
修改运行级别
# 临时修改
init 5
init 0
# 永久修改
/etc/inittab
开机自启动
chkconfig --list iptables
chkconfig --level 245 iptables off
如果是centos7
systemctl enable iptables.service
systemctl start iptables.service
systemctl status iptable.service
如果不是rpm包
把启动命令写入/etc/rc.local 注意给脚本可执行权限
当然也可以自己编写systemd脚本
字符集
export LANG=zh_CN.UTF-8
LANG PATH PS1
/etc/sysconfig/i18n
tar排除选项
cd / && tar czf etc.tar.gz --exclude /etc/service etc
exclude 就是排除的意思
-j 打包的时候使用bzip,bzip2
-C 指定解压目录
-t 查看压缩包内文件
统计文件行数
cat /etc/services | wc -l
awk 'END{print NR}' /etc/services
# awk 'BEGIN{nu=0}{nu++}END{print nu}' /etc/services
磁盘使用过程
- 分区
- 格式化
- 挂载
-
inode与block
产生
作用
每创建一个文件和目录就用掉一个inode,用来记录文件属性和block位置
查看
ls -lhi
df -i
block
superblock
记录此filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等
软连接和硬连接
软连接:相当于windows下的快捷方式,里面存放的是实际的文件位置,它指向源文件。创建软连接使用-s参数,ln -s用来创建软连接,不加阐述默认创建硬链接,如果已经创建的软连接,原文件被删除后,指向原文件的连接会红底白字地闪烁。
硬链接:相当于超市的前后门,创建硬链接相当于在屋子上新开了一个门,是新文件的入口。在同一个文件系统中,如果两个文件的inode号相同,那么它们互为硬链接。创建硬链接的主要目的是:防止文件被误删除。对目录不能创建硬链接。文件删除原理
文件硬链接数为 0
- 文件进程调用数为 0
文件是否被使用
lsof |grep oldboy.txt
lsof |grep deleted
# 第一列可以看到文件被谁打开了
Linux中的三种时间
- mtime 文件内容发生改变
- ctime 文件属性发生改变(文件大小,文件属主,硬链接,权限)
- atime 访问时间(看一次改变一次)
文件属性存储在inode中,每一次修改都将写入磁盘
&& 前一个命令执行成功了,再执行下一个
|| 前一个命令执行失败了,再执行下一个(若是前一个命令执行成功,后面的则不执行)
通配符
过滤掉空行
grep -v '^$' test.txt
grep '.' test.txt
sed '/^$/d' test.txt
awk '!/^$/' test.txt
useradd
-g:属于其他的家庭(原来的组消失),指定用户所属的用户组
-G:属于多个家庭(原来的组不消失),指定用户所属的附加组
usermod
-s:修改用户使用shell
-g:属于其他的家庭
-G:属于多个家庭
各种常见RAID级别及使用场景
RAID0(条带化) | 速度快,无冗余 | 性能要求高,数据安全要求低(MySQL从库) |
---|---|---|
RAID1(镜像) | 写入慢,冗余高 | 对数据安全要求高的场景(监控服务器) |
RAID5(奇偶校验) | 写入慢,读取快,有冗余 | 适合大多数场景 |
RAID10(镜像条带) | 读写都快,冗余高 | 对性能和数据安全都有要求的场景(MySQL主库) |
RAID6(奇偶校验) | 两块校验盘 |
主引导记录(MBR)
0磁头 0磁道 1扇区 的那512Bytes
MBR不支持2TB以上磁盘
创建一个Swap分区
先创建一个swap文件
dd if=/dev/zero of=/tmp/swap_mem bs=1M count=2048
格式化为swap分区
mkswap /tmp/swap_mem
file /tmp/swap_mem
挂载为swap
swapon /tmp/swap_mem
swapon -s # 查看swap分区
开机自动挂载
/tmp/100m swap swap default 0 0
shell脚本调试
使用echo打印信息,类似于python的print打印
- 命令行中使用sh -x script.sh
- 脚本中设置 sh -x 开启调试, sh +x 关闭调试
普通变量只在当前shell作用,环境变量在任何地方都可以使用。
FTP的主动模式和被动模式
DNS解析的过程
- DNS协议:域名与ip的对应关系
- ARP协议:ip与mac地址的对应关系
TCPDUMP的使用方法
ssh防止入侵的办法
- 不使用密码而使用密钥登录
- 设置访问控制白名单
- 尽量不给服务器公网ip,开启ssh只监听本地内网地址
- 系统最小化安装,减少漏洞
- 给系统的重要文件加上特俗权限 chattr ```shell
ssh -p22 root@10.0.0.100
scp -P22 -r -p /etc/passwd root@10.0.0.100:/root
-P大写
sftp -oPort=52113 oldboy@10.0.0.100
sshpass -p 123456 ssh root@10.0.0.100
ssh-copy-id root@10.0.0.100 ssh-copy-id 10.0.0.100
ssh-keygen -t ecc -f “/root/.ssh/id_ecc” -N “” -q
sh-copy-id -i /root/.ssh/id_dsa.pub “172.16.1.$ip -p$Server_Port -o StrictHostKeyChecking=no” ```
常见的HTTP状态码
200:请求已正常处理
204:请求处理成功,但没有任何资源可以返回给客户端
206:是对资源某一部分的请求
301:永久重定向
302:临时重定向
303:请求的对应资源存在另外一个URL,应使用GET方法定向获取请求的资源
304:资源已找到,但未符合请求(Header)
400:服务器无法理解客户端请求(请求错误)
401:认证失败
403:不允许访问
404:服务器没有请求的资源
500:内部资源故障,可能是web应用程序bug
502:网关错误
503:服务不可用
IPC 进程间通信的几种方式
- 半双工unix管道
- 命名管道(Windows)
- 消息队列
- 信号量
- 共享内存
-
nginx优化(web调优)
一、安全优化
不显示nginx版本(http块 server_tokens off)
- 修改nginx版本(需要修改源码后重新编译)
-
二、性能优化
worker_process 等于cpu线程数 主区块
- worker_cpu_affinity 绑定cpu核心(主区块 减少上下文切换)
- 优化事件处理模型(event块 use epoll)
- worker_connections nginx单个进程最大连接数(evnet块)
- worker_rlimit_nofile nginx服务进程打开文件数 (主区块)
nginx限制访问速率(并发数、带宽)
防止DDOS,恶意爬虫
ngx_http_limit_conn_module
ngx_http_limit_req_module
kvm
是一个开源的系统虚拟化模块,它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-amd.ko)。kvm
还需要一个经过修改的QEMU 软件(qemu-kvm),作为虚拟机上层控制和界面。每个虚拟机都有各自的虚拟硬件