linux系统监控与进程管理 (linux网络系统配置与管理项目教程)

「@Author: Runsen」

1、⽹络管理

1.1 网络状态查看

在Linux中经常使用ifconfig,route和netstat查看网络状态,它们就是. net-tools工具,下面我来使用下。

linux进程管理学习教程,linux系统监控与进程管理

linux进程管理学习教程,linux系统监控与进程管理

我就说下ifconfigroute

在我们的linux中有很多网卡接口,比如eth0第一块网卡网络接口,eno1板载⽹网卡, ens33 PCI-E⽹网卡 。CentOS 7 使⽤用了⼀致性⽹络设备命名,以上都不匹配,则使⽤ eth0

[root@node01~]#ifconfigeth0
eth0:errorfetchinginterfaceinformation:Devicenotfound
[root@node01~]#ifconfigens33
ens33:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500
inet192.168.92.90netmask255.255.255.0broadcast192.168.92.255
inet6fe80::b889:1772:c306:ef8fprefixlen64scopeid0x20<link>
ether00:0c:29:07:43:5atxqueuelen1000(Ethernet)
RXpackets910bytes954985(932.6KiB)
RXerrors0dropped0overruns0frame0
TXpackets450bytes38942(38.0KiB)
TXerrors0dropped0overruns0carrier0collisions0

1.2 网络配置文件

vim /etc/hosts网络配置文件

在配置hadoopelasticsearch集群的时候需要在/etc/hosts配置集群IP和主机名,有时候你ping不了百度,可能域名解析不了,需要在/etc/sysconfig/network-scripts/ifcfg-eth0配置

[root@node01~]#vim/etc/sysconfig/network
#########
HOSTNAME=node01
[root@node01~]#vim/etc/hosts
#########
192.168.92.90node01
192.168.92.91node02
192.168.92.92node03

