I've been digging around in the bootscripts a little more lately, and I've found some behavior that I think could be changed and I'd like comments on. I can provide patches later, but first I thought I'd like to hear comments.
1. Make statusproc() return unsuccessfully if the process isn't running Right now, statusproc always returns successfully with a list of pids for the requested process name or a message saying that it's not running. I think it would be more helpful to have it return unsuccessfully if there are no processes by that name running. In order to do this right now, I need to parse the output. This is a one line fix. Basically, I want to do something like this from a script: if /etc/rc.d/init.d/process status >/dev/null; then /etc/rc.d/init.d/process restart fi 2. Make statusproc() use pidofproc() instead of the deprecated getpids() statusproc is using getpids, which has been marked as deprecated in the functions. I think all the *proc functions should be calling pidofproc for consistency. 3. Allow the -p pidfile argument to all *proc() functions statusproc does not allow the pidfile argument to be passed in. This goes along with 2. getpids will respect the variable PIDFILE, but it should also allow the -p argument like loadproc and killproc and pass it on to pidofproc. 4. Add the /sbin/service script to allow an agnostic way to query the bootscripts This one might be more controversial. To run the bootscripts, you need to know the implementation detail about where they are, particularly the info in /etc/sysconfig/rc. Ideally, there should be an agnostic way to run these bootscripts without any prior knowledge of how LFS has set them up. This is not an original idea. I think all the major distros do this (Fedora and SuSE for sure), although it's not an LSB requirement. Where I got the idea is from the pm-utils project. This project is a dependency of newer HAL releases which tries to provide a distro-neutral way to run power management functions for suspend/hibernate/etc. Part of these processes is stopping/starting system services like ntpd. In order to do this with any sanity across multiple distros, there has to be an agnostic way to run services. Here is a mailing list thread discussing the /sbin/service approach, the pm-utils functions where service or its fallback are defined (search for service), and an example usage of service in pm-utils: http://lists.freedesktop.org/archives/pm-utils/2007-March/000383.html http://webcvs.freedesktop.org/pm-utils/pm-utils/pm/functions?view=markup http://webcvs.freedesktop.org/pm-utils/pm-utils/pm/hooks/90clock?view=markup While this is only one specific case where a service wrapper could be used, it seems like a smart idea in my opinion to hide distro-specific implementation details where possible. I've attached the very simple version that I came up with and has been working for me. Basically, it just sources /etc/sysconfig/rc and then wraps the call to the bootscript. The result can be something like this: /sbin/service clock start Let me know what you guys think. -- Dan
service.sh
Description: Bourne shell script
-- http://linuxfromscratch.org/mailman/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
