在linux上更改apachectl

时间:2016-08-02 17:58:30

标签: linux bash apache

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

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文件。

那么,apache通常做的是:

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=$?

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

[root@thunder 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.

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用eval $COMMAND来执行存储在变量中的命令。