On Apr 14, 2005, at 2:53, Gerrit Pape wrote: > On Sun, Apr 10, 2005 at 11:16:06PM -0400, Charlie Brady wrote: >> Version of mysql is 3.23.58. I haven't looked at other versions, so >> don't >> know whether this is new or old brain-damage. >> >> I have a straightforward run file: >> >> #!/bin/sh >> exec /usr/libexec/mysqld \ >> --defaults-file=/etc/my.cnf \ >> --basedir=/usr \ >> --datadir=/var/lib/mysql \ >> --user=mysql \ >> --pid-file=/var/run/mysqld/mysqld.pid >> >> This starts a set of four mysqld processes/threads: > >> But notice that the pid file doesn't reference the parent process: >> >> sh-2.05a# svstat . >> .: up (pid 31796) 123 seconds, normally down >> sh-2.05a# cat /var/run/mysqld/mysqld.pid ; echo >> 31798 >> sh-2.05a# > >> But, it's worse than that, Jim! The parent process - the one that >> supervise is watching and "controlling" ignores INT, TERM and QUIT >> signals. > >> So we lose control of the daemon: > >> Fortunately runit provides an easy solution to this problem (although >> we >> are left with no option but to trust a pid file, with all the problems >> that entails). We just create control/t and control/d files (at >> least), >> containing: >> >> #! /bin/sh >> exec kill -TERM $(cat /var/run/mysqld/mysqld.pid) > >> [Gerrit, if you can verify this, you'll need to update your run script >> list.] > > I personally don't use mysql, I won't verify it. I think instead of > updating the run script on the web page, I'll remove mysql completely > from the list. This service daemon causes so many troubles for a > supervisor, that's not worth it imho, it even seems to change behavior > from version to version. I don't have a problem here running the latest mysql (4.1.11) using the following scripts: [root@titan mysqld]# cat run #!/bin/sh PATH="/sbin:/usr/sbin:/bin:/usr/bin" # this runs mysqld supervised umask 077 DATADIR="/var/lib/mysql" PID_FILE="$DATADIR/`/bin/hostname`.pid" MYSQLD_OPTS="" LOG="" # overwrite the above if [ -f /etc/sysconfig/mysqld ]; then . /etc/sysconfig/mysqld fi if [ "$LOG" != "" ]; then LOGFILE="--log=$LOG" fi /usr/sbin/mysqld --basedir=/ --datadir=$DATADIR --user=mysql --pid-file=$PID_FILE $LOGFILE --skip-locking $MYSQLD_OPTS 2>&1 [root@titan mysqld]# cat finish #!/bin/sh PATH="/sbin:/usr/sbin:/bin:/usr/bin" # this uses mysqladmin to shutdown mysqld, but we have to tell it where to find .my.cnf HOME=/root /usr/bin/mysqladmin shutdown As you can see, we can start and stop it all we like, provided we store the root user's password (for the db root user) in root's (system root) ~/.my.cnf: [root@titan mysqld]# srv stop mysqld Stopping mysqld: mysqld mysqld/log done [root@titan mysqld]# srv status mysqld /service/mysqld: down 1 seconds /service/mysqld/log: down 5 seconds [root@titan mysqld]# srv start mysqld Starting mysqld: mysqld/log mysqld done [root@titan mysqld]# srv status mysqld /service/mysqld: run (pid 3590) 9 seconds /service/mysqld/log: run (pid 3580) 9 seconds -- Annvix - Secure Linux Server: http://annvix.org/ "lynx -source http://linsec.ca/vdanen.asc | gpg --import" {FEE30AD4 : 7F6C A60C 06C2 4811 FA1C A2BC 2EBC 5E32 FEE3 0AD4}