我有一個這樣的腳本:
su lingcat -c PHPRC\=\/home\/lingcat\/etc\/php5\
PHP_FCGI_CHILDREN\=4\ \/usr\/bin\/php\-loop\.pl\ \/usr\/bin\/php5\-cgi\ \-b\
127\.0\.0\.1\:9006\ \>\>\/home\/lingcat\/logs\/php\.log\ 2\>\&1\ \<\/dev\/null\ \&\
echo\ \$\!\ \>\/var\/php\-nginx\/135488849520817\.php\.pid
這是工作。但腳本中有太多的\
,它們使代碼不可讀。所以,我寫了一個新的shell腳本:
#!/bin/sh
case "$1" in
'start')
su biergaizi -c "PHPRC=/home/biergaizi/etc/php5 PHP_FCGI_CHILDREN=2
/usr/bin/php-loop.pl /usr/bin/php-cgi -b /var/run/virtualhost/php5-fpm-biergaizi.test.sock >>/home/biergaizi/logs/php.log 2>&1 </dev/null &
echo $! > /var/php-nginx/biergaizi.test.php.pid"
RETVAL=$?
;;
'stop')
su biergaizi -c "kill `cat /var/php-nginx/biergaizi.test.php.pid` ; sleep 1"
RETVAL=$?
;;
'restart')
$0 stop ; $0 start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop }"
RETVAL=1
;;
esac
exit
但是/var/php-nginx/biergaizi.test.php.pid
是空的。
怎麼了?
哇!從什麼時候開始你需要避開前鋒?你聽說過報價嗎?您可能會發現「作業-p%1」在bash中的作用不僅僅是「$!」用於獲取後臺進程的pid。 –
這個問題是類似的http://stackoverflow.com/questions/16542417/bash-get-pid-of-a-process-using-a-diferent-user/16542582#16542582 – anishsane
@Nicholas威爾遜我從來沒有逃過一個前瞻性的,斜槓,但自動腳本生成器。 –