面试宝典
文件描述符:
ulimit -n 查看文件描述符
/etc/security/limits.conf 修改文件描述符
nginx:
last 重写后的地址重新交到 server 中
break 将重写后的地址继续往下执行
find:
find ./ -type f -mtime +10 -exec rm -f {} \;
-size +100m
-name "*.log"
wc
-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
top交互命令
1 显示多核CPU
h 显示top交互命令帮助信息
c 显示长命令
M 内存使用率排序
P CPU使用排序
T 累计CPU时长排序
W 将当前设置写入~/.toprc文件中
o或者O 改变显示项目的顺序
top -H -p <pid> 查看子进程
top -c 显示进程的运行命令
设置运行级别文件:/etc/inittab
Linux共有七种执行等级:
--run level 0 :关机
--run level 3 :纯文本模式
--run level 5 :含有图形接口模式
--run level 6 :重新启动
常用命令:
basename 取路径名
dirname 取文件名
umask 查看mask值
chattr 配置文件档案隐藏属性
file 查看文件类型
which 查看命令路径
traceroute scriptjc.com 查看所经历的路由
uname -r 查看版本信息等
用户和权限:
chgrp chown chmod groupadd group_name 创建一个新用户组 groupdel group_name 删除一个用户组 groupmod -n new_group_name old_group_name 重命名一个用户组 useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户 userdel -r user1 删除一个用户 ( '-r' 排除主目录) usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 chage -E 2005-12-31 user1 设置用户口令的失效期限 pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组
文件权限与属性:
chattr # change attribute +a filename 只允许以追加方式读写文件 +c filename 允许这个文件能被内核自动压缩/解压 +d filename 在进行文件系统备份时,dump程序将忽略这个文件 +i filename 设置成不可变的文件,不能被删除、修改、重命名或者链接 +s filename 允许一个文件被安全地删除 +S filename 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 +u filename 若文件被删除,系统会允许你在以后恢复这个被删除的文件 lsattr [filename] 显示特殊的属性
ps
-ef e 所有进程,f 输出UID,PPIP,C 与 STIME 栏位
aux a 和终端相关的进程,x和终端无关的进程,u以用户为中心
isof list of open files
lsof -i :9100
lsof -n | wc -l
ss:
ss -s #列出各种协议的连接数
统计80端口连接数
netstat -nat | grep -i "80" | wc -l
统计httpd协议连接数
ps -ef | grep httpd | wc -l
统计已连接上的,状态为 established(已连接的)
netstat -anp | grep ESTABLISHED | wc -l
DNS解析工具:
dig www.123.com
挂载:
mount /dev/cdrom /tmp
RAID:将多块硬盘按照某种格式组织起来当一块设备使用的技术,提高IO能力,耐用性。
RAID0 速度快,并发IO,无数据冗余功能(至少2块)
RAID1 磁盘镜像,写慢,读块,有容错(至少2块)容量1/2
RAID2 海明码校验
RAID4 其中一个磁盘存储校验码用来做异或运算,校验盘读压力大,有容错(至少3块)容量n-1
RAID5 校验码轮询存放,分散读取压力,有容错(至少3块)容量n-1
RAID6 两块存数据,两块存校验码,有容错(至少4块)容量n-2
RAID10 RAID1 + RAID0 先做RAID1再做RAID0,(至少4块)容量1/2
每组两两互为镜像,每组可以坏一个,RAID10更实用
RAID01 RAID0 + RAID1 十块硬盘5个一组做成两组RAID0,再把这两组做成RAID1
TOP10:
gawk -F ' ' '{print $1}' chuxiangyi.log | sort | uniq -c | sort -k1nr | head -20
查看磁盘IO:
iostat -x 1 10
vmstat 1 # 后面的1表示刷新时间
bi: 读取速率(kb/s)
bo:保存速率(kb/s)
iostat -k
-k 以KB显示
-m 以MB显示
-x 显示扩展选项
rsync: 只传送文件之间不同的部分
rsync -av src/ dest/
rsync -av src dest/
rsync -av IP:/data/test/src/ dest/ --远程同步至本地,需输入root密码
rsync -av src/ IP:/data/test/dest/ --本地文件同步至远程
-a 递归方式传输文件
-v 显示
JVM设置:
JAVA_OPTS="-server -Xms1024m -Xmx2018m -XX:PermSize=256m -XX:MaxPermSize=512m"
这一项需要在catalina.sh的首行
Xms:堆内存初始大小
Xmx:堆内存上线
XX:PermSize:非堆内存初始大小
XX:MaxPermSize:非堆内存上限
lvm:
pvcreate /dev/sdb1 创建多个pv
vgcreate vg1 /dev/sdb1 创建vg
vgextend vg1 /dev/sdb5 扩展vg
lvcreate -L 2G -n lv1 vg1创建lv, -L 大小 -n lvname vgname
mke2fs -t ext4 /dev/mapper/vg1-lv1
mount /dev/mapper/vg1-lv1 /mnt/
三次握手:
client: SYN=1
server: ACK=1
client: ACK=1
四次挥手:
client: FIN=1
server: ACK=1
server: FIN=1
client: ACK=1
TIME_WAIT
原因:
TIME_WAIT 是主动关闭连接的一方保持的状态,像 nginx、爬虫服务器,经常发生大量处于time_wait状态的连接。TCP 一般在主动关闭连接后,会等待 2MS,然后彻底关闭连接。由于 HTTP 使用了 TCP 协议,所以在这些频繁开关TCP连接的服务器上,就积压了非常多的 TIME_WAIT 状态连接。
查看:ss -s
解决:
vim /etc/sysctl.conf
# 修改阈值
net.ipv4.tcp_max_tw_buckets = 50000
# 表示开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_reuse = 1
#启用timewait 快速回收。这个一定要开启,默认是关闭的。net.ipv4.tcp_tw_recycle= 1
# 修改系統默认的TIMEOUT时间,默认是60s
net.ipv4.tcp_fin_timeout = 10
CLOSE_WAIT
CLOSE_WAIT一般是由于对端主动关闭,一般是程序问题。
查看某个进程的环境变量:
cat /proc/1234/environ
spec.lifecycle.postStart:容器创建完成之后执行
spec.lifecycle.preStop:容器结束之前运行
readinessProbe:就绪性探测
livenessProbe:存活性探测
大B小b:byte 和 bit
1KB/s=8Kbps
ifconfig:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.2.70.223 netmask 255.255.255.0 broadcast 10.2.70.255
ether 00:16:3e:0b:62:16 txqueuelen 1000 (Ethernet)
RX packets 239273466 bytes 250522326943 (233.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 86043927 bytes 84381884814 (78.5 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Receiver 接收
Transmitter 发送
根据进程ID查找程序路径:
ls -al /proc/<PID>/exe