ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

TIL 学习笔记:Linux 下用 `initctl list` 一次查看全部 Upstart 任务及其状态

TIL 学习笔记:Linux 下用 `initctl list` 一次查看全部 Upstart 任务及其状态 文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载在运行 Upstart 作为 init 守护进程的 Linux 系统例如 Ubuntu 6.10 至 14.10 时代的环境中initctl是查询与控制任务job的核心命令行工具。本文基于 TIL 仓库中 linux/list-the-statuses-of-all-upstart-jobs.md 一文完整讲解如何用initctl list一次性列出系统已知的所有 Upstart 任务、解读每一行的状态字段并延伸到单任务查询、启停控制与同族命令的对比帮助你快速掌握这类老牌 init 系统的日常运维手段。背景Upstart 与 initctl 是什么Upstart 是事件驱动的 init 守护进程由 Canonical 开发用于替代传统的 System V init系统启动、服务启停不再依赖严格的启动脚本顺序而是由事件event触发任务job执行。每个任务都有自己声明的goal目标与所处的state状态initctl就是用户与 Upstart 守护进程之间的控制接口——类似 systemd 时代systemctl的角色几乎所有查询和控制操作都由它完成。Upstart 任务的定义通常位于/etc/init/*.conf配置文件中initctl list会把所有这些已知任务连同当前状态一次性展示出来非常适合在排查服务未启动、进程异常退出等问题时快速定位。核心操作用initctl list列出所有任务状态命令本身非常简洁直接执行即可$ initctl list它的输出大致如下不同发行版、不同安装环境下任务列表会有差异console stop/waiting mounted-run stop/waiting acpid start/running, process 2927 checkfs.sh start/running checkroot-bootclean.sh start/running kmod stop/waiting mountnfs.sh start/running nginx stop/waiting plymouth-stop stop/waiting rcS stop/waiting ufw start/running正如原始文档所说这份列表会告诉你每个任务当前是处于已停止还是已启动状态。上面的输出中可以看到acpid、ufw等任务处于运行状态而nginx、rcS等任务处于停止状态。解读输出格式goal / state / process每一行由三个核心信息构成字段含义示例任务名该行的第一列如acpid、nginxnginxgoal目标任务被期望达到的状态start表示希望运行stop表示希望停止start/stopstate当前状态任务此刻实际所处的阶段如waiting、runningrunning/waitingprocess进程任务主进程的 PID仅当任务有实际进程时才出现process 2927逐行解读示例输出acpid start/running, process 2927目标是start当前状态是running说明 acpid 正在运行主进程 PID 为 2927。nginx stop/waiting目标是stop当前状态是waiting说明 nginx 未被启动。ufw start/running目标是start且正在运行但行尾没有process字段——这类任务通常是脚本型task任务不驻留常驻进程因此不记录具体 PID。mounted-run stop/waiting、rcS stop/waiting同理均处于停止/等待阶段。简单总结状态列第二字段才是任务当前的真实处境running表示运行中waiting表示已停止或尚未启动goal则反映配置或最近一次控制操作希望它处于的状态。过滤查看特定任务当任务很多时配合管道过滤即可快速聚焦$ initctl list | grep nginx nginx stop/waiting这条组合在排查某个服务到底有没有起来时非常实用输出一目了然。查看单个任务状态如果只关心某一个任务无需全量列出可以直接用status子命令$ initctl status nginx nginx stop/waiting输出格式与list中该任务对应的行一致适合在脚本中精确判断单个服务的状态。控制任务启动、停止、重启initctl不只是查询工具也可以对任务进行生命周期管理$ initctl start nginx # 启动任务 $ initctl stop nginx # 停止任务 $ initctl restart nginx # 重启任务 $ initctl reload nginx # 重新加载配置需要说明的是查询类操作list、status在文档示例中可直接执行而start、stop、restart这类管理操作通常需要 root 权限实际使用时应配合sudo$ sudo initctl restart nginx与service --status-all的对比如果你的系统同时保留了 SysV 风格的/etc/init.d/脚本还可以用 devops/check-the-status-of-all-services.md 中记录的service --status-all来检查所有 init.d 服务的状态——表示运行中-表示未运行?表示无法确定。两者视角不同initctl list面向 Upstart 任务/etc/init/字段语义明确goal/state/processservice --status-all面向/etc/init.d/下的 SysV 服务脚本适合兼容层场景。在同时存在两套体系的过渡期系统上可以结合二者交叉核对同一个服务的真实状态。适用前提如何确认系统运行 Upstartinitctl命令只有在该系统以 Upstart 作为 init 守护进程时才存在。判断方法很简单$ which initctl # 存在则说明系统带有 Upstart 工具集 $ ps -p 1 -o comm # 输出为 init 即典型 Upstart/SysV 风格输出为 systemd 则说明已是 systemd 环境历史背景Upstart 在 Ubuntu 6.10 至 14.10 之间是默认 init 方案Ubuntu 15.04 起切换为 systemd。因此本文内容适用于仍运行 Upstart 的旧版 Ubuntu 服务器或容器而不是现代默认 systemd 的系统——后者请使用systemctl list-units等命令。若需要确认当前 Ubuntu 版本可参考仓库中的 linux/check-ubuntu-version.md。延伸阅读原始 TIL 文档linux/list-the-statuses-of-all-upstart-jobs.md同主题的 SysV 服务状态检查devops/check-the-status-of-all-services.md更多 Linux 运维速记README.mdLinux 分类关于initctl更完整的子命令、事件机制与任务配置语法可随时查阅系统手册$ man initctl赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐TIL 技术笔记用 Linux timedatectl 查看与设置系统时间、时区与 NTP 同步状态TIL 技术笔记用 Linux timedatectl 查看与设置系统时间、时区与 NTP 同步状态 在排查远端服务器日志、分析异常时间戳或对齐多机时间时第文档教程知识库til 仓库运维实战用 service --status-all 一键检查 Linux 全部服务状态til 仓库运维实战用 service status all 一键检查 Linux 全部服务状态 本指南围绕 til 仓库 devops/check the文档教程知识库Homebrew 服务管理使用 brew services list 查看全部守护服务状态Homebrew 服务管理使用 brew services list 查看全部守护服务状态 brew services list 是 Homebrew 提供的文档教程知识库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表