2016-08-02 42 views
0

我有一个需要与特定用户和特定httpd.conf运行的apache。任何人都会这样做:在Linux上更改apachectl

su - test_user -c "/opt/test_server/apache-2.2.31/bin/apachectl -k start/stop -f /opt/test_server/apache-2.2.31/conf2/httpd.conf" 

我的问题是我需要在apachectl脚本上这样做。所以当我这样做时:

apachectl start 

Apache将启动特定命令和httpd.conf文件。

那么,什么阿帕奇通常做的是:

case $ARGV in 
start|stop|restart|graceful|graceful-stop) 
$HTTPD -k $ARGV 
ERROR=$? 

HTTPD='/opt/test_server/apache-2.2.31/bin/httpd'ARGV是运行参数(start/stop)。我想这种方式改变:

ARGV=$ARGV" -f /opt/test_server/apache-2.2.31/conf2/httpd.conf" 
COMMAND="su - my_id -c \"${HTTPD} -k ${ARGV}\"" 
$COMMAND 
ERROR=$? 

但是当我尝试运行它,我得到这个错误:

[[email protected] bin]# ./apachectl stop 
su - test_user -c "/opt/test_server/apache-2.2.31/bin/httpd -k stop -f /opt/test_server/apache-2.2.31/conf2/httpd.conf" 
su: invalid option -- k 
Try `su --help' for more information. 

我做错了吗?

+0

您是否尝试过'su --help'以获取更多信息?提示:第一行是'Usage:su [OPTION] ... [ - ] [USER [ARG] ...]' – miken32

+1

另外,Apache有['user'](http://httpd.apache.org/ docs/current/mod/mod_unixd.html#user)和['group'](http://httpd.apache.org/docs/current/mod/mod_unixd.html#group)指令来控制服务器运行的用户。 – miken32

回答

0

你可能会使用eval $COMMAND这将执行你的命令存储在一个变量。