Назад | Перейти на главную страницу

На общем сервере, как запустить сценарий / процесс при запуске?

Я предполагаю, что я мог бы запускать задание cron каждую минуту или 5 минут и каким-то образом проверять, запущен ли уже процесс (не знаю, как это сделать).

Будет ли это лучший способ, или в моем домашнем каталоге есть другой сценарий, подобный .startup, в который я мог бы поместить сценарий?

Проблема здесь, похоже, в том, что у вас нет корневого доступа на этом хосте для изменения сценариев запуска системы, таких как /etc/rc.local. Идея использования @reboot строку в вашем пользовательском crontab стоит изучить. Я не пробовал это как обычный пользователь, но это должно работать.

Другая идея, как вы говорите, - запускать что-то в вашем пользовательском crontab каждые несколько минут, проверять, запущен ли ваш процесс, и перезапускать, если нет. Например:

*/5 * * * * ps -u $USER | grep myscript >/dev/null || $HOME/bin/myscript

будьте очень осторожны с подобными вещами - если вы сделаете ошибку, вы будете запускать дополнительную копию своей программы каждые 5 минут, что в конечном итоге может вызвать множество проблем.

вы можете использовать chkconfig - или быть ленивым и просто запустить в своем crontab

@reboot команда идет сюда

Эта ссылка может вам очень помочь (избавляет меня от необходимости печатать все ... конечно)

http://linuxhelp.blogspot.com/2006/04/enables-and-dispting-services-during_01.html

В зависимости от вашего дистрибутива (вы не упомянули об этом) у вас есть довольно широкий выбор: chkconfig, rcconf, /etc/(rc.d/)rc.local, символьные сценарии запуска в init.d \ rc.d - но все это требует привилегий root.

Я предполагаю, что у вас нет доступа к sudo. Это оставляет вам только один вариант, добавляя скрипт в crontab, который проверяет, запущен ли процесс, а если нет, то запускает его. Вы также получаете своего рода повышение доступности (например, если ваш процесс дает сбой, он запускается снова).

Я так понимаю:

#!/bin/sh

proc=process_name
`ps aux > /tmp/.$proc; awk '/$proc/{print $2}' /tmp/.$proc > /tmp/.x` #if process is alive then copy its PID in .x
    if [ -s /tmp/.x ]; then    #-s file True if file exists and has a size greater than zero. 
            echo k   #.x is greater than zero => process is alive, all ok
    else
            /etc/init.d/daemon start _or_whatever_startup file_ #.x was zero, process dead.
    fi
`rm -f /tmp/.$proc && rm -f /tmp/.x`