云计算百科
云计算领域专业知识百科平台

Linux -系统管理

07-系统管理


07-1 引导过程与服务控制

1. Linux 系统引导过程

1.1 开机自检
  • 过程:系统开机后,通过 BIOS 对 CPU、内存、显卡、键盘等硬件设备进行初步检测,检测成功后根据 BIOS 设置的启动顺序,系统会选择一个设备(硬盘、光驱、U盘等)进行引导。
  • 总结:检测到第一个能够启动的设备,如硬盘或光驱、U盘。
1.2 MBR 引导
  • 过程:如果从硬盘启动,系统会从硬盘的第一个扇区加载 MBR(主引导记录),并通过 MBR 启动菜单(如 GRUB)选择操作系统启动。
  • 总结:从硬盘的 MBR 引导程序启动,运行 GRUB 引导加载器。
1.3 GRUB 引导菜单
  • 过程:GRUB(GRand Unified Bootloader)是 Linux 常用的多重操作系统引导程序。GRUB 会显示启动菜单,用户选择启动项后加载操作系统的内核文件,并将控制权交给内核。
  • 总结:GRUB 引导程序读取 /boot/grub2/grub.cfg 文件,加载并启动操作系统内核。
1.4 加载 Linux 内核
  • 过程:内核文件是一个预编译的二进制文件,介于硬件与系统程序之间,负责管理硬件资源和系统进程。
  • 总结:将内核文件和镜像文件加载到内存。
1.5 init 进程初始化
  • 过程:内核加载后,会启动系统的初始化进程 /sbin/init,该进程负责进一步的系统初始化工作,如加载硬件驱动、启动系统服务,最终等待用户登录。
  • 总结:内核加载并启动 init 进程,完成系统的初始化。

2. GRUB2 与 GRUB 的区别

2.1 GRUB2 的优点:
  • 支持多种文件系统。
  • 模块化设计,允许动态加载需要的模块,从而缩小核心镜像的体积。
  • 配置文件不同,GRUB2 使用 /boot/grub2/grub.cfg,而 GRUB 使用 /boot/grub/grub.conf。
  • 总结:GRUB2 增强了功能,支持更多的文件系统和自动化配置,同时提高了系统的灵活性和扩展性。

3. Systemd 服务管理

3.1 Systemd 的优点
  • 并行启动服务:与传统的 SysVinit 相比,Systemd 支持并行启动多个服务,从而加速系统启动过程。
  • 按需启动服务:Systemd 可以按需启动服务,避免了启动不必要的服务,提高了系统的效率。
  • 总结:Systemd 改善了系统的启动速度和服务管理效率,解决了 SysVinit 启动慢和脚本复杂的问题。
3.2 运行级别与 Systemd 目标

在 Linux 系统中,运行级别(runlevel)定义了系统的运行状态。Systemd 通过目标(target)来代替传统的运行级别。以下是常见的运行级别与对应的 Systemd 目标:

运行级别(Runlevel)Systemd 目标(Target)说明
0 poweroff.target 关机
1 rescue.target 单用户模式
2、3、4 multi-user.target 多用户模式
5 graphical.target 图形化界面
6 reboot.target 重启
  • 0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的;
  • 1 单用户模式,root权限,用于系统维护,禁止远程登录(只能通过实机进去),该模式的进入方式百度操作即可;就像windows下的安全模式登录;(进入单用户模式的时候root不需要密码就可以登录,所以在此模式下可以修改root密码)
  • 2 多用户模式,没有NFS和网络支持;
  • 3 完整的多用户文本模式,有NFS和网络,登录后进入控制台命令行模式。
  • 4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电池用尽时,可以切换到这个模式来做一些设置;
  • 5 图形化模式,登录后进入图形GUI模式,X windows系;
  • 6 重启模式,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启
