Linux学习笔记(第二部分:系统管理篇)
2.系统管理篇
2.1.网络管理
2.1.1.网络状态查看
网络状态查看工具主流有两个工具包(net-tools和iproute)
-
net-tools
-
ifconfig
- eth0是我们的第一块网卡(网络接口)
- 但我们的第一个网络接口可能叫做下面的名字
- eno1 板载网卡
- ens33 PCI-E网卡
- enp0s3 无法获取物理信息的PCI-E网卡
- CentOS7使用了一致性设备命名,以上都不匹配才使用eth0
- 网卡命名规则受biosdevname和net.ifnames两个参数影响
- 编辑
/etc/default/grub
文件,在第六行的’rhgb quiet’的末尾新增biosdevname=0 net.ifnames=0
; - 更新grub ,使用命令
grub2-mkconfig -o /boot/grub2/grub.cfg
; - 重启
reboot
- 编辑
-
mii-tool (网卡名)
测试网线的连接状态; -
route
当我们需要连接其他网络通信范围的时候,我们就需要配置一个网关(路由);-
route -n
使用-n参数不解析主机名
-
-
netstat
-
-
iproute2
- netstat:检查服务范围
netstat -ntpl
- ss:检查服务范围
ss -ntpl
- netstat:检查服务范围
2.1.2.网络配置命令
-
网卡配置
-
ifconfig <接口> <IP地址> [netmask <子网掩码>]
-
ifup <接口>
启用网卡 -
ifdown <接口>
禁用网卡
-
-
添加和删除网关,我们在添加和删除之前可以使用
route -n
对网关进行查看route del default gw <网关ip>
route add default gw <网关ip>
route add -host <指定ip> gw <网关ip>
route add -net <指定网段> netmask <子网掩码> gw <网关ip>
2.1.3.网络故障排除命令
- ping
- traceroute:辅助ping命令,路由追踪
- mtr:辅助ping命令,检查数据包有没有可能丢失
-
nslookup (域名或ip)
:解析域名 -
telnet (域名或ip) (端口)
:检查端口 - tcpdump:更细致的分析数据包
-
tcpdump -i any -n port (端口)
:抓指定端口的包 -
tcpdump -i any -n host (ip地址)
:抓指定ip的包 -
tcpdump -i any -n host (ip地址) and port(端口)
:抓指定ip和端口的包 -
tcpdump -i any -n host (ip地址) and port(端口)-w (文件目录)
:抓取指定ip和端口的包并写入到指定文件下中
-
- netstat:检查服务范围
netstat -ntpl
- ss:检查服务范围
ss -ntpl
2.1.4.网络配置文件
网络服务管理程序分为两种:分别为SysV何systemd
service network start|stop|restart|status
-
chkconfig --list network
,在执行完该命令后出现下图,我买了可以将SysV这个网络管理程序进行关闭。我们可以执行chkconfig --level 2345 network off
。 systemctl list-unit-files NetworkManager.service
systemctl start|stop|restart|enable|disable NetworkManager
网络配置文件
-
ifcfg-eth0
在/etc/sysconfig/network-scripts/
目录下,下图是我设置的静态IP的网络配置文件 /etc/hosts
2.2.软件包管理
2.2.1.rpm
-
包管理器是方便软件安装,卸载,解决软件依赖关系的重要工具
- CentOS,RedHat使用yum包管理器,软件安装包格式为rpm;
- Debian,Ubuntu使用apt包管理器,软件安装包格式为deb
-
我们的光盘文件中已经有大量的rpm包,我们需要将该光盘文件(块特殊文件)挂载到指定的目录上,推荐挂载到
/mnt
目录下mount /dev/sr0 /mnt
-
rpm包格式
-
rpm
命令常用参数-
-q
查询软件包;-
rpm -qa | more
:查看所有安装的软件包 -
rpm -q (软件包名)
:查看指定的软件包
-
-
-i
安装软件包; -
-e
卸载软件包;
-
2.2.2.yum
-
CentOS 的yum源
- http://mirror.centos.org/centos/7/ (国外镜像)
- https://opsx.alibaba.com/ (国内镜像)
-
yum配置文件
-
/etc/yum.repos.d/CentOS-Base.repo
-
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
通过命令来获取配置文件,并覆盖原有的配置文件。
-
-
yum常用命令
-
yum makecache
将服务器上的软件包信息进行本地缓存,以提高搜索效率. -
yum install (软件包)
安装软件包 -
yum remove (软件包)
卸载软件包 -
yum list|grouplist
查看软件包 -
yum update (软件包)
升级软件包
-
2.2.3.源代码编译安装
- 二进制安装
- 源代码编译安装(以openresty服务器为例)
wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
tar -zxf openresty-VERSION.tar.gz
cd openresty-VERSION/
./configure --prefix=/usr/local/openresty
make -j2
make install
2.3.进程管理
2.3.1.查看进程
-
ps
-
ps -e | more
:select all processes except session leaders and processes not associated with a terminal -
ps -ef | more
do full-format listing -
ps -eLf | grep (字符)
获取到线程信息
-
pstree
-
top
2.3.2.调整进程优先级
- 调整优先级
-
nice
范围从-20到19,值越小优先级越高,抢占资源就越多;- 我们在
top
命令中可以根据NI来查看nice值 nice -n (nice值) (可执行程序)
- 我们在
- renice 重新设置优先级
renice -n (nice值) (pid)
-
- 进程的作业控制
-
jobs
我们可以通过jobs
命令找到后台运行的程序-
fg (jobs编号)
将程序调回到前台运行; -
bg (jobs编号)
将程序调回到后台运行;
-
-
&
-
(执行程序) &
就可以让程序在后台运行;
-
-
ctrl+z
当在前台运行某个程序的时候我们可以使用ctrl+z
将该程序在后台暂停;
-
2.3.3.进程间的通信
- 信号是进程间通信方式之一,典型用法是:终端输入终端命令,通过信号机制停止一个程序的运行;
- 使用信号的常用快捷键和命令
-
kill -l
查看所有支持的信号- SIGINT 通知前台进程组终止进程
ctrl+c
; - SIGKILL 立即结束程序,不能被阻塞和处理
kill -9 (pid)
- SIGINT 通知前台进程组终止进程
-
2.3.4.守护进程(daemon)及日志
守护进程:实现了不需要终端就可以启动,输出打印到指定文件中,占用的目录是根目录;
-
使用
nohup
与&
配合运行一个命令,让该命令在终端退出的时候继续运行;(类似于守护进程)-
nohup (某指令例如:tail -f /var/log/messages) &
: -
nohup
使进程忽略hangup
(挂起)信号; -
nohup
忽略输入并把输出追加到./nohup.out
-
-
查看
nohup
与守护进程的挂载目录和输出- 我们可以使用
cd /proc/(pid)
进入进程的目录,接着ll cwd
来查看进程挂载的目录.由于我们是在根目录进行创建该进程,所以我们挂载目录也是根目录.我们也可以使用ll fd
来查看文件的输入输出.
- 我们可以使用
-
使用
screen
,在进行终端操作的时候,先进入到screen的环境.即使网络断开,还可以继续运行程序.-
screen
进入screen环境; -
ctrl+a d
退出(datached) screen环境; -
screen -ls
查看screen的会话; -
screen -r (sessionid)
恢复会话;
-
-
daemon的日志全部都在
/var/log
目录下-
/var/log/messages
:系统常规日志; -
/var/log/dmesg
:内核的运行信息; -
/var/log/secure
:系统的安全日志; -
/var/log/cron
:计划任务的日志信息;
-
2.4.服务管理
2.4.1.服务管理工具systemctl
-
systemctl
常见操作-
systemctl start|stop|restart|reload(部分服务支持)|enable|disable (服务名称)
; - 软件包安装的服务单元
/usr/lib/systemd/system
;
-
- 在
/usr/lib/systemd/system
目录下:我们可以使用下图命令查看默认的级别,同样systemctl set-default multi-user.target
,默认启动级别为多用户级别,即字符界面. - 在
/usr/lib/systemd/system
目录下,我们可以查看vi sshd.service
,在shell篇我们去编写定制服务;
2.5.安全管理
2.5.1.SELinux(安全增强的Linux)
-
查看SELinux的命令
-
getenforce
查看SELinux的状态 -
/etc/selinux/config
可以去配置SELinux的状态,通常我们配置permissive级别即可.配置完成之后重启之后生效.- enforcing:强制
- permissive:警告
- disabled:关闭
-
2.6.内存和磁盘管理
2.6.1.内存和磁盘查看
-
内存查看
-
free
-
free
同样还有几个参数-m
,-g
来以M和G的数值显示内存大小
-
-
top
:见2.3.1
-
-
磁盘查看
-
fdisk
-
fdisk -l
来查看硬盘的相关信息;我们可以发现我们的硬盘文件是在/dev
目录下,在Linux系统上,任何设备与接口都是以文件的形式存在于该目录中,你只要通过读写这个目录下面的某个文件,就等于在读写某个设备;
-
-
parted -l
来查看硬盘相关信息 -
df
-
df -h
查看挂载信息
-
-
du
-
du -h (文件名)
查看文件的实际的占用大小(去掉空洞内容) -
du -h (文件名)
与ls -lh (文件名)
区别就在于前者占用大小去掉空洞内容,而后者没有.
-
-
2.6.2.常见文件系统
- Linux支持多种文件系统,常见的有
- ext4(CentOS6默认)
- xfs(CentOS7默认)
- NTFS(需要额外安装软件)