Linux基础Part5——系统管理

[TOC]

任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序。

  1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等

    设置任务调度文件:/etc/crontab

  2. 用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份

    执行 crontab –e 命令,输入任务到调度文件

1
2
crontab [ -erl ]
service crond restart:[ 重启任务调度 ]
  • -e:编辑定时crontab任务
  • -l:查询crontab任务
  • -r:删除当前用户所有的crontab任务
1
*/1 * * * * ls –l /etc/ > /tmp/to.txt  # 每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令
  • 第1个*:一小时中的第几分钟。0~59。
  • 第2个*:一天中的第几小时。0~23。
  • 第3个*:一个月中的第几天。1~31。
  • 第4个*:一年中的第几月。1~12。
  • 第5个*:一周中的星期几。0~7。(0、7都表示周日)
  • *:代表任何时间
  • ,:代表不连续的时间
  • -:代表连续的时间范围
  • */n:代表每隔多久执行一次

demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
先编写一个文件 /home/mytask1.sh
date >> /tmp/mydate
给 mytask1.sh 一个可以执行权限chmod 744 /home/mytask1.sh
crontab -e
*/1 * * * * /home/mytask1.sh

[root@VM-1-14-centos ~]# vim task1.sh # 先编写一个shell脚本
date >> /tmp/mydate
[root@VM-1-14-centos ~]# chmod 744 task1.sh # 给脚本一个可执行权限
[root@VM-1-14-centos ~]# crontab -e # 编辑任务
*/1 * * * * /home/mytask1.sh
[root@VM-1-14-centos ~]# cd /tmp/
[root@VM-1-14-centos tmp]# cat mydate # 查看输出
Sat Mar 13 13:35:01 CST 2021
Sat Mar 13 13:36:01 CST 2021
Sat Mar 13 13:37:01 CST 2021

磁盘管理

分区基础知识

分区的方式:

  1. mbr 分区:
    1. 最多支持四个主分区
    2. 系统只能安装在主分区
    3. 扩展分区要占一个主分区
    4. MBR 最大只支持 2TB,但拥有最好的兼容性
  2. gpt 分区:
    1. 支持无限多个主分区(但操作系统可能限制,比如 windows 下最多 128 个分区)
    2. 最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB )
    3. windows7 64 位以后支持 gpt

Linux分区

  1. 原理:
    1. Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
    2. Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
  2. 硬盘说明:
    1. Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
    2. 对于 IDE 硬盘,驱动器标识符为“hdx”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
    3. 对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样
1
2
3
4
5
6
7
8
9
10
11
[root@VM-1-14-centos tmp]# lsblk  # 老色比裂开 查看系统分区和挂载情况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 111M 0 rom # 光驱
vda 253:0 0 50G 0 disk # 硬盘
└─vda1 253:1 0 50G 0 part / # 分区1
[root@VM-1-14-centos tmp]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sr0 iso9660 config-2 2021-03-06-19-49-34-00
vda
└─vda1 ext4 4b499d76-769a-40a0-93dc-4a31a59add28 /
# 分区名 分区类型 格式化产生的40位唯一标识分区id 挂载点

在虚拟机上挂载一块硬盘

  1. 虚拟机添加硬盘

  2. 分区 fdisk /dev/sdb

  3. 格式化 mkfs -t ext4 /dev/sdb1

  4. 临时挂载
    先创建目录 /home/newdisk
    挂载指令:mount /dev/sdb1 /home/newdisk
    卸载指令:umount 挂载目录或硬盘目录

  5. 永久挂载
    修改设置:vim /etc/fstab
    添加一行:/dev/sdb1 /home/newdisk ext4 defaults 0 0

    生效:mount -a

磁盘查询

df :查询系统磁盘总体占用情况

1
df [ -ahikHTm ] [ 目录或文件名 ]
  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
  • -H :以 M=1000K 取代 M=1024K 的进位方式
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
  • -i :不用硬盘容量,而以 inode 的数量来显示
  • [ 目录或文件名 ]:指定挂载目录

