我正在移植一些 SysV 风格的服务脚本HBase(一个 Java 服务)到 Upstart。
sysv 脚本不会java
直接调用,而是调用hbase-daemon.sh
。这是一个start-stop-daemon
随软件包附带的类似工具,它会引入大量配置,最终以nohup java ... &
守护进程的形式实际运行。
由于涉及到中的配置逻辑hbase-daemon.sh
,我宁愿不修改或重写它(删除nohup
),而是让 upstart 直接调用它。
这似乎成为expect
子句是 for,但在我的例子中它不起作用。即使是expect daemon
(两个 fork 的情况),我最终还是跟踪错误的 pid在服务启动时。这表明我的场景分叉太多,或者可能nohup
不应该用来处理expect
,或者是其他什么。
如何使用 upstart 来管理需要通过调用脚本启动的服务nohup
?
答案1
您可以尝试使用 crontab,并在终端中输入以下内容:
crontab -f nohup
然后输入:
pyton(version) -v -f echo 'nohup' & disown
然后在终端中输入:
crontab reboot
这样也许能很好地发挥作用。