Сервисный скрипт вызывает другой скрипт с переменными

У меня есть простой служебный скрипт tomcat7 в /etc/init.d/ для запуска и остановки моего сервера приложений (tomcat) под пользователем tomcat. На RHEL6.

 #!/bin/bash # description: Tomcat Start Stop # processname: tomcat # chkconfig: 234 20 80 CATALINA_HOME=/usr/local/www/tomcat-7.0.54 case $1 in start) /bin/su tomcat $CATALINA_HOME/bin/startup.sh ;; stop) /bin/su tomcat $CATALINA_HOME/bin/shutdown.sh 30 ;; esac exit 0 

Что хорошо работает. Оба startup.sh и shutdown.sh вызывают скрипт под названием catalina.sh . Это готовые сценарии, которые поставляются с сервером приложений.

Я могу использовать catalina.sh прямо как: ./catalina.sh stop 30 -force

Это позволяет мне указать время ожидания 30 секунд, а затем убить -9, если процесс не закончился. Но я не могу заставить переменные работать в tomcat7 обслуживания tomcat7 . Если я изменю его на:

 stop) /bin/su tomcat $CATALINA_HOME/bin/catalina.sh stop 30 -force 

Я получаю сообщение об ошибке:

 [root@543917-web1 bin]# service tomcat7 stop /bin/su: invalid option -- 'o' 

Могу ли я передать три аргумента без изменения сценария catalina.sh?

ТИА

One Solution collect form web for “Сервисный скрипт вызывает другой скрипт с переменными”

Вы можете использовать su с -c :

 /bin/su tomcat -c "$CATALINA_HOME/bin/catalina.sh stop 30 -force" 

С su man:

 -c, --command=COMMAND pass a single COMMAND to the shell with -c 
  • Ограничьте каталоги, в которых будет действовать скрипт
  • Сценарий оболочки, чтобы найти, какой пакет предоставляет файл на OpenBSD
  • Использование getopts для анализа параметров после аргумента без опции
  • Как запустить Java-программу в скрипте Bash и дать ей один аргумент?
  • Если проблема со статусом
  • Как активно grep log за последние 15 секунд для фразы?
  • Где «установить» приложение узла и лучший способ запуска
  • cpulimit в скрипте bash, который запускает другие команды
  • Linux + Solaris, как проверить последний процесс выполнения из списка процессов
  • Как поместить переменную в циклы?
  • Для цикла для зависания на нескольких страницах с API
  • Interesting Posts

    Crontab: Почему он не запускает скрипт?

    Извлечь ключ сервера SSH с самого сервера

    поиск ipv6-адреса для MAC-адреса у соседей

    Список изменений файлов в определенной папке с огромным содержимым и несколькими уровнями подпапок (с достойной производительностью)

    Переместить с возможным переименованием

    Есть ли способ сделать файловые операции похожими на Windows?

    Несколько совпадений и печати в одной строке

    Как заставить ag (серебряный искатель) отображать пустые файлы

    sox возвращает ошибку, когда я пытаюсь обрабатывать mp3-файлы

    Удаление файлов с пробелами в именах

    Общие сведения о исполняемых форматах Linux и пакетах распространения программного обеспечения

    Я хочу сравнить два списка и распечатать вывод разности из списка 1

    При использовании псевдонима SSH, почему SSH игнорирует мой (действительный) билет Kerberos?

    Правильный способ установки rsnapshot над ssh

    Как выполнить `exec` процесс с пользовательским env?

    Linux и Unix - лучшая ОС в мире.