Dnia 23-09-2006, sob o godzinie 20:57 -0700, Peter Gordon napisał(a):
Gentoo's initscripts have a dependency-tracking functionality
one service can forcibly require another (such as Apache and Squid
requiring that the 'net' service be started, et al.)
"net" service is something more than our "network", which
can be started without me having Internet connectivity. In order to
check if some service will hang I'd have to ping something like
, my parent NTP server and so on. Things to check for
are more sophisticated than simple "is service X running".
But even if I could really detect all the things that will hang a
service, this is still stupid. If I run Apache and Sendmail on a machine
and the Internet link is temporarily down when I start it, I don't want
it to boot for hours, but I still don't want to have the machine stand
up without the services. What I want is both programs coming up
instantly and serving their functions whenever the 'net is back.
Making programs poll interfaces to bind to them regularly and/or
validating config parameters with DNS queries whenever there is the
possibility is something more than maintainer's job. That's why I don't
expect Fedora people to fix every program in existence [but I'm not
stopping anyone ;)], instead I expect ^C to work. Right now I use
alt-sysrq-k, because that's the only way (still disabled by default).
Programmable timeout for any service besides audit would also be a good
thing. This seems easy to do as we already have rhgb which works
interactively when the services are starting and already has a timeout
to show the terminal if a process is taking too long. Now all there's
left is either
- waiting indefinitely,
- killing it after a second, longer timeout,
- putting it in the background after that longer timeout,
depending on a service. Example of a service that can be safely pushed
to the background is sendmail (which tends to hang if there's something
wrong with DNS for my hostname, or at least did it last time I checked).
Example of a program for which we have to wait is fsck :)
Of course automatic killing is not an option if there's no way to
schedule this same service's startup few minutes later.