Git – create empty branch

Git represents branches as pointers to the latest commit in that branch. If you haven’t created a commit yet, there’s nothing for that branch to point to. So you can’t really create branches until you have at least one commit.

Git allows to create a empty branch but its not common way of using Git.

First create create an empty Git repository by using following command:

$ git init

To create empty branch use following command:

$ git commit --allow-empty -m "initial commit for empty brach"

After running above command it will create a master branch, run following command to conform:

$ git branch


* master

By Sandeep Posted in Git Tagged

Hadoop – Decommission datanode


Decommissioning is process to remove one or multiple datanodes from Hadoop.

To decommission a datanode you need to use following process:

Login to namenode host.

Add follwoing configuration in/home/guest/hadoop-2.5.1/etc/hadoop/hdfs-site.xml


After adding dfs.hosts.exclude property you need to restart HDFS.

Then add datanode hostname that you want to remove in /home/guest/hadoop-2.5.1/etc/hadoop/decommission-nodes

Now run follwoing command to start decommissioning datanode

$ hadoop-2.5.1/bin/hdfs dfsadmin -refreshNodes

This process will run for few minutes depending on data size in datanode, keep monitor decommissioning status in on http://namenode:50070

After finishing decommissioning you can remove that datanode.


Ansible Playbook – Syntax check and dry run


To perform syntax check and dry run for ansible playbook use following command:

ansible-playbook -i hosts_file --syntax-check --list-tasks playbook.yml

where, –syntax-check is used to check syntax of a playbook & –list-tasks is to all tasks that are executed.

Lighttpd both http and https


We can configure both http & https on lighttpd webserver.

Use following configuration to serve both http & https requests:

server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
accesslog.filename = "/var/log/lighttpd/access.log"
server.errorlog = "/var/log/lighttpd/error.log" = "/var/run/"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80

#Configuration for https
$SERVER["socket"] == ":443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/lighttpd/certs/"

In above configuration file should contain both the private key and the certificate.

After updating lighttpd.conf file restart lighttpd:

$ service lighttpd restart

After restarting both http & https should work for your host.

iptables start on boot – Ubuntu/Debian


By default Ubuntu/Debian OS wont load iptable on boot.

So to load iptables on boot use follow procedure:

Save iptable conf with iptables-save command:

iptables-save > /etc/iptables.conf

Next, open file with name /etc/network/if-up.d/iptables and add following content:

iptables-restore < /etc/iptables.conf

Change permission file /etc/network/if-up.d/iptables as executable with following command:

chmod +x /etc/network/if-up.d/iptables

Now, iptables will restored on boot.

Whenever you change iptable rules don’t forgot to update iptables.conf file. Use following command to update iptables.conf file:

iptables-save > /etc/iptables.conf

Python – check variable for None


To check if a variable is None use following code:

>>> val=None
>>> val is None

If you want to use above example with if condition use following code:

if not (val in None):
  print "val is not none"
  print "val is none"

Python – ImportError: No module named memcache

While trying to connect memcached using python I got following error:

ImportError: No module named memcache

Since I imported memcache & it’s not available in my server I got the error message saying that “No module named memcache”.

To resolve this issue we need to install python-memcache module.

Use following command to install python-memcache:

$ pip install python-memcache

If  your OS is Ubuntu/Debian following command also works for you:

$ apt-get install python-memcache

After installing python-memcache we can seamlessly connect to memcached.

Ubuntu desktop change nameservers permanently

To change nameservers permanently in Ubuntu Desktop Version we need to update /etc/resolvconf/resolv.conf.d/head file with desired list.

Following is the procedure to change nameservers permanently:

Open /etc/resolvconf/resolv.conf.d/head file with your favourite editor:

sudo vim /etc/resolvconf/resolv.conf.d/head

Add following lines to /etc/resolvconf/resolv.conf.d/head, save & exit from the file


Run following command to change nameservers permanently:

sudo resolvconf -u

After running above commands nameservers in your desktop version will get updated with new list as mentioned in /etc/resolvconf/resolv.conf.d/head file.
To conform this open /etc/resolve.conf and validate.

Linghttpd – unknown config-key: accesslog.filename

Recently I faced wearied scenario where I am unable to view access logs of lighttpd.

Even though after adding accesslog.filename = “/var/log/lighttpd/access.log” line in lighttpd.conf file logs are not getting updated in lighttpd.conf file

After debugging for a while I seen following error in /var/log/lighttpd/error.log:

WARNING: unknown config-key: accesslog.filename (ignored)

To fix this issue I adding “mod_accesslog” to servers.modules in lighttpd.conf file & restarted lighttpd. After that issue got resolved.

Following is my server.modules after adding mod_accesslog:

server.modules = (