linux下使用curl访问多参数url

来源:互联网 发布:北航人工智能 编辑:程序博客网 时间:2024/05/16 08:21
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 ErrorServer: nginx/1.2.0Date: Wed, 20 Jun 2012 04:16:21 GMTContent-Type: text/html;charset=utf-8Content-Length: 1180Connection: 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] 11319tianfang > ./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"

Reference

http://blog.csdn.net/damacheng/article/details/42393665
http://www.cnblogs.com/z-books/p/6228284.html
http://blog.sina.com.cn/s/blog_963453200102uya7.html

原创粉丝点击