Create daemon on ubuntu 16.04

Adding to @Juanjo Aguilella Marés answer, and once you have copied/linked your script to /etc/systemd/system, you may want to automatically start it when the server starts:

sudo systemctl daemon-reload
sudo systemctl enable my_service.service
sudo systemctl start my_service.service

Source Digital Ocean

It is also a good idea not to run it as root. Just change the user line on your script:

[Service]
User=some_user

I solved the problem:

a) Create a file crawler.service in /etc/systemd/system with this code:

[Unit]
Description=Crawler cache Service
After=network.target

[Service]
User=root
Restart=always
Type=forking
ExecStart=/var/www/execute.sh

[Install]
WantedBy=multi-user.target

my bash file contains a diferent executations on parallel to the same php file with this code:

#!/bin/sh
php /var/www/tiendas.local.mediamarkt.es/crawler.php
sleep 0.1
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}&
sleep 0.2
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}&
sleep 0.3
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}&
sleep 0.4
{
    php /var/www/tiendas.local.mediamarkt.es/crawler.php
}

the sleep between execitions es necessary to save the problem about the execution so fast of the service.

If you have any suggestion about the solution, please comment, I dont have a lot of experience in bash files and systemd files, but at the moment works fine.


The init system for 14.04 is upstart. The init system for 16.04 is systemd. You should convert your upstart script to a systemd unit file. There are plenty of other resources available too.


1]. To create a service go to /etc/systemd/system/

2]. Create a file of serviceName e.g chatSocket.service

3]. Put content to file as given bellow

[Unit]
Description=Your PHP Daemon Service
#Requires=mysqld.service memcached.service #May your script needs mysql or other services to run.
#After=mysqld.service memcached.service

[Service]
User=root
Type=simple
TimeoutSec=0
PIDFile=/var/run/server.pid
ExecStart=/usr/bin/php -f /home/shrikant/workspace/app/Http/Controllers/server.php  2>&1> /dev/null #path to script
#ExecStop=/bin/kill -HUP $MAINPID
#ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

Restart=on-failure
RestartSec=42s

StandardOutput=null #If you don't want to make toms of logs you can set it null if you sent a file or some other options it will send all php output to this one.
StandardError=/home/shrikant/workspace/app/Http/Controllers/chatSocket.log #path to error log file
[Install]
WantedBy=default.target

4]. Reload configuration by hitting:

sudo systemctl daemon-reload

5]. Enable service by default so when system start service will automatically start:

sudo systemctl enable my_service.service

6]. Start your service by using command below:

sudo systemctl start my_service.service