demo:

1
2
3
4
5
6
7
8
[root@VM-1-14-centos tmp]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 24K 3.9G 1% /dev/shm
tmpfs 3.9G 428K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 50G 3.3G 44G 8% /
tmpfs 783M 0 783M 0% /run/user/0

du:查询指定目录的磁盘占用情况

与 df 不一样的是,du 这个命令会直接到文件系统内去搜寻所有的文件数据。

1
du [ -ahskm ] 文件或目录名称
  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件夹而已
  • -h :以人们较易读的容量格式 (G/M) 显示
  • -s :列出总量而已,而不列出每个各别的目录占用容量
  • -S :不包括子目录下的总计,与 -s 有点差别
  • –max-depth=1 子目录深度

demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@VM-1-14-centos tmp]# du -h  # 默认为当前目录下文件夹(包含隐藏文件夹)的磁盘占用情况
4.0K ./.XIM-unix
4.0K ./.font-unix
4.0K ./.X11-unix
4.0K ./systemd-private-93e24fc7bc744033a007e9d37393f18d-ntpd.service-qBqeOq/tmp
8.0K ./systemd-private-93e24fc7bc744033a007e9d37393f18d-ntpd.service-qBqeOq
4.0K ./.ICE-unix
13M ./d0ba2854fb7784799d5cfe6838f4f3a6
4.0K ./.Test-unix
13M . # 当前目录下文件夹的总量
[root@VM-1-14-centos tmp]# du -ach
4.0K ./virtio_blk_affinity.log
4.0K ./.XIM-unix
......
4.0K ./.Test-unix
13M .
13M total

实用指令

1
2
3
4
5
6
7
8
[root@VM-1-14-centos ~]# ls -l | grep "^d" | wc -l  # 统计当前目录下文件夹数量
2
[root@VM-1-14-centos ~]# ls -l | grep "^-" | wc -l # 统计当前目录下文件数量
5
[root@VM-1-14-centos ~]# ls -lr | grep "^-" | wc -l # 递归统计当前目录下文件数量
5
[root@VM-1-14-centos ~]# yum install tree # 安装tree
[root@VM-1-14-centos ~]# tree / # 以树状显示目录结构

网络配置

1
2
[root@VM-1-14-centos ~]# ifconfig  # 显示或设置网络设备
[root@VM-1-14-centos ~]# ping www.baidu.com # 测试网络连通

主要是虚拟机用

线程管理

进程的基本介绍

  1. 在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号(进程号PID)。
  2. 每一个进程,都会对应一个父进程(父进程号PPID),而这个父进程可以复制多个子进程例如 www 服务器。
  3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程(守护进程)则是实际在操作,但屏幕上无法看到的进程。
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才才结束。

查看进程

1
ps [ -aux ]
  • -a:显示当前终端所有进程信息
  • -u:以用户的格式显示进程
  • -x:显示后台进程运行的参数
  • -e:显示所有进程
  • -f:全格式
