• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Server startup installation issues!
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Server startup installation issues!


  • Subject: Re: Server startup installation issues!
  • From: Mike Fischer <email@hidden>
  • Date: Tue, 26 Sep 2006 00:53:31 +0200

Am 25.09.2006 um 21:02 schrieb "rohit dhamija" <email@hidden>:

Dear All,
We have developed a sever ( basically a daemon) using Xcode 2.2 for Mac OS
10.4.x ppc/Intel and 10.3.9 which functionally performs well.
But I have some issues of server starting specifically when the machine
starts/reboots and require your expert comments to resolve this tricky
situation.

That is not really an Installer question but here are some tips anyway:


I have developed a script file that is used to start and stop the server. To
start the sever automatically, we have included this script file in rc
script (i.e. /etc/rc ). The server gets started automatically at start of
the machine.

Not a good idea as the rc stuff is basically off limits on Mac OS X. Apple might change or overwrite your script or hook anytime. For example when they do a system update.



But as per my requirements, the server needs to be connect to network and
save some n/w relevant information in its database (e.g its own IP address)
But unfortuntately, this does not happens, probably because the rc scripts
makes run myserver "even before the network is initialized".
A scenerio which makes me sure for this is:
"Although my server gets started, but its database contains - 127.0.0.1 IP
address instead of its original IP.
On the other hand if my restart my server when the machine is fully up, I
get the correct n/w information. i.e. i get the correct IP 172.125.14.64 "

On 10.4 and up you should probably use launchd, i.e. a LaunchDeamon, to do this right.


On earlier systems, which you are targeting, the SystemStarter method (StartupItem) is what you want. (Note that StartupItems are still supported on Tiger.)

Take a good look at the Requires and Uses keys in the .plist. If you require that the networking code is up and running you should say so in your .plist and SystemStarter will schedule your StartupItem accordingly.

But also be aware that it is very easy on Mac OS X to change the network settings on a running system. It's something I do quite often when visiting clients and hooking into their network for example or when a VPN connection is started or even when testing something. You need to take this into account inside your deamon and not rely on the one network setting it encountered on launch to stay that way.


Here are some Apple Tachnotes that might help you: <http://developer.apple.com/technotes/tn2005/tn2083.html> <http://developer.apple.com/technotes/tn/tn1145.html>


After going through some articles in Apple for starting/stopping the server
(http://developer.apple.com/documentation/MacOSX/Conceptual/ BPSystemStartup/Articles/StartupItems.html
) I tried to load the server at startup so that the myserver should start
only after the n/w is up. But unfortuantely, now my server doesnot even gets
up at the startup.

This is too unspecific to help. Is your StartupItem not triggered or is the failure at some later point in time?



I've put the following scriptfile inside a uniquely named folder in the
/Library/StartupItems folder (which I also created) along with a simple
StartupParameters.plist file.

Read the section on StartupItems again. Make sure the name of the StartupItem folder matches that of your script. Make sure the name of the .plist is "StartupParameters.plist". Make sure the .plist contains all the necessary keys.


You can test it manually by calling something like:

$ sudo SystemStarter start "the service you registered in the Provides key of the .plist"

See man SystemStarter for details and how to turn on verbose logging.


However, it never seems to get loaded. That is, when I go into the Process
Viewer, my server is never there. Neither do any of its (sparse) debug
messages appear in the console. Below is the script file that I place in my
folder.


. /etc/rc.common
StartService ()
{
cd /Applications/MyCompany\ MyProduct/Common\ Files/MyProduct\ Keys \ Server

For testing this may be ok. But in real life relying on a fixed path like this is risky. Users tend to move things around. For example I regulary put any 3rd party apps into a subfolder of /Applications. Either use a location not generally visible to users (like /usr or / usr/local) or put your server or its launch script into /Library/ Application Support/MyProduct/. Most people will not move anything around in there and if they do they know they're on their own.



sudo ./myServer

sudo should not be necessary here since the StartupItems are generally started with root permissions AFAIK. It may even cause the script to fail because there will be no way to authenticate for the script. Remember this all usually happens before the login screen is even shown.



 ConsoleMessage "Starting myServer"
}

StopService ()
{
    sudo kill -9 $(ps -ax|grep ./myServer|head -n 1|cut -c 3-5)

See comment about sudo above.

And kill -9 seem kind of brutal to me.

And your method of finding the running process seem very risky to me. What if that code findes some other process and kills it? You can't guarantee that your process name will be unique.


 ConsoleMessage "Stopping myServer"
}

RestartService ()
{
ConsoleMessage "Restarting myServer"
sudo kill -9 $(ps -ax|grep ./myServer|head -n 1|cut -c 3-5)
cd /Applications/MyCompany\ MyProduct/Common\ Files/MyProduct\ Keys \ Server


sudo ./myServer

or just do this to avoid duplicate code: StopService StartService
}

RunService "$1"

Did anybody faced similar situation ??? Can you please tell me where can be
the possible issue ?? Why is the server not able to load at the startup ?

Well, I showed you several possibilities of why this might fail for you. Now you need to test and see where it's actually failing.



HTH

Mike
--
Mike Fischer         Softwareentwicklung, EDV-Beratung
                                    Schulung, Vertrieb
Web: <http://homepage.mac.com/mike_fischer/index.html>
Note:                 I read this list in digest mode!
          Send me a private copy for faster responses.

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Installer-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Prev by Date: Re: Server startup installation issues!
  • Next by Date: Re: Select Destination screen
  • Previous by thread: Re: Server startup installation issues!
  • Next by thread: Select Destination screen
  • Index(es):
    • Date
    • Thread