linux 僵尸进程孤儿进程、系统优化
1.查看网络状态
1.安装网络调试工具
yum install net-tools
2.执行 netstat -nutlp 查看本机所有监听的端口
[root@localhost ~]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1372/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1286/sshd
tcp6 0 0 :::80 :::* LISTEN 1372/nginx: master
tcp6 0 0 :::22 :::* LISTEN 1286/sshd
-n 不反解 不将ip解析成主机名,不将端口解析成协议名(80--http)
也可以说 主机名解析成ip,协议解析成端口
-------------------------------------------------------------------
-u 打印出udp协议的相关信息
-------------------------------------------------------------------
-t 代表查看tcp协议的 并且显示主机名、tcp协议是ssh的
[root@localhost ~]
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 372 localhost.localdoma:ssh 192.168.15.1:57097 ESTABLISHED
tcp协议 主机名 tcp协议是由ssh产生的 当前连接ssh的地址
-------------------------------------------------------------------
-l 监听 , 分两部分上面是IPv4的,下面是ipv6
[root@localhost ~]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
Active UNIX domain sockets (only servers) 下面的是ipv6 unix协议
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 13811 /run/lvm/lvmetad.socket
unix 2 [ ACC ] STREAM LISTENING 13843 /run/lvm/lvmpolld.socket
unix 2 [ ACC ] SEQPACKET LISTENING 13862 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 9039 /run/systemd/journal/stdout
unix 2 [ ACC ] STREAM LISTENING 13710 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 18606 /run/dbus/system_bus_socket
-------------------------------------------------------------------
-p 显示PID/Program name pid和进程名称
2.僵尸进程和孤儿进程
1.必须是进程
2.进程的生命周期已经结束
3.进程一人占着PID 不释放
单个僵尸进程没有危害,但是多个僵尸进程存在时,大量占用PID,PID被占满,导致不能开启新的进程
1.进程的父ID(PPID)已经结束,但是子进程还在运行
2.在父进程结束的情况下,子进程被操作系统(PID=1)进程接收
孤儿进程没有危害,自己执行完自己结束
3.yum源的优化
最起码要有这俩(Centos base) epel
自建仓库 或者用一个稳定点的云
base:wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
epel:可以自己写,创建一个epel.repo
[epel]
name='huawei epel repo'
baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
gpgcheck=0
最大的云服务:阿里云
专利最多的云:华为云
4.系统主机名
hostnamectl set-hostname [新的主机名] 新开个窗口立即生效
vim /etc/hostname 重启生效
5.系统之间的域名解析
vim /etc/hosts
格式ip 主机名
6.关闭selinux和防火墙
临时关闭:setenforce 0 临时关闭
永久关闭:vim /etc/selinux/config 设置 SELINUX=disabled
systemctl disable --now firewalld 永久关闭
systemctl start firewalld
systemctl stop firewalld
systemctl status firewalld
7.配置ntp时间同步
1.安装ntp
yum install ntpdate
2.同步时间
ntpdate [时间服务器的地址]
ntp.aliyun.com 阿里时间服务器
ntp.tuna.tsinghua.edu.cn 清华网络授时
等等他们都来自北斗 -->原子钟 他来自-->各种算法
8.ulimit 设置系统开启进程或者文件句柄数量
-n:最大句柄数量
ulimit -n 10 临时修改
[root@localhost fd]
0 1 2 3 4 5 6 7 8 9
cat >>/etc/security/limits.conf<<EOF
* soft nofile 102400
* hard nofile 102400
* soft nproc 102400
* hard nproc 102400
EOF
再执行 systel-p 测试
重启
-u:最大进程数量
ulimit -u 10
ELK elasticserch -->需要文件句柄65536 一般默认65535 所以需要永久修改
9.设置最大PID数
[root@localhost ~]
131072
echo 111111 > /proc/sys/kernel/pid_max
echo "kernel.pid_max= 4194303" >> /etc/sysctl.conf
sysctl -p 测试
10.调整内核参数
cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2 打开文件句柄的超时时间
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_forward = 1 打开操作系统网络转发功能。默认是关闭的
EOF
11.关闭networkmanger
network 一般用这个
networkmanger 网络断开,清理路由, 自定义路由会被清理
他俩只能用一个,一起用会引起冲突
systemctl disable --now networkmanger 禁用networkmanger
12.禁ping
防止主机被ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
13.用户提权sudo 普通用户临时使用root用户的权限时
当普通用户临时使用root用户的权限时
需要在/etc/sudoer 文件中添加权限,找到有root的行 添加 (用户名) test1 ALL=(All) ALL
在普通用户执行 sudo vim 1.txt
14.字符处理
1.sort 排序 默认第一个字符进行排序
参数
-n:按照数值大小排序 从小到大
[root@localhost tmp]
-r:倒序 从大到小
[root@localhost tmp]
-k:以某一列排序 比如用第二列排序(默认列的分隔符是空格) sort -k2
[root@localhost tmp]
-t:指定分隔符
[root@localhost tmp]
2.uniq 去重(默认去除相邻的数据,一般和sort -n连用,先排序一下在去重)
参数
-c:显示每列重复的次数
[root@localhost tmp]
-d:显示重复的列
[root@localhost tmp]
-u:显示不重复的列
[root@localhost tmp]
3.cut 分割字符(默认以空格分割)
cut有局限性,如果以空格分割,所有的列空格必须一样,如果空格一个多一个少,那分割的就不准
awk只有有空格就会分
-d:指定字段分隔符
[root@localhost tmp]
-f:显示指定列的内容
[root@localhost tmp]
4.tr(替换)
[root@localhost tmp]
-d:删除字符 不会实际删除
[root@localhost tmp]
5.wc
-c:统计字节(包括换行符)
[root@localhost tmp]
-l:统计行数
[root@localhost tmp]
-W:统计单词个数(默认以空格分割)
[root@localhost tmp]
15.时间
1.要求打印当前时间 格式为2021-5-5 00:00:00
%F:%Y-%m-%d
%I:十二小时制
%W:本年的第多少周
%s:从1970年到现在的秒数
date +"%Y-%m-%d %H:%M:%S"
2.设置本机的时间
date -s "2021-11-11 11:11:11"