1
2
3
4
5
6
7
8
9
10
[root@VM-1-14-centos ~]# ps -aux | grep xxx  # 查看是否有xxx进程
root 16906 0.0 0.0 112812 972 pts/0 S+ 19:19 0:00 grep --color=auto xxx
[root@VM-1-14-centos ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 191036 4036 ? Ss Mar06 0:59 /usr/lib/systemd/systemd --switched-root --system --dese
......
[root@VM-1-14-centos ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mar06 ? 00:01:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
......
  • USER:用户名称

  • PID:进程号

  • %CPU:进程占用 CPU 的百分比

  • %MEM:进程占用物理内存的百分比

  • VSZ:进程占用的虚拟内存大小(单位:KB)

  • RSS:进程占用的物理内存大小(单位:KB)

  • TTY:终端名称

  • STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等

  • START:进程的启动时间

  • TIME:CPU 时间,即进程使用 CPU 的总时间

  • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

  • C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高

  • STIME:进程启动的时间

  • TTY:完整的终端名称

  • TIME:CPU 时间

  • CMD:启动进程所用的命令和参数

结束进程

1
2
kill [ -9 ] 进程号
killall 进程名
  • 9:强制终止

demo:

1
2
[root@VM-1-14-centos ~]# kill 1590  # 结束/usr/sbin/sshd进程,终止远程登录服务
[root@VM-1-14-centos ~]# killall gedit # 结束所有gedit进程

进程树

1
pstree [ -pu ]
  • -p :显示进程的 PID
  • -u :显示进程的所属用户

服务(守护进程)管理

1
service 服务名 [ start | stop | restart | reload | status ]

查看服务列表

1
ls -l /etc/init.d/

chkconfig指令

1
2
chkconfig --list | grep 服务名
chkconfig --level n 服务名 on/off

demo:

1
2
3
4
5
6
7
8
9
10
11
12
#  案例 1: 请显示当前系统所有服务的各个运行级别的运行状态
chkconfig --list
# 案例 2 :请查看 sshd 服务的运行状态
service sshd status
# 案例 3: 将 sshd 服务在运行级别 5 下设置为不自动启动
chkconfig --level 5 sshd off
# 案例 4: 当运行级别为 5 时,关闭防火墙。
chkconfig --level 5 iptables off
# 案例 5: 在所有运行级别下,关闭防火墙
chkconfig iptables off
# 案例 6: 在所有运行级别下,开启防火墙
chkconfig iptables on

动态监控进程

top 与 ps 命令很相似,都用来显示正在执行的进程。但不同在于 top 在执行一段时间可以更新正在运行的的进程。

1
top [ -dip ]
  • -d:秒数,指定top命令间隔多少秒更新,默认3秒
  • -i:使top不显示闲置或僵死进程
  • -p:通过指定进程PID来显示相应进程状态

交互操作:

  • P:以CPU使用率排序(默认此项)
  • M:以内存使用率来排序
  • N:以PID排序
  • q:退出top
  • k:杀死进程
1
2
3
4
5
6
7
8
9
10
11
top - 21:15:35 up 7 days,  1:25,  1 user,  load average: 0.00, 0.02, 0.05        # 当前时间 运行时间 登录用户数 负载均衡
Tasks: 93 total, 2 running, 91 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st # cpu使用情况
KiB Mem : 8009084 total, 5870600 free, 217104 used, 1921380 buff/cache # 内存使用情况
KiB Swap: 0 total, 0 free, 0 used. 7481244 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7164 root 20 0 161996 2176 1552 R 0.3 0.0 0:00.16 top
24146 root 20 0 160712 9412 2020 S 0.3 0.1 4:59.89 barad_agent
24147 root 20 0 607352 15888 2200 S 0.3 0.2 25:44.34 barad_agent
......

查看网络状态

1
netstat [ -anp ]
  • -an 按一定顺序排列输出
  • -p 显示哪个进程在调用
1
2
3
4
5
[root@VM-1-14-centos ~]# netstat -anp | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1590/sshd
tcp 0 52 172.17.1.14:22 114.222.3.200:9702 ESTABLISHED 4553/sshd: root@pts
unix 3 [ ] STREAM CONNECTED 17005 1590/sshd
unix 2 [ ] DGRAM 11566495 4553/sshd: root@pts

指定运行级别

运行级别说明:

  1. 关机
  2. 单用户(在实体机上开机时进入单用户模式,找回root密码)
  3. 多用户无网络
  4. 多用户有网络
  5. 保留级别
  6. 图形界面
  7. 系统重启

修改默认运行级别可以修改文件 /etc/inittab 中的 id:5:initdefault:

或者使用命令:init [ 0123456 ]

开机流程:

  1. 开机
  2. BIOS
  3. /boot
  4. init进程1
  5. 运行级别
  6. 运行级别对应的服务