When a barman calls 'time' at the pub, they are letting you finish your drink. Unfortunately the standard command to pull down Nginx on Ubuntu Precise is a little more aggressive. When it calls time, it snatches your unfinished beer away right there and then.
Thankfully there's a really simple way to socialise Nginx. It is by calling the nginx server command directly with the -s argument instead of using the /etc/init.d/nginx or service nginx commands.
-s lets you send signals to the Nginx master process and Nginx behaves differently whether it receives a quit signal versus a term signal.
# terminate the nginx master process immediately $ sudo nginx -s stop # terminate the nginx master process once all outstanding connections have been completed $ sudo nginx -s quit $ [email protected]:~$ ps aux | grep nginx root 1063 0.0 0.0 88796 3432 ? Ss Jan21 0:00 nginx: master process /usr/sbin/nginx www-data 9786 1.3 0.0 91564 7352 ? S Feb03 190:11 nginx: worker process is shutting down www-data 9788 1.3 0.0 91288 7072 ? S Feb03 189:02 nginx: worker process is shutting down www-data 9789 1.3 0.0 91160 6956 ? S Feb03 190:03 nginx: worker process is shutting down
Let you visitors finish their drink, don't terminate nginx on a production server using /etc/init.d/nginx stop or service nginx stop.
Read more about Nginx's command line options