设置与切换运行级别
  • 查看当前默认目标:

    systemctl get-default

  • 设置默认目标:

    systemctl set-default multi-user.target

  • 切换到指定目标:

    systemctl isolate graphical.target

  • 示例:切换到图形界面:

    systemctl isolate graphical.target

3.3 服务管理
  • 启用服务开机启动:

    systemctl enable httpd.service

  • 查看服务的开机启动状态:

    systemctl is-enabled httpd.service

  • 禁用服务开机启动:

    systemctl disable httpd.service

  • 列出所有已启用的服务:

    systemctl list-unit-files | grep enabled

  • 查看系统中所有已激活的服务:

    systemctl list-units –type=service

  • 永久修改主机名:

    hostnamectl set-hostname newname

  • 设置系统语言为中文:

    localectl set-locale LANG=zh_CN.utf8


4. 课后扩展

4.1 chkconfig 命令

chkconfig 是一个用于查看和配置服务是否在特定运行级别下启动的工具。常用命令如下:

  • 查看服务状态:

    chkconfig –list httpd

  • 添加服务到系统:

    chkconfig –add httpd

  • 设置服务在特定级别下启动:

    chkconfig –level 35 httpd on

4.2 systemd 与 chkconfig 的对比
  • systemd 是现代的服务管理工具,支持并行服务启动和按需启动服务,配置文件为 .service。
  • chkconfig 用于较早的服务管理,依赖于运行级别和手动设置服务的开机启动。

5. 总结与案例

  • Linux 系统引导过程:包括开机自检、MBR 引导、GRUB 引导菜单、加载内核以及 init 进程初始化。
  • Systemd 服务管理:替代传统的 init 进程,通过并行启动服务、按需启动服务提高系统启动速度。
  • 服务管理:使用 systemctl 命令管理服务的启动、停止和开机启动状态,支持配置服务在特定目标下的运行。

通过对 Linux 系统引导过程与服务管理的掌握,系统管理员可以高效地管理系统的启动过程、优化服务启动速度,并灵活管理系统服务的状态。


