Re: Universal method to start a script at boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 12 September 2005 07:17, Michael Clark wrote:
> >>Is there a standard way to start a script or program at boot that will work
> >>on any Linux kernel/distro no matter which init system is being used or how it
> >>has been configured? Probably not, but I thought someone here could possibly
> >>answer this.
> 
> You could use the LSB conforming method of writing and installing
> an init script:
> 
> http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
> http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html
> http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html
> http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/initsrcinstrm.html

Awful. This codifies ages-old Unix traditional SysV-like init
and its derivatives, which should be get rid of instead.

daemontools are absolutely wonderful way of controlling daemons.

This is how sane system may look instead:

# ps -AH e
  PID TTY      STAT   TIME COMMAND
    1 ?        S      0:01 /bin/sh /init
  539 ?        S<     0:00   udevd UDEV_LOG=debug
  593 ?        S      0:00   rpc.portmap
  702 ?        S      0:00   svscan /var/service PATH=/bin:/usr/bin
  720 ?        S      0:00     supervise fw PATH=/bin:/usr/bin
  721 ?        S      0:00     supervise gpm PATH=/bin:/usr/bin
 1597 ?        S      0:00       gpm -D -2 -m /dev/psaux -t ps2
  722 ?        S      0:00     supervise nfs PATH=/bin:/usr/bin
  743 ?        S      0:00       /bin/sh ./run PATH=/bin:/usr/bin
 1097 ?        S      0:00         sleep 32000
  723 ?        S      0:00     supervise ntp PATH=/bin:/usr/bin
  736 ?        SL     0:00       ntpd -D 0 -c conf -f drift -s stat -l /proc/self/fd/2 -p /dev/null -k /dev/null -g -d -n
  724 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  737 ?        S      0:00       multilog t /var/log/service/ntp
  725 ?        S      0:00     supervise smb PATH=/bin:/usr/bin
  726 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  730 ?        S      0:00       multilog t /var/log/service/smb
  727 ?        S      0:00     supervise top PATH=/bin:/usr/bin
  760 ?        S      1:00       top c s TERM=linux
  728 ?        S      0:00     supervise dhcp PATH=/bin:/usr/bin
  729 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  755 ?        S      0:00       multilog t /var/log/service/dhcp
  744 ?        S      0:00     supervise klog PATH=/bin:/usr/bin
  784 ?        S      0:00       socklog ucspi
  745 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  780 ?        S      0:00       svlogd -tt /var/log/service/klog
  746 ?        S      0:00     supervise once PATH=/bin:/usr/bin
  747 ?        S      0:00     supervise sshd PATH=/bin:/usr/bin
  748 ?        S      0:00       /usr/bin/sshd -D -e -p22 -u0
  775 ?        S      0:00     supervise r_zebra PATH=/bin:/usr/bin
  776 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  797 ?        S      0:00       multilog t /var/log/service/r_zebra
  777 ?        S      0:00     supervise httpd PATH=/bin:/usr/bin
  792 ?        S      0:00       tcpserver -v -R -H -l 0 -c 40 0.0.0.0 www setuidgid root httpd -X -f /.local/var/service/httpd/httpd.conf
  778 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  788 ?        S      0:00       multilog t /var/log/service/httpd
  786 ?        S      0:00     supervise pgsql PATH=/bin:/usr/bin
  787 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  832 ?        S      0:00       multilog t /var/log/service/pgsql
  815 ?        S      0:00     supervise smb_s PATH=/bin:/usr/bin
  816 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  840 ?        S      0:00       multilog t /var/log/service/smb_s
  817 ?        S      0:00     supervise nfs_mountd PATH=/bin:/usr/bin
  846 ?        S      0:00       rpc.mountd --foreground --debug all
  827 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  857 ?        S      0:00       multilog t /var/log/service/nfs_mountd
  828 ?        S      0:00     supervise getty_ttyM0 PATH=/bin:/usr/bin
  829 ?        S      0:00     supervise getty_ttyS0 PATH=/bin:/usr/bin
  830 ?        S      0:00     supervise nmeter PATH=/bin:/usr/bin
 1011 ?        S      0:00       nmeter t c i x p b nif
  881 ?        S      0:00     supervise ovpn-1 PATH=/bin:/usr/bin
  882 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  954 ?        S      0:00       multilog /var/log/service/ovpn-1
  884 ?        S      0:00     supervise r_ospf PATH=/bin:/usr/bin
  885 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  886 ?        S      0:00       multilog /var/log/service/r_ospf
  889 ?        S      0:00     supervise getty_tty1 PATH=/bin:/usr/bin
  890 ?        S      0:00     supervise getty_tty2 PATH=/bin:/usr/bin
  970 ?        S      0:00       login -- vda               
 1676 tty2     S      0:00         -bash HOME=/home/vda PATH=/sbin:/bin:/usr/sbin:/usr/bin SHELL=/bin/bash TERM=linux MAIL=/var/mail/vda LOGNAME=vda
  891 ?        S      0:00     supervise getty_tty3 PATH=/bin:/usr/bin
  975 tty3     S      0:00       agetty 38400 /dev/tty3 linux TERM=linux
  892 ?        S      0:00     supervise getty_tty4 PATH=/bin:/usr/bin
  969 tty4     S      0:00       agetty 38400 /dev/tty4 linux TERM=linux
  893 ?        S      0:00     supervise getty_tty5 PATH=/bin:/usr/bin
  964 tty5     S      0:00       agetty 38400 /dev/tty5 linux TERM=linux
  894 ?        S      0:00     supervise getty_tty6 PATH=/bin:/usr/bin
  960 tty6     S      0:00       agetty 38400 /dev/tty6 linux TERM=linux
  895 ?        S      0:00     supervise getty_tty7 PATH=/bin:/usr/bin
  912 tty7     S      0:00       agetty 38400 /dev/tty7 linux TERM=linux
  896 ?        S      0:00     supervise getty_tty8 PATH=/bin:/usr/bin
  915 tty8     S      0:00       agetty 38400 /dev/tty8 linux TERM=linux
  897 ?        S      0:00     supervise syslog PATH=/bin:/usr/bin
  898 ?        S      0:00       socklog unix /dev/log PATH=/bin:/usr/bin PWD=/.local/var/service/syslog SHLVL=0 GID=50 UID=58
  899 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  903 ?        S      0:00       svlogd /var/log/service/syslog
  900 ?        S      0:00     supervise nfs_statd PATH=/bin:/usr/bin
  934 ?        S      0:00       rpc.statd -F -d
  910 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  911 ?        S      0:00       multilog t /var/log/service/nfs_statd
  924 ?        S      0:00     supervise automount PATH=/bin:/usr/bin
  951 ?        S      0:00       automount -f -s -v -d --timeout 15 /.local/mnt/auto program /root/bin/mapper.sh
  925 ?        S      0:00     supervise log PATH=/bin:/usr/bin
  926 ?        S      0:02       multilog t n5 /var/log/service/automount
  928 ?        S      0:00     supervise watcher PATH=/bin:/usr/bin
  929 ?        S      0:00     supervise udhcpd_eth0 PATH=/bin:/usr/bin
  719 ?        S      0:00   sleep 32000

And /init is:

#!/bin/sh

# Clean up env
unset HOSTNAME
unset devfs
unset MACHTYPE
unset SHLVL
unset SHELL
unset HOSTTYPE
unset OSTYPE
unset HOME
unset TERM
PATH=/bin:/usr/bin

exec >/dev/console
exec 2>&1
exec </dev/null
env - PATH="$PATH" /etc/some_startup_script_which_also_starts_svscan

# Close all descriptors
exec >&-
exec 2>&-
exec <&-
while true; do env - sleep 32000; done
--
vda
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux