LINUX.ORG.RU
ФорумAdmin

глупый вопрос, но все же: как запустить демон от имени пользователя ?


0

0

subj.
есть скрипт в /etc/rc.d/rc.daemon:

if [ -x /usr/bin/daemon ]; then
   /usr/bin/daemon
fi

вот, как сделать так,чтобы он стартовал от имени daemon ( в любой ситуации: при загрузке системы, при ручном старте типа: sh /etc/rc.d/rc.daemon start и т.д. ) ?

у меня так:

в системном /etc/rc.d/rc.local записан путь до лакального 
rc.local в пользовательской директории:

su - grb -c "~grb/rc.local start"

в пользовательской же директории rc.local:

#!/bin/sh
#
# This script MUST be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.


# Source function library.
. /etc/rc.d/init.d/functions

NASA=~ivan/nasa
HOME=~grb

PATH=$HOME/bin:/usr/bin:/bin:$PATH
cd $HOME

ps='ps -O pgid,user -e'
patrn='(/socket_demo/||/sms.pl/||/time.pl/||/server.pl/||/serv.pl/)&&!/a
wk/'

case "$1" in
  start)
        nohup bash -c "$NASA/socket_demo 5227 \
                                >>$NASA/socket.log 2>&1 </dev/null &" &
        nohup bash -c "exec -a time.pl perl $NASA/time.pl \
                                >>$NASA/socket.log 2>&1 </dev/null &" &
        nohup bash -c "exec -a sms.pl perl $NASA/sms.pl \
                                >>$NASA/sms.log    2>&1 </dev/null &" &
        nohup bash -c "exec -a server.pl perl $NASA/server.pl \
                                >>$NASA/socket.log 2>&1 </dev/null &" &
        nohup bash -c "exec -a serv.pl perl $NASA/serv.pl \
                                >>$NASA/socket.log 2>&1 </dev/null &" &
        ;;
  stop)
        l=`$ps | awk "$patrn"'{print $1;}'`
        if [ -z "$l" ] ; then
                echo No daemons
        else
                kill $l
        fi
        ;;
  status)
        l=`$ps | awk "$patrn"'{print $0;}'`
        if [ -z "$l" ] ; then
                echo No daemons
        else
                echo "$l"
        fi
        ;;
        ;;
  *)
        echo $"Usage: ~grb/rc.local {start|stop|status}"
        exit 1
esac

exit 0

при запуске системы оно стартует самостоятельно, и если нужна 
юзеру будет, оно может проверить состояние процесса, остановить или 
запустить оный процесс ./rc.local status, ./rc.local stop, ./rc.local start

vilfred ☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.