curl -i http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428&b=39.90923
[1] 8741
[jb-xccheng@usa-ip-12 ~]$ HTTP/1.1 500 Internal Server Error
Server: nginx/1.2.0
Date: Wed, 20 Jun 2012 04:16:21 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 1180
Connection: keep-alive
#出错信息
[1]+ Done sudo curl -i http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428
实际发出的请求是:
http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428
原因分析
由于url中有&其他参数获取不到,& 在shell脚本中有特殊的意义(以daemon运行)
单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
小拓展
& 放在启动参数后面表示设置此进程为后台进程
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的。
如:
tianfang > run &
[1] 11319
tianfang > ./game.e 1 &
进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319。切换到后台的进程,仍然可以用ps命令查看。
可以通过bg (background)和fg(foreground)命令将其在前后台间状态切换。
- 守护进程
如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程。守护进程值得是系统长期运行的后台进 程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数,当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。
解决办法
#对&进行转义才能 $_GET获取到所有参数
curl -s http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428\&b=39.90923
# 双引号把整个url引起来就ok了
curl "http://marsoffset.goforandroid.com/GoSmsMarService/abc?a=116.397428&b=39.90923"