相关案例
  • 启用 Apache 服务开机启动:

    systemctl enable httpd.service

  • 切换到多用户模式(不带图形界面):

    systemctl isolate multi-user.target

  • 修改系统语言为中文:

    localectl set-locale LANG=zh_CN.utf8

  • 07-2 进程管理

    进程管理是操作系统管理进程和资源的关键部分。在 Linux 中,进程是系统中所有任务的核心,进程管理命令主要用于查看、控制和调度系统中的进程。

    1. 程序与进程的关系

    • 程序:是存储在硬盘上的可执行代码,像一本书的内容,静态存放在硬盘或其他存储设备上。例如,你下载并安装的一个应用程序(如 firefox)。
    • 进程:是程序在运行时的实例,像是一本书被人打开并阅读时,它在你眼前执行的过程。每当你运行一个程序,操作系统会创建一个进程,分配内存和 CPU 时间来执行这个程序。
    举例:
    • 程序:你购买的一本电子书,它是存放在你设备里的文件。
    • 进程:你打开这本电子书并开始阅读,操作系统在后台运行着读取文件的程序,显示页面内容。

    父进程与子进程
    • 父进程:是创建其他进程的进程,就像一个家长。
    • 子进程:是由父进程创建并执行的独立进程,就像子女一样。
    举例:
    • 父进程:一家公司的老板(父进程),负责管理和指挥。
    • 子进程:公司的员工(子进程),执行老板指派的任务。

    通过这个例子,父进程和子进程就像公司老板和员工一样,老板负责创建和管理员工,员工独立工作但与老板有密切的联系。


    2. 查看进程信息

    ps 命令

    ps(process status)命令用于查看系统中当前运行的进程。它显示了与进程相关的信息,如进程 ID (PID)、用户、CPU 和内存使用率等。

    • 常用选项:
      • ps -aux:显示所有进程,包括其他用户的进程。
      • ps -ef:以标准格式显示所有进程。
      • ps -aux | grep [进程名]:通过管道和 grep 命令过滤进程。
    • 输出字段解释:
      • USER:进程所属的用户。
      • PID:进程 ID。
      • %CPU:进程占用的 CPU 百分比。
      • %MEM:进程占用的内存百分比。
      • VSZ:进程使用的虚拟内存(单位 KB)。
      • RSS:进程使用的物理内存(单位 KB)。
      • STAT:进程的状态,常见状态有:R(运行)、S(睡眠)、Z(僵尸)、T(停止)等。
      • START:进程的启动时间。
      • TIME:进程占用的 CPU 时间。
      • COMMAND:启动该进程的命令。

    详解
    STAT:该进程的状态(D:不可中断的休眠状态:R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态: Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)

    D:系统守护进程
    T:调式、程序执行一般停止
    R :该程序目前正在运作,或者是可被运作;
    S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
    T :该程序目前正在侦测或者是停止了;
    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态D 不可中断状态.
    它们含意如下::
    <: 表示进程运行在高优先级上
    N: 表示进程运行在低优先级上
    L: 表示进程有页面锁定在内存中
    s: 表示进程是控制进程
    l: 表示进程是多线程的
    +: 表示当前进程运行在前台
    D:系统守护进程

    案例:

    ps -aux | grep vim

    查找 vim 进程,并显示它的 CPU 和内存占用情况。


    3. 动态查看进程信息

    top 命令

    top 命令用于动态显示 Linux 系统中运行的进程和资源使用情况,实时更新显示。

    • 常用快捷键:
      • P:按 CPU 使用率排序。
      • M:按内存使用量排序。
      • T:按时间排序。
      • q:退出 top。
    • 输出解释:
      • PID:进程 ID。
      • USER:启动该进程的用户。
      • %CPU:进程占用的 CPU 百分比。
      • %MEM:进程占用的内存百分比。
      • TIME+:进程累计使用的 CPU 时间。
      • COMMAND:执行的命令。

    案例:

    top

    启动 top,查看实时的进程和系统资源占用情况。按 P 键查看 CPU 使用率排序,按 M 键查看内存使用情况排序。


    4. pgrep命令查询进程信息

    常用的参数

    • -l:选项可同时输出对应的进程名以及PID
    • -U:选项查询特定用户的进程
    • -t:选项查询在特定终端运行的进程

    例1
    pgrep -l "log"

    例2
    pgrep -l -U teacher -t tty1

    [root@localhost ~]# pgrep -l -U "hackli"
    3045 bash

    5.pstree命令以树形结构列出进程信息

    pstree 命令默认情况下只显示各进程的名称,
    结合以下常用的参数使用:

    • -p:选项使用时可以同时列出对应的PID号
    • -u:选项可以列出对应的用户名
    • -a:选项可以列出完整的命令信息

    执行如下的“pstree -aup”命令可以查看当前系统的进程树,包括各进程对应的PID 号、用户名、完整命令等信息。从输出结果中可以看出,systemd 进程确实是 Linux 操作系统中所有进程的“始祖”

    例1
    pstree -aup hmj

    6. 进程的启动方式

    6.1 手工启动进程

    ​ 由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否 需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。
    进程在前台运行
    (如执行“ls -l”命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。

    ​ 启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。例如,当使 用 cp 命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&” 符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作

    cp /dev/cdrom /home/cetos7.iso &

    6.2 调度启动

    在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指 定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划 任务进程均在后台运行,不会占用用户的命令终端。
    进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。

    7. 进程的前后台调度

    7.1 Ctrl+Z组合键

    ​ 当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台 ,可以按 Ctrl+Z 组合键将该下载任务调入后台并暂停执行

    tar zcvf usr.tar.gz /usr

    7.2 jobs 命令

    jobs 命令用于查看当前会话中运行的后台任务。

    常用选项:

    • jobs -l:列出当前所有后台任务及其进程 ID。

    案例:

    将后台的进程恢复运行
    使用 bg(BackGround,后台)命令,可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作;
    使用 fg 命令(ForeGround,前台),可以将后台任务重新恢复到前台运行。
    除非后台中的任务只有一个,否则 bgfg 命令都需要指定后台进程的任务编号作
    为参数。例如,执行如下的“fg 1”命令可以将之前挂起至后台的 wget 进程重新调入前台执行。
    [root@localhost ~]# jobs
    [1]– Stopped cp /dev/cdrom mycd.iso
    [2]+ Stopped top
    [root@localhost ~]# fg 1

    查看当前终端会话中的后台任务。

    fg 和 bg 命令
    • fg:将后台任务带回前台执行。
    • bg:将暂停的任务放回后台继续执行。

    案例:

    fg %1

    将后台任务编号为 1 的任务带回前台。

    bg %2

    将后台任务编号为 2 的任务恢复在后台运行。

    8.终止进程的运行

    8.1 Ctrl+C组合键

    ​ 中断正在执行的命令

    8.2 kill 命令

    kill 命令用于发送信号给进程,通常用来终止进程。

    常用选项:

    • kill [PID]:正常终止进程。
    • kill -9 [PID]:强制终止进程(不可恢复)。

    案例:

    kill 1234

    终止 PID 为 1234 的进程。

    kill -9 1234

    强制终止 PID 为 1234 的进程。

    8.3 killall 命令

    killall 命令根据进程名称终止进程。

    案例:

    killall vim

    终止所有名为 vim 的进程。

    pkill 命令

    pkill 命令根据进程属性(如用户名、终端等)终止进程。

    案例:

    pkill -u root
    [root@localhost ~]# pkill -9 -U "hackli"

    终止所有由 root 用户启动的进程。


    9. 计划任务管理

    计划任务用于自动执行系统中的任务。Linux 中常用的计划任务工具包括 at 和 cron。


    9.1 一次性任务:at 命令

    at 命令用于设置一次性任务,任务将在指定时间执行。

    • 命令格式:

      at [HH:MM] [yyyy-mm-dd]
      at> [要执行的命令]

    • 常用选项:

      • atq:列出待执行的任务。
      • atrm [任务编号]:删除指定的任务。

    案例:

    at 16:30 2021-08-16
    at> echo "Backup completed" > /tmp/backup.log
    at> <EOT>

    设置任务在指定时间执行,并将输出保存到 /tmp/backup.log 文件中。


    9.2 周期性任务:cron 命令**

    cron 用于设置定期执行的任务。用户可以通过 crontab 命令编辑和管理自己的计划任务。

    • 命令格式:

      * * * * * [command]

      • *:每个字段的取值范围:分钟(0-59),小时(0-23),日期(1-31),月份(1-12),星期(0-6,0 为周日)。
      • [command]:要执行的命令。

    由于各字段的作用不同,其取值范围也不一样,如表 9-2 所示,当使用“*”时表示取值范围中的任意时间。crontab 任务配置记录中所设置的命令操作将在“分钟”+“小时”+“日期”+ “月份”+“星期”都满足的条件下执行。
    表 9-2 crontab 计划任务的配置字段说明

    分钟取值为 0~59 的任意整数
    小时取值为 0~23 的任意整数
    日期取值为 1~31 的任意整数(日期在该月份中必须有效)
    月份取值为 1~12 的任意整数
    星期取值为 0~7 的任意整数,0 或 7 代表星期日

    命令可以是普通的命令,也可以是自己编写的程序脚本

    除了“*”以外,还可以使用“-”(减号)、“,”(逗号)、“/”(斜杠)与数字构成表达式来表 示较复杂的时间关系。
    减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数 1、2、3、4。
    逗号“,”:可以表示一个间隔的不连续范围,如“3, 4, 6, 8”。
    斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3 天。

    常用命令:

    • crontab -e:编辑当前用户的 cron 任务。

    • crontab -l:列出当前用户的 cron 任务。

    • crontab -r:删除当前用户的所有 cron 任务。

      其他命令

      设置用户的周期性计划任务列表主要通过 crontab 命令进行,结合不同的选项可以完成不同的计划任务管理操作。常用的选项如下。
      -u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
      下面将分别讲解 crontab 命令相关选项的使用。

      crontab -u 用户名 #指定XX用户的cron服务
      crontab -u zx -l #列出zx用户下的cron的详细内容
      crontab -r #删除所有用户的cron内容,普通用户执行,只删除自己的cron内容
      crontab -r -u zx #删除zx用户的cron内容

    案例:

    50 7 * * * /usr/bin/systemctl start sshd.service
    50 22 * * * /usr/bin/systemctl stop sshd.service

    每天的 7:50 启动 sshd 服务,22:50 停止 sshd 服务。


    2.3 cron 服务管理
    • 启动 cron 服务:

      systemctl start crond

    • 查看 cron 服务状态:

      systemctl status crond

    • 启用 cron 服务开机启动:

      systemctl enable crond


    扩充 生产案列

    例如,若要按固定的周期重复完成一些系统管理任务,任务内容如下:①每天早上 7:50
    自动开启 sshd 服务,22:50 关闭 sshd 服务;②每隔五天清空一cron次 FTP 服务器公共目录
    /var/ftp/pub 中的数据;③每周六的 7:30 重新启动系统中的 httpd 服务;④每周一、周三、周五的下午 17:30,使用 tar 命令自动备份/etc/httpd 目录,则可由 root 用户通过 crontab 设置以下计划任务。

    [root@localhost ~]# crontab -e
    50 7 * * * /usr/bin/systemctl start sshd.service
    50 22 * * * /usr/bin/systemctl stop sshd.servic
    0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
    30 7 * * 6 /usr/bin/systemctl httpd restart
    30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
    */2 * * * * ls -lh /home/*

    普通用户执行“crontab -e”命令时,可以设置自己的计划任务(需要注意命令的执行权限)。
    例如,用户 jerry 设置一条计划任务:在每周日晚上的 23:55 将/etc/passwd 文件的内容复制到宿主目录中,保存为 pwd.txt 文件,具体操作如下:

    [jerry @localhost ~]# crontab -e
    55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt

    因各条计划任务在执行时并不需要用户登录,所以任务配置记录中的命令建议使用绝对路径,以避免因缺少执行路径而无法执行命令的情况。另外,在设置非每分都执行的任务时, “分钟”字段也应该填写一个具体的时间数值,而不要保留为默认的“*”,否则将会在每分钟执行一次计划任务。
    (2)查看用户的计划任务列表
    crontab 命令结合“-l”选项可以查看当前用户的计划任务列表,对于 root 用户来说,还可以结合“-u”选项查看其他用户的计划任务,具体操作如下:

    [root@localhost ~]# crontab –l//查看用户root 自己的计划任务
    50 7 * * * /usr/bin/systemctl start sshd.service
    50 22 * * * /usr/bin/systemctl stop sshd.servic
    0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
    30 7 * * 6 /usr/bin/systemctl httpd restart
    30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
    [root@localhost ~]# crontab -l -u jerry//查看用户jerry 的计划任务
    55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt
    [root@localhost ~]# ls -l /var/spool/cron/jerry
    -rw——-. 1 root root 57 May 7 11:10 /var/spool/cron/jerry

    (3)删除用户的计划任务列表
    当只需要删除某一条计划任务时,可以通过“crontab -e”命令进行编辑;而若要清空某个用户的所有计划任务,可以执行“crontab -r”命令。

    [jerry@localhost ~]$ crontab -r //用户jerry 清空自己设置的计划任务

    [jerry@localhost ~]$ crontab -l
    [jerry@localhost ~]$ crontab -l
    no crontab for jerry

    案列
    21 17 * * * /usr/bin/systemctl reboot
    26 17 * * * /usr/bin/cp -r /etc/ /home/
    #0 8-18/2 * * * /usr/binsystemctl start vsfrpd.service
    0 * */3 * * /usr/bin/rm -rf /var/log/ftp/*.log
    */2 * * * * /usr/bin/systemctl start vsfrpd.service

    [root@192 home]# crontab -l -u lisi
    17 19 * * * /usr/bin/cp -r /home/etc/ /home/lisi/backup/

    journalctl -xe

    总结与案例

  • 进程管理:
    • 使用 ps 查看系统中的进程。
    • 使用 top 查看实时的进程和资源占用情况。
    • 使用 kill 和 killall 终止进程。
  • 计划任务:
    • 使用 at 设置一次性任务。
    • 使用 cron 设置周期性任务,并通过 crontab 管理任务。
  • 案例总结

  • 查看进程:

    ps -aux | grep vim

    查看 vim 进程的 CPU 和内存使用情况。

  • 设置周期性任务:

    crontab -e
    30 2 * * * /usr/bin/rsync -av /data /backup

  • 通过这些命令,您可以高效地管理 Linux 系统中的进程和计划任务,自动化管理日常操作和提高系统的效率。

    07-3 其他命令

    我们可以继续详细解析这些命令,提供更多的实例和解释,帮助您更好地掌握它们的使用。

    1. date

    功能:

    date 命令用于显示当前的系统日期和时间,可以指定不同的输出格式,或用它来设置系统的日期和时间。

    详细案例:
    • 显示当前系统时间:

      date

      输出:Wed Aug 14 16:24:51 UTC 2025

    • 自定义时间格式:

      date "+%Y-%m-%d %H:%M:%S"

      输出:2025-08-14 16:24:51

    • 显示当前时间的时间戳(从1970年1月1日以来的秒数):

      date +%s

      输出:1692017091

    • 设置系统时间:

      sudo date +%Y-%m-%d -s "2025-08-14"

      这会将系统日期设置为 2025年8月14日。


    2. cal

    功能:

    cal 命令用来显示当前月份或指定月份的日历。可以方便地查看日期。

    详细案例:
    • 查看当前月份的日历:

      cal

      输出(假设当前为2025年8月):

      August 2025
      Su Mo Tu We Th Fr Sa
      1 2
      3 4 5 6 7 8 9
      10 11 12 13 14 15 16
      17 18 19 20 21 22 23
      24 25 26 27 28 29 30
      31

    • 查看指定年份和月份的日历:

      cal 12 2025

      输出:查看2025年12月的日历。

    • 显示一整年的日历:

      cal -y 2025

      输出:显示2025年全年日历。


    3. history

    功能:

    history 命令用来查看当前用户的历史命令。这个命令可以帮助你快速找到之前运行的命令。

    详细案例:
    • 查看命令历史:

      history

      输出示例:

      1 ls
      2 cd /home/user
      3 mkdir new_folder
      4 history

    • 查看历史命令中的特定条目:

      history | grep "mkdir"

      这会过滤出历史记录中所有包含 mkdir 的命令。

    • 执行历史命令:
      使用历史命令编号执行:

      !2

      这会执行编号为2的命令,即 cd /home/user。


    4. scp

    功能:

    scp 命令用于通过 SSH 协议在本地和远程服务器之间安全地复制文件或目录。它加密了数据传输,因此更加安全。

    详细案例:
    • 将本地文件复制到远程服务器:

      scp file.txt user@remote:/path/to/destination/

      这会将 file.txt 文件从本地复制到远程服务器的 /path/to/destination/ 目录。

    • 将本地目录复制到远程服务器:

      scp -r /local/dir/ user@remote:/remote/dir/

      这会将本地目录 /local/dir/ 及其内容复制到远程目录 /remote/dir/。

    • 将远程文件复制到本地:

      scp user@remote:/remote/path/to/file.txt /local/destination/

    • 从远程服务器复制整个目录到本地:

      scp -r user@remote:/remote/dir /local/dir/


    5. rsync

    功能:

    rsync 是一个非常强大的文件同步工具,支持增量同步,减少了文件传输的时间和带宽消耗。它可以同步文件和目录,不仅可以在本地计算机之间同步,也支持远程同步。

    详细案例:
    • 将本地目录同步到远程服务器:

      rsync -avz /local/dir/ user@remote:/remote/dir/

      参数说明:

      • -a:归档模式,表示保持文件的所有属性(如权限、时间戳等)。
      • -v:详细模式,显示传输过程中的文件。
      • -z:启用压缩传输。
    • 将远程目录同步到本地:

      rsync -avz user@remote:/remote/dir/ /local/dir/

    • 同步文件时,排除某些文件:

      rsync -avz –exclude="*.log" /local/dir/ user@remote:/remote/dir/

      这会排除所有 .log 后缀的文件。

    • 仅同步文件变化:

      rsync -avz –ignore-existing /local/dir/ user@remote:/remote/dir/

      这会跳过远程目录中已经存在的文件,只同步新的或修改过的文件。


    6. ssh

    功能:

    ssh(Secure Shell)命令用于通过加密连接远程登录到计算机。它使得你可以安全地访问远程机器并执行命令。

    详细案例:
    • 登录到远程服务器:

      ssh user@hostname

      这会连接到远程主机 hostname 上的 user 用户。

    • 使用不同端口登录:

      ssh -p 2222 user@hostname

      通过 -p 选项指定端口,默认端口是 22。

    • 通过 SSH 执行远程命令:

      ssh user@hostname 'ls -l /home/user'

      这会在远程主机上执行 ls -l /home/user 命令,列出指定目录的内容。


    7. nohup

    功能:

    nohup 命令用于让某个进程在后台运行,并且使其在关闭终端后依然保持运行。nohup 会将标准输出和错误输出重定向到 nohup.out 文件中。

    详细案例:
    • 让脚本在后台运行:

      nohup python script.py &

      这会使 script.py 脚本在后台运行,即使终端关闭,脚本也会继续执行。

    • 查看后台任务的输出:

      tail -f nohup.out

      这会实时查看后台任务的输出。


    8. reboot

    功能:

    reboot 命令用于重启计算机。在一些场景中需要重新启动计算机以应用更新或其他操作。

    详细案例:
    • 重启计算机:

      sudo reboot

      这会立即重启计算机。

    • 重启并延迟几分钟:

      sudo reboot +5

      这会在5分钟后重启计算机。


    9. shutdown

    功能:

    shutdown 命令用于关闭计算机。它可以指定一个延迟时间,或者立即关闭系统。

    详细案例:
    • 立即关闭系统:

      sudo shutdown -h now

      这会立即关闭计算机。

    • 延迟关闭系统:

      sudo shutdown -h +10

      这会在10分钟后关闭系统。

    • 重启系统:

      sudo shutdown -r now

      这会立即重启计算机。

    10. free命令

    用于显示系统的内存使用情况,包括物理内存(RAM)、交换空间(swap)和内核缓冲区。它是 Linux 系统中非常常用的一个命令,用于查看内存的总体状态。

    命令功能

    free 命令提供以下几个主要信息:

  • 总内存:物理内存的总量。
  • 已用内存:已经被系统或应用程序使用的内存。
  • 空闲内存:没有被使用的内存。
  • 共享内存:不同进程之间共享的内存空间。
  • 缓存内存:操作系统用作缓存的数据。
  • 交换内存(Swap):当物理内存不足时,系统使用磁盘上的空间作为虚拟内存(交换空间)。
  • 基本命令格式

    free [options]

    常用选项
    • -h:以人类可读的方式显示(自动选择合适的单位,如 KB, MB, GB)。
    • -m:以 MB 为单位显示内存。
    • -g:以 GB 为单位显示内存。
    • -t:显示内存的总和(即总内存 + 总交换空间)。
    • -s:以秒为单位指定显示刷新时间间隔。
    • -l:显示低内存和高内存的详细信息。
    基本用法
  • 显示当前内存使用情况:

    free

    输出示例:

    total used free shared buff/cache available
    Mem: 16G 4.2G 7.8G 345M 4.0G 11G
    Swap: 8.0G 0.0K 8.0G

    解释:

    • total:总内存。
    • used:已用内存。
    • free:空闲内存。
    • shared:被多个进程共享的内存。
    • buff/cache:系统缓冲区和缓存使用的内存。
    • available:可以用来启动新应用程序的内存(考虑了缓存和缓冲的回收)。
  • 以人类可读的格式显示内存:

    free -h

    输出示例:

    total used free shared buff/cache available
    Mem: 16G 4.2G 7.8G 345M 4.0G 11G
    Swap: 8.0G 0.0K 8.0G

  • 显示内存使用情况(以 MB 为单位):

    free -m

    输出示例:

    total used free shared buff/cache available
    Mem: 16384 4292 8192 345 4096 11264
    Swap: 8192 0 8192

  • 显示内存和交换空间的总和:

    free -t

    输出示例:

    total used free shared buff/cache available
    Mem: 16384 4292 8192 345 4096 11264
    Swap: 8192 0 8192
    Total: 24576 4292 16384 345 4096 11264

  • 每 5 秒刷新一次显示内存使用情况:

    free -s 5

    这会每5秒钟更新一次内存的使用情况,直到手动终止(按 Ctrl+C)。


  • 输出字段解释

    free 命令的输出通常包含两行:一行显示内存(Mem),一行显示交换空间(Swap)。

    • Mem 行:
      • total:总物理内存(RAM)。
      • used:已用内存(包括缓存、共享内存、应用程序使用的内存等)。
      • free:空闲内存。
      • shared:共享内存,指多个进程之间共享的内存。
      • buff/cache:缓冲区和缓存所占用的内存。系统会使用这部分内存来缓存磁盘数据,以加快访问速度。
      • available:系统可用的内存。这个值并不是单纯的空闲内存,而是指经过系统缓存和缓冲区回收后的可以使用的内存。
    • Swap 行:
      • total:总交换空间大小。
      • used:已使用的交换空间。
      • free:剩余的交换空间。
    典型应用场景
  • 检查内存使用情况:
    你可以通过 free 命令快速了解当前系统的内存使用情况,帮助你判断是否有内存不足的情况,或者是否需要调整交换空间。
  • 监控内存和交换空间使用情况:
    如果系统经常使用大量的交换空间,可能意味着系统内存不足,可能需要增加物理内存或调整系统配置。
  • 检查缓冲区和缓存的影响:
    通过 buff/cache 和 available 字段,你可以了解系统缓存占用了多少内存,以及哪些内存是可以被回收利用的。
  • 高级技巧
  • 查看内存使用趋势:
    如果你需要实时监控内存使用情况并保存到文件中,可以结合 free 和 watch 命令:

    watch -n 1 free -h

    这会每秒刷新一次显示内存使用情况。

  • 使用 free 监控系统健康状态:

    • 监控内存是否充足。
    • 判断是否有大量的缓存内存导致可用内存减少。
    • 如果交换空间使用量较大,考虑优化内存使用或增加物理内存。
  • 总结

    free 命令是查看内存和交换空间使用情况的非常实用工具,尤其在 Linux 系统管理中频繁使用。通过它,您可以迅速了解系统内存的总体状况,帮助您优化系统性能或解决内存不足的问题。


    11. 总结:

    这些命令在 Linux 系统管理中非常常见,它们帮助用户进行日常任务管理,比如文件操作、系统管理、远程连接、任务管理等。掌握这些命令将极大提升您在终端操作中的效率。如果您有其他问题或需要更深入的分析,欢迎随时提问!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Linux -系统管理
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!