如何检查 Linux 作业状态

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在 Linux 系统管理领域,了解作业状态和控制对于高效的进程管理至关重要。本全面教程将指导你掌握在 Linux 环境中检查、监控和管理作业的基本技术,帮助你更好地控制系统进程和后台任务。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux/ProcessManagementandControlGroup -.-> linux/jobs("Job Managing") linux/ProcessManagementandControlGroup -.-> linux/bg_running("Background Running") linux/ProcessManagementandControlGroup -.-> linux/fg("Job Foregrounding") linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/killall("Multi-Process Killing") linux/ProcessManagementandControlGroup -.-> linux/wait("Process Waiting") linux/ProcessManagementandControlGroup -.-> linux/bg_process("Background Management") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/jobs -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/bg_running -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/fg -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/kill -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/killall -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/wait -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/bg_process -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/ps -.-> lab-431148{{"如何检查 Linux 作业状态"}} linux/top -.-> lab-431148{{"如何检查 Linux 作业状态"}} end

Linux 作业基础

什么是 Linux 作业?

在 Linux 中,作业是在终端的前台或后台运行的一个进程或一组进程。了解作业管理对于高效的系统管理和编程任务至关重要。可以使用各种命令行技术来创建、暂停、恢复或终止作业。

作业类型

Linux 通常识别两种主要类型的作业:

作业类型 描述 特点
前台作业 直接与终端交互 阻塞其他命令,直到完成
后台作业 无需直接与终端交互即可运行 允许同时执行其他任务

作业状态

stateDiagram-v2 [*] --> Running Running --> Stopped Stopped --> Running Running --> Background Background --> Foreground Running --> Terminated Terminated --> [*]

创建后台作业

要在后台运行作业,请在命令后附加 &

## 在后台运行长时间运行进程的示例
find / -name "example.txt" &

作业标识

每个作业都与以下内容相关联:

  • 进程 ID (PID)
  • 作业编号
  • 当前状态

基本作业控制命令

命令 功能
jobs 列出当前作业
bg 将作业发送到后台
fg 将作业带到前台
Ctrl+Z 暂停当前作业

最佳实践

  1. 对耗时任务使用后台作业
  2. 定期监控作业状态
  3. 终止不必要的作业以节省系统资源

在 LabEx,我们建议将掌握作业控制作为一项基本的 Linux 技能,以实现高效的系统管理和开发工作流程。

作业控制技术

作业管理工作流程

graph TD A[启动作业] --> B{作业类型} B -->|前台| C[直接与终端交互] B -->|后台| D[并行执行] C --> E[暂停/停止作业] D --> F[监控作业状态] E --> G[恢复/终止作业] F --> G

关键作业控制命令

1. 将作业发送到后台

## 立即在后台运行命令
sleep 100 &

## 暂停当前前台作业并发送到后台
Ctrl+Z
bg

2. 将作业带到前台

## 列出当前作业
jobs

## 将特定作业带到前台
fg %1 ## 将作业编号1带到前台
fg    ## 将最近的后台作业带到前台

高级作业控制技术

作业信号与管理

信号 命令 描述
SIGSTOP Ctrl+Z 暂停当前作业
SIGCONT bg/fg 继续暂停的作业
SIGTERM kill %n 终止特定作业
SIGKILL kill -9 %n 强制终止作业

实际示例

## 运行多个后台作业
find / -name "*.log" &
tar -czvf backup.tar.gz /home/user &

## 终止特定的后台作业
kill %1 ## 终止第一个后台作业

作业控制最佳实践

  1. 始终使用 jobs 来跟踪正在运行的进程
  2. 对长时间运行的任务使用 &
  3. 高效管理系统资源
  4. 使用适当的信号进行作业管理

复杂作业场景

持久化后台作业

## nohup 可防止终端关闭时作业终止
nohup long-running-script.sh &

在 LabEx,我们强调理解这些技术对于强大的 Linux 系统管理和高效的工作流程优化的重要性。

监控作业状态

作业状态概述

stateDiagram-v2 [*] --> Running Running --> Stopped Stopped --> Running Running --> Background Background --> Foreground Running --> Completed Completed --> [*]

基本作业状态命令

1. jobs 命令

## 列出当前作业及其状态
jobs

## 详细的作业状态
jobs -l

## 仅显示正在运行的作业
jobs -r

## 仅显示已停止的作业
jobs -s

2. 用于作业监控的 ps 命令

## 列出所有进程
ps aux

## 筛选特定用户的作业
ps -u username

## 详细的进程信息
ps -ef

高级作业监控技术

进程状态码

状态码 含义
R 正在运行
S 睡眠中
D 不可中断睡眠
T 已停止
Z 僵尸进程

实时监控工具

## 用于实时进程监控的 top 命令
top

## htop - 交互式进程查看器
htop

作业状态跟踪策略

1. 记录作业状态

## 将作业输出重定向到日志文件
long-running-script.sh > job.log 2>&1 &

2. 检查后台作业完成情况

## 等待后台作业完成
wait $PID

## 检查退出状态
echo $?

监控复杂作业场景

并行作业跟踪

## 运行多个后台作业
(command1) &
(command2) &
wait

系统资源监控

## 检查系统负载
uptime

## 内存和CPU使用情况
free -h
vmstat

最佳实践

  1. 定期监控作业状态
  2. 根据不同场景使用适当的工具
  3. 为关键作业实施日志记录
  4. 高效管理系统资源

在 LabEx,我们建议掌握这些监控技术,以实现全面的 Linux 作业管理和系统优化。

总结

掌握 Linux 作业状态技术可使系统管理员和开发人员有效地监控和管理后台进程。通过利用命令行工具和作业控制方法,你可以优化系统性能、排查问题,并维护一个井然有序的 Linux 计算环境。