AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 387724
Accepted
user705142
user705142
Asked: 2012-05-10 17:10:43 +0800 CST2012-05-10 17:10:43 +0800 CST 2012-05-10 17:10:43 +0800 CST

corosync 的奇怪初始化脚本问题

  • 772

这可能有一个简单的解释,但我肯定想不到。

我已经安装了 corosync(通过 yum),它是默认的初始化脚本。这个特定的 CentOS 安装有些奇怪,因为我经常需要手动将 /etc/rc.d/init.d/ 链接到 /etc/init.d。

问题是它在通过它的符号链接运行时失败,但它通过 /etc/rc.d/init.d 运行良好

更奇怪的是,如果使用完整路径运行,它就无法运行,而且只有在 /etc/rc.d/init.d 目录中实际运行时才会运行。

例子:

[~]# /etc/rc.d/init.d/corosync start
     Starting Corosync Cluster Engine (corosync):               [FAILED]
[~]# service corosync status
     corosync is stopped
[~]# cd /etc/rc.d/init.d/
[init.d]# /etc/rc.d/init.d/corosync start
          Starting Corosync Cluster Engine (corosync):          [FAILED]
[init.d]# corosync start
[init.d]# service corosync status
          corosync (pid  1985) is running...

有什么解释吗?

编辑:

不确定我到底做了什么更改,但它现在在从 /rc.d/init.d 启动时有效,但在服务 corosync 启动时无效。

[root@server2 mirror]# /etc/rc.d/init.d/corosync start
Starting Corosync Cluster Engine (corosync):               [  OK  ]

[root@server2 mirror]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync):               [FAILED]

[root@server2 mirror]# service corosync start
Starting Corosync Cluster Engine (corosync):               [FAILED]

编辑 2:

建立了一个从 /etc/rc.d/init.d 到 /etc/init.d 的符号链接 .. 现在它可以在通过 service corosync start 运行时工作.. 但不会在启动时启动,哎呀。

编辑 3:

它适用于除启动外的所有命令。

我已将运行级别更改为 99,但它仍然失败,并且我已将脚本内的路径更改为绝对路径:/usr/sbin/corosync

我还做了环境变量的差异:

在服务 corosync 启动时:

_=/bin/env
LANG=en_US.UTF-8
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/
SHLVL=1
TERM=xterm

启动时:

_=/bin/env
LANG=en_US.UTF-8
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/
SHLVL=2
TERM=linux
CONSOLETYPE=vt
LANGSH_SOURCED=1
previous=N
PREVLEVEL=N
runlevel=3
RUNLEVEL=3
UPSTART_EVENTS=runlevel
UPSTART_INSTANCE=
UPSTART_JOB=rc

开机日志:

Starting Corosync Cluster Engine (corosync):    [FAILED]
scripting init init.d corosync
  • 5 5 个回答
  • 1900 Views

5 个回答

  • Voted
  1. Best Answer
    ramruma
    2012-05-10T23:13:08+08:002012-05-10T23:13:08+08:00

    所以现在脚本在系统已经启动时工作,但在启动期间不工作。

    也许有第三个版本的 corosync 脚本?/etc/rc2.d/ 中的版本链接到 /etc/init.d/ 中的版本还是不同?

    顺便说一下,我们已经走到这一步了,甚至没有考虑您的集群设置。如果这是集群的一部分,其他节点的日志文件中可能会有线索。

    • 1
  2. coredump
    2012-05-10T20:23:52+08:002012-05-10T20:23:52+08:00

    尝试调试初始化脚本-x

    # bash -x /etc/rc.d/init.d/corosync start
    

    也尝试使用service start|stop|status corosync.

    • 0
  3. ramruma
    2012-05-10T21:19:00+08:002012-05-10T21:19:00+08:00

    如果corosync start在任何目录中工作但/etc/rc.d/init.d/corosync start失败,那么您可能正在运行两个不同的脚本。跑:which corosync

    如果不是,请在 corosync 脚本内部检查应该是绝对路径的相对路径。

    • 0
  4. ramruma
    2012-05-10T21:55:57+08:002012-05-10T21:55:57+08:00

    所以现在的问题是它/etc/init.d/corosync start可以与 bash -x 一起使用,但不能没有,也不能在启动时使用。那正确吗?

    没有bash /etc/init.d/corosync start(没有-x工作)?

    可能在您的配置文件中设置了一个环境变量,当系统在引导过程中运行脚本时该变量不存在。添加一行env |sort > /tmp/env.$$,/etc/init.d/corosync然后diff是生成的文件。

    另一种可能性是对另一个服务的隐藏依赖,该服务稍后在引导过程中启动。尝试更改为S99...

    • 0
  5. ZukZuk
    2013-03-07T03:39:14+08:002013-03-07T03:39:14+08:00

    我遇到过同样的问题...

    查看:

    #getenforce

    如果它返回“Enforcing”,那么您必须在文件中禁用 SELinux:/etc/selinux/config

    动态地:

    # 设置强制 0

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果同一个任务已经在运行,如何防止计划任务运行?

  • 需要从 Batch For 循环中排除特定结果

  • Bash 脚本:要求脚本以 root 身份运行(或使用 sudo)

  • 从命令行删除旧的(非引导)Windows Vista 目录

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve