初始化脚本中的脚本名称

我有一个脚本/etc/init.d/startup ,在那里我做到以下几点:

  • 创build一个应该如下所示的PID文件:/ /var/run/**startup**.pid
  • 执行一个java进程的屏幕,所以我想创build一个名称为startup的屏幕(就像这个屏幕的“dmS 启动 ”脚本的path一样)

在服务器运行的时候,我没有任何问题,但是当它启动时,它会创buildPIDfile和屏幕,其名称不正确:

 /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 

PS:它是正确的,当我在服务器上,执行“服务启动启动”,而不是在启动时。

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

你可以这样做:

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

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