[root@node01~]#配置DNS,域名解析服务
[root@node01~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=202.106.0.20
DNS2=8.8.8.8

1.3 ⽹络故障排除命令

第一,ping百度:查看目标机器的网络是否可通

maoli@ubuntu:~nbsp;pingbaidu.com
PINGbaidu.com(220.181.38.148)56(84)bytesofdata.
64bytesfrom220.181.38.148:icmp_seq=1ttl=128time=49.6ms
64bytesfrom220.181.38.148:icmp_seq=2ttl=128time=48.2ms
^C
---baidu.compingstatistics---
2packetstransmitted,2received,0%packetloss,time1001ms
rttmin/avg/max/mdev=48.223/48.948/49.673/0.725ms

nslookup 工具就可以对域名解析, 格式是nslookup空格+域名

比如nslookup www.baidu.com 。 Server即为域名对应的ip

maoli@ubuntu:~nbsp;nslookupwww.baidu.com
Server:127.0.1.1
Address:127.0.1.1#53

Non-authoritativeanswer:
www.baidu.comcanonicalname=www.a.shifen.com.
Name:www.a.shifen.com
Address:182.61.200.6
Name:www.a.shifen.com
Address:182.61.200.7

tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具

比如tcpdump -i any -n port 80 抓取所有网卡(any)80端口数据包,并且以ip形式显示(-n)

maoli@ubuntu:~nbsp;sudotcpdump-iany-nport80-n
tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonany,link-typeLINUX_SLL(Linuxcooked),capturesize262144bytes
10:28:11.003675IP192.168.92.1.53951>192.168.92.135.80:Flags[S],seq185886164,win64240,options[mss1460,nop,wscale8,nop,nop,sackOK],length0
10:28:11.003875IP192.168.92.135.80>192.168.92.1.53951:Flags[S.],seq2863640054,ack185886165,win64240,options[mss1460,nop,nop,sackOK,nop,wscale7],length0
10:28:11.004114IP192.168.92.1.53951>192.168.92.135.80:Flags[.],ack1,win4106,length0
10:28:11.010472IP192.168.92.1.53951>192.168.92.135.80:Flags[P.],seq1:476,ack1,win4106,length475:HTTP:GET/sqli-labs/HTTP/1.1

比如tcpdump -i any -n host 10.0.0.1 and port 80 抓取所有网卡的80端口和10.0.0.1之间的数据包,并且以ip形式显示

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

netstat 查看服务监听端口状态是否正确

-n 显示ip地址 -t tcp协议 -p 显示端口对应的进程 -l tcp的监听状态(listen) -ntpl 查看端口开放情况

maoli@ubuntu:~nbsp;sudonetstat-ntlp
激活Internet连接(仅服务器)
ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname
tcp000.0.0.0:220.0.0.0:*LISTEN1111/sshd
tcp00127.0.0.1:6310.0.0.0:*LISTEN14200/cupsd
tcp00127.0.0.1:33060.0.0.0:*LISTEN1148/mysqld
tcp00127.0.0.1:63790.0.0.0:*LISTEN1165/redis-server1
tcp00127.0.1.1:530.0.0.0:*LISTEN1285/dnsmasq
tcp600:::22:::*LISTEN1111/sshd
tcp600::1:631:::*LISTEN14200/cupsd
tcp600:::9000:::*LISTEN2234/docker-proxy
tcp600:::80:::*LISTEN1842/apache2

1.4 ⽹络服务管理

⽹络服务管理程序分为两种,分别为SysVsystemd。现在Systemd已经基本取代了SysV的Init。

linux进程管理学习教程,linux系统监控与进程管理

1.5 设置静态ip

在搭建任何集群,都是要设置静态ip的。

[root@node01]#vim/etc/sysconfig/network-scripts/ifcfg-ens33

################
BOOTPROTO=static
ONBOOT="yes"
#网关地址根据系统的网络而定
GATEWAY=192.168.92.2
#设置的静态ip
IPADDR=192.168.92.92
NETMASK=255.255.255.0
#配置DNS服务器
DNS1=8.8.8.8
DNS2=8.8.4.4


2. 软件安装

2.1 rpm安装

在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件,主要用于CentOS、RedHat等linux系统,软件安装包格式为 rpm。

比如一个vim的rpm叫:vim-common-7.4.10-5.el7.x86_64.rpmvim-common是软件名称,7.4.10-5软件版本,el7是Red Hat Enterprise Linux 指的是centos7系统版本,x86_64指的是系统平台x86

rpm 命令常⽤参数,-q 查询软件包-i 安装软件包-e 卸载软件包

2.2 yum 包管理器

yum(全称 Yellow dog Updater, Modified)是一个前端软件包管理器,基于RPM包管理,能够从指定的服务器自动*载下**RPM包并且安装,可以自动处理依赖性关系。

*载下**阿里云的yum源到了/etc/yum.repos.d

备份yum源

mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup

*载下**新的CentOS-Base.repo/etc/yum.repos.d/,这里指的是centos7

wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo
#运行yummakecache生成缓存
yumcleanall
yummakecache

这时候可以查看yum的base

[root@node01~]#vim/etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever-Base-mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

由于yum中有的mirror速度是非常慢的。对此,我可以*载下**fastestmirror插件。

[root@node01~]#yuminstallyum-fastestmirror-y
[root@node01~]#cat/etc/yum/pluginconf.d/fastestmirror.conf
[main]
enabled=1
verbose=0
always_print_best_host=true
socket_timeout=3
#Relativepathsarerelativetothecachedir(andsoworksforusersaswell
#asroot).
hostfilepath=timedhosts.txt
maxhostfileage=10
maxthreads=15
#exclude=.gov,facebook
#include_only=.nl,.de,.uk,.ie

yum常用命令install 安装软件包,remove 卸载软件包,list| grouplist 查看软件包,update 升级软件包

2.3 apt安装

Ubuntu的高级打包工具(APT,Advanced Packaging Tool ),Debian、Ubuntu 使⽤ apt 包管理器,软件安装包格式为 deb。

apt安装一个nginx

maoli@ubuntu:~nbsp;sudoapt-getinstallnginx
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志

2.4 make install编译源码安装

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。

configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。

其中--prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

如果配置了--prefix,如:./configure --prefix=/usr/local/python3

安装后的所有资源文件都会被放在/usr/local/python3目录中,不会分散到其他目录。如果删除直接删除这个文件就可以了。

比如centos7安装Python3.6

[root@node01~]#yuminstallyum-utils
[root@node01~]#yuminstallopenssl-devel-y
[root@node01~]#mkdir-p/usr/local/python3
[root@node01~]#cd/usr/local/python3/
[root@node01python3]#wgethttps://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz
[root@node01python3]#tar-zxvfPython-3.6.7.tgz
[root@node01python3]#cdPython-3.6.7
[root@node01python3.6.7]#./configure--prefix=/usr/local/python3--with-ssl
[root@node01python3.6.7]#make&&makeinstall
Installingcollectedpackages:setuptools,pip
Successfullyinstalledpip-10.0.1setuptools-39.0.
[root@node01python3.6.7]#cd..
[root@node01Python3]#ln-s/usr/local/python3/bin/python3/usr/bin/python3
[root@node01Python3]#ln-s/usr/local/python3/bin/pip3/usr/bin/pip3
[root@node01Python3]#python3-V
Python3.6.7
[root@node01Python3]#python3
Python3.6.7(default,Mar52020,11:00:15)
[GCC4.8.520150623(RedHat4.8.5-39)]onlinux
Type"help","copyright","credits"or"license"formoreinformation.
>>>exit()

3. 进程管理

进程 是 Unix 和 Linux 系统中对正在运行中的应用程序的抽象,通过它可以管理和监视程序对内存、处理器时间和 I / O 资源的使用。

3.1 杀进程

很多时候需要杀进程,ps -ef可以查看所有的进程,ps -ef|grep 查看具体的任务的进程,

比如查看Mysql进程

[root@node01~]#ps-ef|grepmysql
clouder+172613815:16?00:04:34/usr/java/jdk1.8.0_241/bin/java-cp.:/usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:lib/*-server-Dlog4j.configuration=file:/etc/cloudera-scm-server/log4j.properties-Dfile.encoding=UTF-8-Dcmf.root.logger=INFO,LOGFILE-Dcmf.log.dir=/var/log/cloudera-scm-server-Dcmf.log.file=cloudera-scm-server.log-Dcmf.jetty.threshhold=WARN-Dcmf.schema.dir=/opt/cloudera/cm/schema-Djava.awt.headless=true-Djava.net.preferIPv4Stack=true-Dpython.home=/opt/cloudera/cm/python-XX:+UseConcMarkSweepGC-XX:+UseParNewGC-XX:+HeapDumpOnOutOfMemoryError-Xmx2G-XX:MaxPermSize=256m-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/tmp-XX:OnOutOfMemoryError=kill-9%pcom.cloudera.server.cmf.Main
mysql27451015:16?00:00:04/usr/sbin/mysqld--daemonize--pid-file=/var/run/mysqld/mysqld.pid
root98644959015:28pts/000:00:00grep--color=automysql


查找与指定条件匹配的进程 - 「pgrep」 ,,就是ps -ef|grep缩写

[root~]nbsp;pgrepmysqld
3584

查看端口的进程,比如mysql的端口是3306

[root@node01~]#lsof-i:3306
COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAME
java1726cloudera-scm285uIPv4506250t0TCPlocalhost:58292->localhost:mysql(ESTABLISHED)
mysqld2745mysql27uIPv6471640t0TCP*:mysql(LISTEN)
mysqld2745mysql40uIPv6540600t0TCPlocalhost:mysql->localhost:58296(E

杀进程使用kill -9命令,比如 kill -9 1726,就是杀Mysql进程

3.2 守护进程

守护进程就是通常说的daemon进程,是linux后台执行的一种进程,不会随着终端的关闭而停止运行,开Linux系统的会自动打开。

不挂断地运行命令。no hangup的缩写,意即“不挂断”。和&联用

[root@node01~]#tail-f/var/log/messages
May116:01:10node01kubelet:I050116:01:10.34475726130server.go:837]Clientrotationison,willbootstrapinbackground

[root@node01~]#ps-ef|greptail
root2621025353016:01pts/100:00:00tail-f/var/log/messages
root2655525310016:01pts/000:00:00grep--color=autotail

关闭上面的tail-f/var/log/messages

[root@node01~]#ps-ef|greptail
[root@node01~]#ps-ef|greptail
root2735325310016:03pts/000:00:00grep--color=autotail


一般需要nohup和 &连用

[root@node01~]#nohuptail-f/var/log/messages&
[1]27718
nohup:忽略输入并把输出追加到"nohup.out"

[root@node01~]#ps-ef|greptail
root2771825353016:04pts/100:00:00tail-f/var/log/messages
root2944425310016:07pts/000:00:00grep--color=autotail
关闭上面的nohuptail-f/var/log/messages&

[root@node01~]#ps-ef|greptail
root277181016:04?00:00:00tail-f/var/log/messages
root2994625310016:08pts/000:00:00grep--color=autotail

3.3 查看进程

ps -ef查看进程

[root~]#ps-ef
UIDPIDPPIDCSTIMETTYTIMECMD
root100Jun23?00:00:05/usr/lib/systemd/systemd--switched-root--system--deserialize21
root200Jun23?00:00:00[kthreadd]
...
[root~]#ps-ef|grepmysqld
root49434581022:45pts/000:00:00grep--color=automysqld
mysql2525710Jun25?00:00:39/usr/sbin/mysqld--daemonize--pid-file=/var/run/mysqld/mysqld.pid

本文已收录 GitHub,传送门~[1] ,里面更有大厂面试完整考点,欢迎 Star。

Reference

[1]

传送门~: https://github.com/MaoliRUNsen/runsenlearnpy100