简介
本全面教程将探索在 Linux 终端中管理任务的基本技术。无论你是初学者还是经验丰富的开发者,理解任务控制对于高效的系统交互和进程管理都至关重要。你将学习如何操作正在运行的进程、在后台和前台任务之间切换,以及更好地控制你的 Linux 环境。
本全面教程将探索在 Linux 终端中管理任务的基本技术。无论你是初学者还是经验丰富的开发者,理解任务控制对于高效的系统交互和进程管理都至关重要。你将学习如何操作正在运行的进程、在后台和前台任务之间切换,以及更好地控制你的 Linux 环境。
在 Linux 中,任务是在终端的后台或前台运行的进程。当你执行一个命令或运行一个脚本时,它就成为一个可以由系统管理和控制的任务。
Linux 任务可以处于不同的状态:
| 状态 | 描述 |
|---|---|
| 运行中 | 当前正在执行 |
| 已停止 | 已暂停且未运行 |
| 后台 | 在没有终端控制的情况下运行 |
| 前台 | 直接与终端进行交互 |
任务通过以下方式进行标识:
默认情况下,命令在前台运行:
$ ls
## 直接在终端中运行
要在后台运行任务,请使用 &:
$ sleep 100 &
[1] 12345 ## 任务编号和PID
Ctrl + Z:暂停当前任务Ctrl + C:终止当前任务&:在后台运行任务jobs:列出当前任务在学习任务管理时,LabEx 提供交互式 Linux 环境,让你可以亲身体验这些概念。
列出终端中当前的所有任务:
$ jobs
[1]+ 运行中 sleep 100 &
[2] 已停止 vim document.txt
将后台任务调至前台:
$ fg %1 ## 将任务编号 1 的任务调至前台
在后台恢复已停止的任务:
$ bg %2 ## 在后台继续任务编号 2 的任务
| 命令 | 功能 | 使用示例 |
|---|---|---|
jobs |
列出任务 | jobs -l |
fg |
前台任务 | fg %3 |
bg |
后台任务 | bg %2 |
kill |
终止任务 | kill %1 |
disown |
从 shell 中移除任务 | disown -h %1 |
SIGTERM:正常终止SIGKILL:强制终止$ kill -15 %1 ## 正常终止
$ kill -9 %1 ## 强制终止
LabEx 提供交互式环境,以便在真实的 Linux 场景中练习这些任务控制技术。
$ tar -czvf backup.tar.gz /large/directory &
[1] 12345
| 优先级值 | 优先级 | 描述 |
|---|---|---|
| -20 | 最高 | 关键系统任务 |
| 0 | 正常 | 默认优先级 |
| 19 | 最低 | 后台任务 |
$ nice -n 10 long_running_script.sh &
$ renice -n 15 -p 12345
$ nohup./long_process.sh &
$ disown
crontab 进行任务调度## 编辑 crontab
$ crontab -e
## 示例:每天午夜运行备份
0 0 * * * /path/to/backup_script.sh
top 和 htop$ top
$ htop
$ long_process.sh > output.log 2>&1 &
LabEx 提供交互式的 Linux 环境,以便你实践这些高级任务管理技术。
nice 和 renice 进行优先级管理掌握 Linux 任务控制能使开发者和系统管理员在终端中高效地管理多个进程。通过理解任务控制命令和技术,用户可以优化工作流程、提高工作效率,并对系统资源获得更精确的控制。本教程中学到的技能为高级 Linux 进程管理和终端交互奠定了坚实的基础。