我有一个需要与特定用户和特定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.
我做错了什么?
答案 0 :(得分:0)
您可以使用eval $COMMAND
来执行存储在变量中的命令。