Linux实战技能(三)-系统管理

1. 网络管理

1.1 ⽹络状态查看

  • net-tools
    • ifconfig
      • eth0 第⼀块⽹卡(⽹络接口)
      • 查看⽹卡物理连接情况
        • mii-tool eth0
    • route
      • 查看⽹网关
        • route -n
        • 使⽤ -n 参数不解析主机名
      • 添加⽹关
        • route add default gw <⽹网关ip>
        • route add -host <指定ip> gw <⽹网关ip>
        • route add -net <指定⽹网段> netmask <⼦子⽹网掩码> gw <⽹网关ip>
    • netstat
  • Iproute
    • ip
      • ip addr ls
        • ifconfig
      • ip link set dev eth0 up
        • ifup eth0
      • ip addr add 10.0.0.1/24 dev eth1
        • ifconfig eth1 10.0.0.1 netmask 255.255.255.0
      • ip route add 10.0.0/24 via 192.168.0.1
        • route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.1
    • Ss

1.2 ⽹络故障排除命令

  • ping
    • 网络通不通
  • traceroute
    • 路由
  • mtr
    • 丢包
  • nslookup
    • 域名访问
  • telnet
    • 端口问题
  • tcpdump
  • netstat
  • ss

1.3 网络服务管理

  • ⽹络服务管理程序分为两种,分别为SysV和systemd
    • service network start|stop|restart
    • chkconfig -list network
    • systemctl list-unit-files NetworkManager.service
    • systemctl start|stop|restart NetworkManger
    • systemctl enable|disable NetworkManger
  • 主机名
    • hostname
    • hostname c7.test11
    • hostname set-hostname c7.test11

2. 软件安装

  • rpm 包和 rpm 命令
  • yum 仓库
  • 源代码编译安装
  • 内核升级
  • grub 配置⽂文件

2.1 软件包管理器

  • 包管理器是⽅便软件安装、卸载,解决软件依赖关系的重要工具
  • CentOS、RedHat 使⽤ yum 包管理器,软件安装包格式为 rpm
  • Debian、Ubuntu 使⽤ apt 包管理器,软件安装包格式为 deb
  • rpm 包
    • vim-common-7.4.10-5.el7.x86_64.rpm
    • 软件名称 软件版本 系统版本 平台
  • rpm 命令常⽤参数
    • -q 查询软件包
    • -i 安装软件包
    • -e 卸载软件包
  • rpm 包的问题
    • 需要⾃己解决依赖关系
    • 软件包来源不不可靠

例子:

1
2
3
4
5
6
7
8
9
10
# 显示已经安装的rpm软件包
$ rpm -qa
# 分屏显示
$ rpm -qa | more
# 查询安装的vim软件包
$ rpm -q vim*
# 卸载软件包
$ rpm -e vim*
# 卸载多个软件包
$ rpm -e vim* tmux*

2.2 yum管理软件包

  • yum 配置⽂件
    • /etc/yum.repos.d/CentOS-Base.repo
  • 常⽤选项
    • install 安装软件包
    • remove 卸载软件包
    • list| grouplist 查看软件包
    • update 升级软件包
  • 更改yum仓库镜像
  • yum install vim
  • yum remove vim
  • yum update

2.3 其他安装方式

2.4 升级内核

  • rpm 格式内核

    • 查看内核版本
      • uname –r
  • yum安装

    • 升级内核版本
      • yum install kernel-3.10.0
    • 升级已安装的其他软件包和补丁
      • yum update
  • 源代码编译安装内核

    • 安装依赖包

      • yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel
    • 下载并解压缩内核

    • 配置内核编译参数

      • cd /usr/src/kernels/linux-5.1.10/
      • make menuconfig | allyesconfig | allnoconfig
    • 使⽤当前系统内核配置

      • cp /boot/config-kernelversion.platform /usr/src/kernels/

        linux-5.1.10/.config

    • 编译

      • make -j2 all
      • 其中CPU数目可通过命令lscpu查询
    • 安装内核

      • 安装内核支持的组件
        • make modules_install
      • 安装内核
        • make install

