我有一个脚本/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
如果源是链接,则会打印链接目标。