如何找到一个陌生服务器上的grafana-server是谁启动的

在 Ubuntu 16 上,Grafana 进程本身 就是"被启动"的最终实体;

真正需要搞清楚的是:

谁把 grafana-server 拉起来的?

是 systemd?upstart?docker?还是某个手动脚本?

下面给出按优先级排查 的 4 条命令,依次执行即可定位"启动者"


  1. 先看 systemd(Ubuntu 16 默认还用 systemd)
bash 复制代码
systemctl status grafana-server
  • 若输出里 Active: active (running)Main PID 等于你看到的那个进程号 → systemd 启动的
  • 若提示 Unit grafana-server.service could not be found. → 继续下一步。

  1. 检查是不是 SysV / Upstart 脚本
bash 复制代码
initctl status grafana-server        # Upstart
service grafana-server status        # SysV 兼容

有返回且状态为 start/runningUpstart 启动

仍找不到 → 继续。


  1. 看父进程是谁(排除 docker / 手动)
bash 复制代码
ps -ef | grep grafana

记下 PID,再查父 PID

bash 复制代码
ps -p <PID> -o ppid= | xargs -I{} ps -p {} -o pid,cmd

常见结果对照

父进程 cmd 含义
/sbin/init/lib/systemd/systemd systemd / Upstart
docker-containe 运行在容器里,父进程是 dockerd
sudobash./start.sh 手工启动

  1. 如果父进程是 dockerd → 进容器确认
bash 复制代码
docker ps | grep grafana
docker inspect --format '{{.Name}} {{.Config.Image}}' <container-id>

即可知道是哪个镜像、哪条 docker run 命令拉起的。


一句话总结
systemctl → initctl → ps 找父进程 → docker ps 四步

30 秒内就能判定 Grafana 到底是 systemd 服务Upstart 任务docker 容器 还是手工脚本启动的。

相关推荐
程序员爱钓鱼1 天前
Python编程实战—面向对象与进阶语法 | 属性与方法
后端·python·ipython
程序员爱钓鱼1 天前
Python编程实战——面向对象与进阶语法 | 构造函数与析构函数
后端·python·ipython
逻极1 天前
Rust之结构体(Structs):构建自定义数据类型
开发语言·后端·rust
四念处茫茫1 天前
Rust:复合类型(元组、数组)
开发语言·后端·rust
华仔啊1 天前
为什么你的 @Transactional 不生效?一文搞懂 Spring 事务机制
java·后端
逻极1 天前
Rust 结构体方法(Methods):为数据附加行为
开发语言·后端·rust
国服第二切图仔1 天前
Rust入门开发之Rust 集合:灵活的数据容器
开发语言·后端·rust
今日说"法"1 天前
Rust 线程安全性的基石:Send 与 Sync 特性解析
开发语言·后端·rust
IT_陈寒1 天前
从2秒到200ms:我是如何用JavaScript优化页面加载速度的🚀
前端·人工智能·后端
Zhang青山1 天前
028.爬虫专用浏览器-抓取#shadowRoot(closed)下
java·后端