2.5 grub 配置⽂件

  • grub 配置⽂件
    • 基本grub配置
      • /etc/default/grub
    • 新的grub配置文件
      • /etc/grub.d/
      • /boot/grub2/grub.cfg
      • grub2-mkconfig -o /boot/grub2/grub.cfg

3. 进程管理

  • 进程—运⾏中的程序,从程序开始运⾏到终⽌的整个⽣生命周期是可管理的
  • 进程也是树形结构
  • 进程和权限有着密不可分的关系
  • 查看命令
    • ps
    • pstree
    • top
1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看进行信息,包括UID、PID、PPID、C、STIME、TTY、TIME、CMD
$ ps -eLf | more

# MacOS信息
$ top
Processes: 405 total, 5 running, 400 sleeping, 1826 threads 22:02:45
Load Avg: 3.54, 4.17, 4.47 CPU usage: 15.43% user, 19.71% sys, 64.84% idle SharedLibs: 138M resident, 42M data, 24M linkedit.
MemRegions: 98102 total, 2019M resident, 101M private, 1087M shared. PhysMem: 7732M used (2199M wired), 459M unused.
VM: 1969G vsize, 1372M framework vsize, 118892587(0) swapins, 120274963(0) swapouts.
Networks: packets: 111277167/150G in, 85519715/43G out. Disks: 21984786/773G read, 16581121/641G written.
- Load Avg为平均负载,用来衡量系统的繁忙程度,包括1min, 5min, 15min
- CPU usage为CPU利用率
- Processes处理的任务
  • 进程的优先级调整
    • nice 范围从-20 到 19 ,值越⼩小优先级越⾼高,抢占资源就越多
    • renice 重新设置优先级
    • 进程的作业控制
      • jobs
      • & 符号
1
2
3
4
5
6
7
#!/bin/bash
echo $$

while :
do
:
done
1
2
3
4
5
6
7
8
9
10
11
12
$ ./XXX.sh
18746

$ top -p 18746
$ nice -n 10 ./XXX.sh
$ renice -n 15 18764

# 程序运行在后台
$ ./XXX.sh &
# 程序运行在前台
$ jobs
$ fg 1
  • 进程通信信号
    • Ctrl + C终止进程
    • kill -9 id终止id进程
  • 守护进程
    • 使⽤nohup 与 & 符号配合运⾏⼀个命令
      • 运行的该命令将不会因为终端等关闭而终止
    • screen 命令
      • 进入screen,命令为screen
      • 退出,ctrl+a d
      • screen -ls 查看 screen 的会话
      • screen -r sessionid 恢复会话
  • 查看系统日志
    • 路径为/var/log/
    • messages,操作日志
    • dmesg,内核相关日志信息
    • secure,安全日志
    • cron,计划任务日志
1
2
3
4
5
6
7
8
# 运行程序
$ nohup sh XXX.sh &

# 进入screen环境
$ screen

# 恢复程序
$ screen -r sessionid

4. 服务管理工具

  • 服务(提供常⻅功能的守护进程)集中管理工具
    • service
      • /etc/init.d/
    • systemctl
      • /usr/lib/systemd/system/
      • systemctl start | stop | restart | reload | enable | disable 服务名称

5. 内存和磁盘管理

  • 内存使用率查看
    • free
      • free -m
      • free -g
    • top
    • du
      • du -h
    • fdisk
      • fdisk -l
    • df
      • df -h
  • 文件系统
    • ext4
      • 超级块、超级块副本
      • i 节点(inode)
        • ls -i
        • 记录每一个文件相关属性
      • 数据块(datablock)
        • 记录数据
    • cp更改了文件i节点和复制了数据block
    • mv没有改变i节点和数据block,只更改了文件名
    • 硬链接ln,不改变文件的i节点
    • 软连接ln -s,更改了文件i节点
  • 磁盘分区和挂载
    • fdisk /dev/sdc
    • parted
  • 逻辑卷管理
    • pvcreate /dev/sdb1
    • pvs,显示所有物理卷

6. 参考