У меня есть сценарий /etc/init.d/startup
, где я делаю следующее:
/var/run/**startup**.pid
У меня нет проблем с любым из вышеперечисленных, пока сервер работает, но когда он загружается, он создает файл 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
PS: он работает правильно, когда я нахожусь на сервере и выполняю «запуск службы», но не при загрузке.
Проблема в том, что когда скрипт вызывается по символической ссылке, $0
установлен на символическую ссылку, а не на исходный скрипт.
Ты можешь сделать это:
SCRNAME=$(readlink "$0" || echo $0)
SCRNAME=${SCRNAME##*/}
В readlink
напечатает цель ссылки, если источник является ссылкой.