cat /etc/passwd
(Последняя линия):
tomee:x:990:987::/home/tomee:/bin/false
Мне нужно сделать init.d
сценарий для запуска Tomcat EE как service tomee start
.
Итак, у меня 2 проблемы:
Как я могу выполнить команду (от root) как пользователь tomee (без входа в bash)?
sudo su - tomee -c "некоторая команда"
Не работает.
sudo - tomee -s "/bin/bash" -c "some command"
работает, но выглядит ужасно.
/etc/init.d/tomee
service bash script, и проблема здесь мне нужно как-то иметь JAVA_HOME
переменная envirioment, установленная перед выполнением указанной выше команды. (Так как же это сделать, если пользователь системы и у него нет оболочки?)И еще у меня есть проблема (предупреждение), что couldn't change dir to /home/tomee
. Да, его нет, но я создал пользователя как системного.
Я использую RHEL (не самый новый, поэтому нет systemd). Как запустить TomEE как службу на RHEL6?
ОБНОВЛЕНИЕ №1:
[root@localhost httpd]# su tomee /usr/local/tomee-webprofile-1.7.2/bin/startup.sh
[root@localhost httpd]#
И никаких результатов. Только
su - tomee -s "/bin/bash" /usr/local/tomee-webprofile-1.7.2/bin/startup.sh
работает, но я не хочу видеть эту ужасную -s "/bin/bash"
часть.
И более того, согласно JAVA_HOME
, если я положу это внутрь init.d
скрипт (фолиант), поэтому он имеет смысл только для root как init.d
скрипты запускаются с правами root, поэтому не будет JAVA_HOME
для пользователя tomee?
ОБНОВЛЕНИЕ №2:
[root@localhost ~]# su tomee -s "/bin/bash" -c "echo hi"
Печатает "привет" - все нормально.
[root@localhost ~]# su tomee -c "echo hi"
Он ничего не печатает. Зачем?
ОБНОВЛЕНИЕ # 3:
Наконец-то я заставил его работать с:
su -s /bin/bash $TOMCAT_USER $TOMCAT_CATALINA_SH stop
Я заметил, что сценарии инициализации oracle db используют тот же подход, поэтому я думаю, что это нормально.
Кстати, я все еще не могу понять, почему нам нужно указывать оболочку при выполнении *.sh
файл, так как есть первая строка, где #!/bin/bash
и т.п.
начало службы управляется корень чтобы начать Мне служба. Это не настоящая команда, которую должен запустить сценарий инициализации. Сценарий инициализации для этого включен ниже.
JAVA_HOME должен быть установлен в сценарии инициализации.
/etc/init.d/tomee (необходимо пометить как исполняемый):
#!/bin/bash
# description: TomEE Start Stop Restart
# processname: tomee
# chkconfig: 234 20 80
TOMEE_USER=tomee
JAVA_HOME=/usr/java/jdk1.6.0_33
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=apache-tomee-webprofile-1.0.0
case $1 in
start)
/bin/su $TOMEE_USER $CATALINA_HOME/bin/startup.sh
;;
stop)
/bin/su $TOMEE_USER $CATALINA_HOME/bin/shutdown.sh
;;
restart)
/bin/su $TOMEE_USER $CATALINA_HOME/bin/shutdown.sh
/bin/su $TOMEE_USER $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0
Адаптировано из http://www.davidghedini.com/pg/entry/apache_tomee_on_centos_6.
редактировать CATALINA_HOME выше, чтобы быть абсолютным путем установки TomEE. Убедитесь, что он доступен для чтения пользователю tomee и что веб-приложения, журналы, временные и рабочие каталоги в нем доступны для записи пользователю tomee.