文章目录
Linux系统基础知识
#centos对应的运行级别
0 poweroff.target
1 rescue.target
2 multi-user.target
3 multi-user.target
4 multi-user.target
5 graphical.target
6 reboot.target
#查看默认运行级别
systemctl get-default
#更改默认运行级别
systemctl set-default name.target
#如何确定某个服务启动之前需要启动哪些服务
systemctl list-dependencies --after gdm.service
#如何确定指定的服务之后命令启动哪些服务
systemctl list-dependencies --before gdm.service
#shell是什么
答:shell是用户完成认证后执行的第一个程序
#linux下如何控制主机名和ip的对应查询顺序(dns客户端配置)
/etc/hosts
/etc/resolv.conf
cat /etc/nsswitch.conf
hosts: files dns
#如何将普通用户加入超级权限组(使其能使用sudo)
答:将用户加入到系统自带的 wheel组,注销后再次登陆
gpasswd -a yonghu wheel
id yonghu
#如何强制用户下次登陆修改密码
答:chage -d 0 yonghu (会修改 /etc/shadow 时间列)
#查看各种协议的协议号
答:cat /etc/protocols
#查看各种网络服务
答:cat /etc/services
#很重要的几个文件,关系创建用户的默认环境,登陆环境,
答:
/etc/default/useradd 默认shell ,家目录等等
/etc/login.defs 加密方式,
/etc/skel/ 目录:创建新用户回将里面的文件复制到 家目录(缺少这几个文件,bash头会异常)
#给进程传递信号的工具
答:
kill :只能跟进程的pid (-1:重新加载配置,-9 强杀,-15 正常退出‘默认的’,-18 继续,-19 暂停相当于Ctrl + Z)
killall :可用跟进程名 (killall nginx 杀死所有同名进程,killall -9 bash)
pkill :直接跟进程名 (pkill smoke,pkill -u alice 直接杀死用户alice的所有进程,要是有登陆,也踢掉)
#查找进程的pid( pgrep )
答:
pgrep sshd :查看sshd的pid有哪些
pgrep -u root sshd :查看root用户使用sshd服务的pid有哪些
#linux恢复进程打开的文件(前提进程还未关闭)
lsof | grep message #查看进程打开文件的状态
[root@CQ-BGP ~]# lsof | grep mess
rsyslogd 2954 root 16w REG 253,1 32943644 24688 /var/log/messages (deleted)
in:imjour 2954 2998 root 16w REG 253,1 32943644 24688 /var/log/messages (deleted)
rs:main 2954 3031 root 16w REG 253,1 32943644 24688 /var/log/messages (deleted)
cat /proc/2954/fd/16 #查看相应进程的文件描述符FD,然后下面就是恢复
[root@CQ-BGP ~]# cp /proc/2954/fd/16 /var/log/messages
#如果/dev/null被删除
1:重启自动创建
2:手动创建
rm /dev/null
mknod -m 666 /dev/null c 1 3
#重定向介绍
ls / &> list.txt :将标准输出和标准错误输出都重定向到list.txt中
ls / >list.txt 2>&1 :将标准输出重定向到list.txt中,将标准错误输出重定向到 文件描述符1中
#如何查看ext文件系统的信息(ext3/4文件系统black信息是有备份的)
dumpe2fs /dev/sda2
tune2fs -l /dev/sda2
#查看内核模块的具体信息
modinfo bnx2
#centos出现root账户无法在tty登录的其中一个定位思路,文件数限制了,删除多于的设置,只留下默认的
vi /etc/security/limits.conf
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
Linux处于OOM状态的特征
什么是linux的OOM状态,有何可怕之处
OOM(Out of Memory)的机器僵而不死,对应用来说是最大的伤害,所以我们需要有一种有效的监控手段来判断机器是否是OOM。
OOM机器的特征
机器能否ping通
机器无法ssh,但是能telnet 22端口,却无法ssh上去
OOM时机器状态的猜测
Linux的kernel可能还是活的,至少tcp/ip协议栈还是可以工作的,因为ip还能ping通,22端口依然在监听
上层应用都不响应了,比如telnet 22端口能连接上,但输入任何字符后无响应
OOM监控脚本
#/bin/bash
ips='
192.168.1.1
192.168.1.2
192.168.1.3
'
for i in $ips
do
#判断是否能ping通
if ping -c2 -w5 $i 2>/dev/null ; then
#用nc判断22端口是否能否响应,使用nc -w参数设定nc 超时时间
if echo 'hello' | nc -w 10 $i 22 | grep -q 'OpenSSH' ; then
echo "$ip is OK"
else
echo "$ip is OOM!"
fi
fi
done
linux内核源路径验证,当linux作用BGP路由器时,必须关闭
源地址验证,去 回路径不一样,linux内核源地址验证(若是开启)linux内核的一个安全设置,开启的话假设数据包从网卡A进从网卡B出,内核就会把他drop掉
echo "net.ipv4.conf.default.rp_filter =0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
sysctl -p
linux禁用ipv6,关闭ipv6
cat >> /etc/sysctl.conf << EOF
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
EOF
sysctl -p
# 直接这样简单
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
避免多网卡连接到相同子网中,出现arp flux现象,即从多个网卡响应同一个arp请求
临时实现方式
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
永久生效方式
echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/profile
sysctl -p
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论