编写一个shell脚本,运行其他用户拥有的另一个shell脚本

时间:2013-12-16 06:34:14

标签: linux bash shell tomcat ubuntu

我在/ opt / tomcat6中安装了tomcat,并在〜/ tomcatHost目录中创建了一个实例./ opt / tomcat6由用户tomcat和group tomcat拥有。 Unix“ls -l”产生以下 -

  

drwxr-xr-x 9 tomcat tomcat 4096 Dec 15 03:37 tomcat6

在这种情况下,要在〜/ tomcatHost中运行tomcat实例,我需要执行以下步骤 -

  • 将conf / webapps,日志从/ opt / tomcat6复制到〜/ tomcatHost。在~tomcatHost / conf中对server.xml进行一些更改(例如,更改“Connector”元素中的端口号)
  • 通过chmod -
  • 为所有用户授予〜/ tocatHost执行权限
  

$ chmod -R 777 tomcatHost

  • 并运行以下命令 -
  

$ export CATALINA_BASE=/home/guestUser/tomcatHost
$ su tomcat
$ cd /opt/tomcat6/bin
$ sh startup.sh

现在tomcat从server.xml中配置的端口开始。我正在尝试编写一个执行上述任务的shell脚本。我是shell脚本的新手,无法解决这个问题。我认为存在所有权问题,任何人都可以告诉我如何处理shell脚本中的所有权问题?或者,如何编写脚本以从其他用户运行“startup.sh”(由tomcat用户拥有)。你能为此建议任何好的教程吗?

1 个答案:

答案 0 :(得分:1)

我已经得到了解决方案。可能它不是最好的解决方案,但它的效果非常好。我在名为'start.sh'的文件中编写了以下代码(基于this.) -

export CATALINA_BASE=/home/razib/tomcat_host  
echo "CATALINA_BASE is set..."  
echo "Password for 'tomcat' - "  
su -c "sh /opt/tomcat6/bin/startup.sh" -s /bin/sh tomcat

然后从终端我运行'start.sh'scrip