status -p $pidfile -l $lockfile $prog
此命令适用于 CentOS - /bin/sh shell。
/bin/bash
但是当我尝试使用shell(或zsh
也)在 Ubuntu 14.04 上运行相同的命令时,它会抛出错误,
status: invalid option: -p
Try `status --help' for more information.
我们如何status
在 Ubuntu 上将 pidfile 位置参数传递给命令?
答案1
状态 -p $pidfile -l $lockfile $prog
这是RHEL/CentOS 6 上的status()
shell 功能。它也称为/etc/rc.d/init.d/functions
statusproc()
Linux 从头开始世界。
这告诉我们,你做的事情是非常错误的。您将可在 System 5 脚本中使用的特殊 shell 帮助程序函数rc
与普通的交互式 shell 外部命令混为一谈。您正在rc
Ubuntu 上编写 System 5 脚本。并且您正在使用 PID 文件和锁定文件。
- 不要使用 PID 文件作为穷人的服务跟踪。 不要使用锁定文件穷人的服务也是环环相扣的。它们在 Ubuntu Linux 版本 14 和 15 上完全没有必要,它们分别有 upstart 和 systemd。他们不需要不稳定的 PID 文件和锁定文件。 systemd 和 upstart 都确保不会两次启动同一个服务,并且两者都正确跟踪服务进程的进程 ID,因为它们首先分叉了这些进程。这让我想到:
- 不要
rc
在 Ubuntu Linux 上编写 System 5 脚本。在版本 14 上已经有了新贵;在版本 15 上,现在有了 systemd,就像在 CentOS 7、RHEL 7 和 Debian 8 上一样rc
。很长一段时间以来,没有充分的理由在 Ubuntu Linux 上编写 System 5脚本。还有一个当然如果您重新使用 Ubuntu Linux,则不应该从那里开始。即使您从这里开始是因为您(错误地)尝试将 System 5rc
脚本从 CentOS 引入: - 不要依赖
status()
shell 函数跨操作系统甚至同一操作系统的不同版本。如前所述,它在 LFS 中的名称不同。它不在 Fedora 2009 年的“新”LSB 支持功能中。在该功能中甚至没有强制的status
System 5rc
脚本操作。Debian 政策手册首先,尽管 LSB 辅助 shell 函数库确实有一个(略有不同的)status_of_proc()
辅助函数。
为 Ubuntu 版本 14 编写一个 upstart“作业文件”,或为 CentOS 7、RHEL 7、Debian 8 或 Ubuntu 15 编写一个 systemd“服务单元”。upstart 和 systemd 都提供服务状态命令:(initctl status
使用一个简单的 shim,名为status
)和systemctl status
,分别。在工作文件或服务单位中支持他们你不需要做任何事。
进一步阅读
- https://unix.stackexchange.com/a/200281/5132
- FC新初始化。 2009。Fedora 项目维基。
- “
status
功能”。 封装:SysVInitScript。 2008。Fedora 项目维基。 - https://superuser.com/a/912648/38062
- https://unix.stackexchange.com/a/194653/5132
- 伦纳特·珀特林 (2013-10-07)。
systemctl
。 systemd 手册页。 freedesktop.org。 - 詹姆斯·亨特和克林特·拜鲁姆 (2014)。 “公用事业”。 新贵食谱。
答案2
CentOS 6.5 上的版本status
是包中的 0.6.5 upstart
。 Ubuntu 14.04 上的
版本status
是 1.12.1,也来自包upstart
。
这些都不接受该-p
选项。
Upstartstatus
不允许您以任何方式指定 PIDFILE。您可以指定作业并提供要传递给脚本的 key=value 参数。其他命令行选项可以使用 查看status --help
。
在 CentOS 7 上没有status
(至少在我的安装上没有),因为 CentOS 7 不再使用 Upstart(已切换到 systemd)。您可以尝试找出哪个软件包status
在您的 CentOS ( yum whatprovides $(which status)
) 上提供了该软件包,并查看您是否可以在 Ubuntu 上安装该软件包,从而获得替代状态(希望也有一个不同的、不冲突的名称)。