1

Я нащупываю свой путь с этим, как новичок со всеми вещами Linux, поэтому, пожалуйста, будьте терпеливы :)

Я хотел бы вывести идентификатор процесса программы в файл. Из моих чтений это обычно достигается специальной переменной pling, которую поддерживает linux:

make_something_run.sh &
echo $! > /var/run/someting.pid

однако, когда я пытаюсь применить это в моем скрипте запуска для red5, он успешно создает файл pid, но в нем нет идентификатора. Это конкретный скрипт:

start)
    echo -n "Starting Red5"
    echo -n " "
    cd $RED5_HOME
    su -s /bin/bash -c "$RED5_HOME/$RED5_PROG.sh &" $RED5_USER
    echo "$RED5_HOME/$RED5_PROG.sh &"
## su -s /bin/bash -c "$RED5_HOME/$RED5_PROG.sh > start.log &" $RED5_USER
    echo $! > /var/run/red5.pid
    wait $!
    sleep 2
   ;;

Я пробовал с и без wait $! (который, я полагаю, ждет запуска процесса перед записью файла?) без успеха. Мои единственные другие мысли - сделать что-то необычное с помощью grep и ps aux, чтобы извлечь число, хотя я не знаю, будет ли это надежным подходом.

1 ответ1

2

Вам нужно добавить эхо
make_something_run.sh & echo $! > /var/run/someting.pid
                                                     ^

http://www.odi.ch/weblog/posting.php?posting=291

РЕДАКТИРОВАТЬ:
su -s /bin/bash -c "${RED5_HOME}/${RED5_PROG}.sh & echo \$! > /var/run/red5.pid" $RED5_USER

или же
https://stackoverflow.com/questions/6197165/getting-a-pid-from-a-background-process-run-as-another-user

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .