cat /etc/passwd (最后一行):
tomee:x:990:987::/home/tomee:/bin/false
我需要做一个init.d脚本来运行Tomcat EE,比如service tomee start 。
所以我有两个问题:
我怎样才能执行命令(从根)作为一个tomee用户(没有bashlogin)?
sudo su – tomee -c“一些命令”
不起作用。
sudo - tomee -s "/bin/bash" -c "some command"
作品,但我觉得它看起来很可怕。
/etc/init.d/tomee服务bash脚本,这里的问题我需要JAVA_HOME环境variables之前执行上述命令。 (那么如果用户是系统而没有shell,怎么办呢?) 我也有一个问题(警告), couldn't change dir to /home/tomee 。 是的,它不存在,但我创build了一个系统的用户。
我正在使用一个RHEL(不是最新的,所以没有systemd)。 如何在RHEL6上运行TomEE作为服务?
更新#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脚本(tomee)中,所以它对root有意义,因为init.d脚本以root身份运行,那么tomee用户将没有JAVA_HOME ?
更新#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数据库的init脚本使用相同的方法,所以我认为没关系。
顺便说一句,我仍然不明白为什么我们需要指定shell,而我们执行*.sh文件,因为有第一行,其中#!/bin/bash等
服务启动tomee由root运行来启动tomee服务。 这不是init脚本运行的实际命令。 初始化脚本包含在下面。
应该在init脚本中设置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安装的绝对path。 确保tomee用户可以读取,并且其中的webapps,日志,temp和工作目录可由tomee用户写入。