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
      • Linux学习笔记(第二部分:系统管理篇)
    • mii-tool (网卡名)测试网线的连接状态;

    • route 当我们需要连接其他网络通信范围的时候,我们就需要配置一个网关(路由);

      • route -n使用-n参数不解析主机名
    • netstat

  • iproute2

    • netstat:检查服务范围
      • netstat -ntpl
    • ss:检查服务范围
      • ss -ntpl

2.1.2.网络配置命令

  • 网卡配置

    • ifconfig <接口> <IP地址> [netmask <子网掩码>]

    • ifup <接口>启用网卡

    • ifdown <接口>禁用网卡

  • 添加和删除网关,我们在添加和删除之前可以使用route -n对网关进行查看
    Linux学习笔记(第二部分:系统管理篇)

    • 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
    Linux学习笔记(第二部分:系统管理篇)
  • systemctl list-unit-files NetworkManager.service
  • systemctl start|stop|restart|enable|disable NetworkManager

网络配置文件

  • ifcfg-eth0/etc/sysconfig/network-scripts/目录下,下图是我设置的静态IP的网络配置文件
    Linux学习笔记(第二部分:系统管理篇)
  • /etc/hosts

2.2.软件包管理

2.2.1.rpm

  • 包管理器是方便软件安装,卸载,解决软件依赖关系的重要工具

    • CentOS,RedHat使用yum包管理器,软件安装包格式为rpm;
    • Debian,Ubuntu使用apt包管理器,软件安装包格式为deb
  • 我们的光盘文件中已经有大量的rpm包,我们需要将该光盘文件(块特殊文件)挂载到指定的目录上,推荐挂载到/mnt目录下

    • mount /dev/sr0 /mnt
  • rpm包格式
    Linux学习笔记(第二部分:系统管理篇)

  • 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
      Linux学习笔记(第二部分:系统管理篇)
    • 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服务器为例)
    1. wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
    2. tar -zxf openresty-VERSION.tar.gz
    3. cd openresty-VERSION/
    4. ./configure --prefix=/usr/local/openresty
    5. make -j2
    6. 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 | moredo full-format listing
    • ps -eLf | grep (字符)获取到线程信息
  • pstree
  • top
    Linux学习笔记(第二部分:系统管理篇)

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)

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,默认启动级别为多用户级别,即字符界面.
    Linux学习笔记(第二部分:系统管理篇)
  • /usr/lib/systemd/system目录下,我们可以查看vi sshd.service ,在shell篇我们去编写定制服务;
    Linux学习笔记(第二部分:系统管理篇)

2.5.安全管理

2.5.1.SELinux(安全增强的Linux)

  • 查看SELinux的命令

    • getenforce查看SELinux的状态
    • /etc/selinux/config可以去配置SELinux的状态,通常我们配置permissive级别即可.配置完成之后重启之后生效.
      • enforcing:强制
      • permissive:警告
      • disabled:关闭
        Linux学习笔记(第二部分:系统管理篇)

2.6.内存和磁盘管理

2.6.1.内存和磁盘查看

  • 内存查看

    • free

      • free同样还有几个参数-m,-g来以M和G的数值显示内存大小
        Linux学习笔记(第二部分:系统管理篇)
    • top:见2.3.1

  • 磁盘查看

    • fdisk

      • fdisk -l来查看硬盘的相关信息;我们可以发现我们的硬盘文件是在/dev目录下,在Linux系统上,任何设备与接口都是以文件的形式存在于该目录中,你只要通过读写这个目录下面的某个文件,就等于在读写某个设备;
        Linux学习笔记(第二部分:系统管理篇)
    • parted -l来查看硬盘相关信息

    • df

      • df -h查看挂载信息
    • du

      • du -h (文件名)查看文件的实际的占用大小(去掉空洞内容)
      • du -h (文件名)ls -lh (文件名)区别就在于前者占用大小去掉空洞内容,而后者没有.

2.6.2.常见文件系统

  • Linux支持多种文件系统,常见的有
    • ext4(CentOS6默认)
    • xfs(CentOS7默认)
    • NTFS(需要额外安装软件)