4

I'm writing a simple daemon application using C/C++ and I want it to start when Linux starts up.

I have tried to modify /etc/init.d/skeleton to add a script into the init.d directory as follows

  1. added my daemon application in /usr/sbin/ directory and changed NAME=myDaemon

  2. write update-rc.d myDaemon default in Terminal

  3. and it added symbolic links to rc#.d directories

But it didn't work.

My second try was to modify rc.local as

/usr/sbin/myDaemon start 

But this didn't work either.

How can I make my daemon start with the OS? I want to do everything programmatically.

I use Ubuntu 10.10 but if there exists a general solution for all distributions, that would be great!

2 Answers 2

9

You don't modify the /etc/init.d/skeleton file. You copy it to a new file /etc/init.d/mamoudservice (replace mamoudservice with a more suitable name) and then you edit that new file appropriately.

Then you add a symlink from /etc/rc2.d/S99mamoudservice to /etc/init.d/mamoudservice etc.

Use e.g.

   /bin/bash -vx /etc/init.d/mamoudservice start

to understand how the bash shell is interpreting your script.

If your daemon program /usr/sbin/mamouddaemon is coded in C or in C++, I suggest using openlog and syslog inside, at least to get debugging messages (don't output to stderr or stdout in a daemon, it could go nowhere).

An alternative to having your /etc/init.d/mamoudservice script might be to put a @reboot entry in your crontab

9
  • how can i modify it excuse me as i told you i just take my first steps on Linux World
    – Ma7moud El-Naggar
    Commented Jan 22, 2012 at 9:01
  • 1
    try emacs (or vi, no flame war!)
    – alexhairyman
    Commented Jan 22, 2012 at 9:18
  • i don't ask about what text editor i use but what section/Variable in this file to change
    – Ma7moud El-Naggar
    Commented Jan 22, 2012 at 9:24
  • Oh, can't help you there. There are so many ways to solve a problem in linux, it's great. BTW, welcome to linux! (CopyRight free!)
    – alexhairyman
    Commented Jan 22, 2012 at 9:30
  • Ok. Your real question is how to debug your /etc/init.d/mamoudservice script. Try to run /bin/bash -vx /etc/init.d/mamondservice start and you'll understand what is happening. On a more general note, learn more about your operating system before adding services to it. We cannot help more because we have no idea of how your /usr/sbin/mamouddaemon operate, and which program options it is accepting.
    – Basile Starynkevitch
    Commented Jan 22, 2012 at 9:49
2

Try chkconfig with the name of your service and then "on." This must be run as root.

4
  • i don't want to use GUI App or Terminal if i want so i can use Startup Application Application on Ubuntu
    – Ma7moud El-Naggar
    Commented Jan 22, 2012 at 8:58
  • chkconfig modifies a file so that the indicated service is automatically started the next time you turn your computer on. Trust me, after setting up a CentOS server cluster, this is how you do it.
    – alexhairyman
    Commented Jan 22, 2012 at 9:15
  • @Ma7moud El-Naggar: chkconfig creates various symlinks in /etc/rc\d.d/ for you.
    – jfs
    Commented Jan 22, 2012 at 10:36
  • i have already symlinks on rc#.d directories
    – Ma7moud El-Naggar
    Commented Jan 22, 2012 at 10:54

You must log in to answer this question.