初始化脚本中的脚本名称

初始化脚本中的脚本名称

我有一个脚本/etc/init.d/startup,其中我执行以下操作:

  • 创建一个如下所示的 PID 文件:/var/run/**startup**.pid
  • 执行 Java 进程的屏幕,因此我将创建名为 startup 的屏幕(例如此屏幕 -dmS启动“脚本路径”

当服务器运行时,我没有遇到上述任何问题,但是当它启动时,它会创建具有错误名称的 PID 文件和屏幕,如下所示:

/var/run/**S92startup**.pid

2058.**S92startup** (11/10/2014 03:56:31 PM)    (Detached)

如何在启动时指定脚本的名称?(不是符号链接的名称/etc/rc2.d/

现在我的脚本一开始看起来像这样,这就是我获取脚本名称的方式

SCRNAME=${0##*/}

DAEMON="screen -DmS $SCRNAME /srv/startup/scripts/gprs.sh"

PIDFILE=/var/run/$SCRNAME.pid

附言:当我在服务器上执行“服务启动启动”时它正常工作,但在启动时却不工作。

答案1

问题是,当脚本通过符号链接调用时, $0设置为符号链接而不是原始脚本。

你可以这样做:

SCRNAME=$(readlink "$0" || echo $0)
SCRNAME=${SCRNAME##*/}

readlink如果源是链接,则会打印链接目标。

相关内容