运维技术课教程之kill指令集合

你现在执行了kill %{1..11}命令后又输入了jobs,想要查看后台任务的状态,但这个kill命令的写法存在语法错误,导致无法正确杀死指定的后台任务。

问题分析与解决步骤

1. 先解释命令的问题

kill %{1..11}这种写法是错误的,因为:

  • %n是用来引用后台任务的作业号(n是数字,比如%1表示第一个后台任务);
  • {1..11}是Bash的大括号扩展,用于生成连续数字,但kill %{1..11}并不能被Shell正确解析为kill %1 %2 ... %11,Shell会把%{1..11}当成一个整体的作业号,而这个作业号并不存在,所以该命令实际没有任何效果。
2. 正确的操作方法
步骤1:先查看后台任务(已执行jobs,补充说明输出含义)

执行jobs后,会显示当前Shell会话中的后台任务,示例输出如下:

复制代码
[1]+  Running                 ./test1.sh &
[2]-  Running                 ./test2.sh &
[3]   Stopped                 ./test3.sh
  • [1]、[2]是作业号 ,对应%1、%2;
  • Running/Stopped是任务状态;
  • 后面是具体的任务命令。

如果jobs执行后没有输出,说明当前没有后台任务,无需后续操作。

步骤2:正确杀死指定范围的后台任务

有两种常用方式可以杀死作业号1到11的后台任务:

方式1:使用循环(推荐,兼容性好)
bash 复制代码
# 循环遍历1到11的作业号,逐个杀死
for i in {1..11}; do kill %$i 2>/dev/null; done
  • 2>/dev/null:忽略"作业号不存在"的错误提示(比如如果只有3个后台任务,4-11的作业号不存在,会报错,加上这个可以屏蔽错误);
  • kill %$i:$i是循环变量,代表当前作业号,%$i引用对应的后台任务。
方式2:使用xargs(简洁,需要了解xargs用法)
bash 复制代码
# 生成1到11的数字,转换成%1 %2...的形式,传给kill
echo {1..11} | xargs -I {} kill %{} 2>/dev/null
步骤3:强制杀死(如果普通kill无效)

如果后台任务无法被普通kill(默认发送SIGTERM信号)终止,可以使用kill -9(发送SIGKILL强制终止信号):

bash 复制代码
# 循环强制杀死1到11的作业号
for i in {1..11}; do kill -9 %$i 2>/dev/null; done
步骤4:再次查看任务状态

执行jobs确认任务是否被杀死:

bash 复制代码
jobs

如果任务被成功杀死,jobs会显示任务的状态为Terminated(终止),或者直接无输出。

总结

  1. kill %{1..11}语法错误,Shell无法解析这种形式的作业号引用,因此无法杀死后台任务。
  2. 杀死1到11号后台任务的推荐方式是使用Bash循环 (for i in {1..11}; do kill %$i 2>/dev/null; done),可根据需要添加-9强制终止。
  3. 执行jobs命令可以查看后台任务的作业号和状态,用于验证任务是否被成功终止。
相关推荐
Decay__5 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子7 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
万联WANFLOW8 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
Ruiery10 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
Decay__11 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
江华森12 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼12 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
by2099913 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
螺丝钉tina14 小时前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
迪菲赫尔曼14 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测