Quick command to check the status of a URL (Linux, BSD, OS X)

There may be times when you just want to do a quick check to see whether a web site is up, and/or what status message the web server is showing. This won’t actually show you if the page it served up is correct or not, purely the web server status code on whether or not it served something/anything/nothing!

There are lots of status codes for web servers, and they are detailed here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

So, to be able to see the status message, and to check if a host is up or not, we can use the curl command.  curl is installed by default on OS X, but you may need to install it on your Linux distribution or BSD installation.

So, to do a quick check from a command line:

curl -Is http://droptips.com | head -n 1

And you’ll get something back similar to:

HTTP/1.1 200 OK

Status code 200 is “OK”.

HTTP/1.1 200 OK

As another example, to show you how this will display different status codes, you’ll notice that if you visit: http://www.droptips.com you are redirected to http://droptips.com, purely because I prefer not to have www in the URL.  I do this by implementing a 301 (Permanently moved) from within Apache for any client going to www.droptips.com:

$ curl -Is http://www.droptips.com | head -n 1
HTTP/1.1 301 Moved Permanently

As you can see, the web server returned a 301, and this is shown.

curl can also take full URLs, so you can check whether or not a particular page/path is being served or not:

curl -Is http://droptips.com/tag/tips/ | head -n1
HTTP/1.1 200 OK

So if you want to see if that new redirect is working, or just to see if your web server is up and serving requests, give curl a go!  This is just a basic overview of one thing you can do with curl – it’s a very flexible command, and can be used in a number of scenarios, some of which I will post about in the future.