这可能与检测操作系统有关,但我特别需要系统上当前使用的 init 系统。
Fedora 15 和 Ubuntu 现在使用 systemd,Ubuntu 过去使用 Upstart(很长时间默认直到 15.04),而其他人使用 System V 的变体。
我有一个应用程序,我正在编写它作为跨平台守护程序。初始化脚本是根据可以在配置时传入的参数动态生成的。
我想做的只是为他们正在使用的特定初始化系统生成脚本。这样,安装脚本可以在没有参数的情况下以 root 身份合理运行,并且守护进程可以自动“安装”。
这是我想出的:
这样做的最佳跨/平台方式是什么?
有点相关,我可以依赖 bash 来支持大多数 *nix 还是依赖于发行版/操作系统?
目标平台:
$ ps -Awwo pid,comm,args
PID COMMAND COMMAND
1 init /sbin/init
2 kthreadd [kthreadd]
3 ksoftirqd/0 [ksoftirqd/0]
5 kworker/u:0 [kworker/u:0]
6 migration/0 [migration/0]
7 cpuset [cpuset]
8 khelper [khelper]
9 netns [netns]
10 sync_supers [sync_supers]
11 bdi-default [bdi-default]
12 kintegrityd [kintegrityd]
13 kblockd [kblockd]
14 kacpid [kacpid]
15 kacpi_notify [kacpi_notify]
16 kacpi_hotplug [kacpi_hotplug]
17 ata_sff [ata_sff]
18 khubd [khubd]
Run Code Online (Sandbox Code Playgroud)
括号是什么意思?args 是否总是返回进程命令的完整路径(例如/bin/cat
)?