LINUX.ORG.RU
решено ФорумAdmin

Sysvinit и автозапуск скрипта create_ap

 , , , ,


0

1

Здравствуйте, форумчане. У меня возникла проблема автозапуска скрипта create_ap при запуске системы. Сразу скажу, ручками скрипт запускается и стабильно работает, будучи запущеный #искаропки, так и в демонизированном виде(через service #демон# start|stop|restart|status).

Вот как я пытался его запустить:

  1. На уровне runlevel с помощью sysvinit.
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
  1. С помощью cron, тупо создав bash скрипт (+x) и задав включение при запуске (@reboot). . Так же я параллельно, в rc*.d указал порядок запуска скрипта на наиболее поздний (S99*), чтобы он точно не ругался на незапущенные потенциальные зависимости.

Сам скрипт:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          hotpoint
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Create wifi hotpoint
# Description:       Create wifi hotpoint. IP = 192.168.12.1
### END INIT INFO
CREATEAP="/usr/bin/create_ap"
WIRELESSINTERFACE="wlan0"
APNAME="TestAP"
APPASSWORD="test1234567"
start() {
    echo "Starting access point..."
    $CREATEAP -c 1 -n -w 2 $WIRELESSINTERFACE $APNAME $APPASSWORD 2>&1 &
    echo $! > /var/run/hotpoint.pid
    echo "WiFi access point started."
}

stop() {
    echo "Stopping access point..."
    killall create_ap
    echo "Hotpoint stopped."
}

get_status() {
    if [ -f /var/run/hotpoint.pid ]; then
    	SERVICE_STATUS='running'
    else
    	SERVICE_STATUS='not running'
    fi
    
}

status(){
    get_status
    echo "Service status: $SERVICE_STATUS"
}


case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0

Ответ на: комментарий от Eshkin_kot

Да, как при запуске вручную, так и в логах загрузки ОС. Вот ещё что заметил (чекал со смартфона), в момент инициализации демона,примерно на секунд 20 точка доступа таки поднимается, а затем бесследно исчезает

ixvter_wqder
() автор топика
Ответ на: комментарий от ixvter_wqder

Ну, то есть скрипт запускается, отрабатывает, а потом умирает?

Я вобще не совсем понял что вы пытаетсь сделать. Так у create_ap есть опция ″--daemon″, хотя не знаю, запишет он куда-нибудь свой pid. Но попробуйте, если поможет, можно переделать скрипт с использованием ″create_ap --list-running″...

А так запускать процесс, чтобы он остался нужно как-то так:

nohup create_ap >> LOG-FILE.log 2>&1 </dev/zero &
Ну или перенаправлять в /dev/null, если лог не нужен.

Вобще я особенностей девуана не знаю, но для меня ваш скрипты выглядит странно. Вы создаёте pid-файл, но используете его не для остановки create_ap, а только для проврки статуса. А после остновки не удаляете pid-файл. Какой sysv-скрипт брали за основу?

стабильно работает, будучи запущеный #искаропки, так и в демонизированном виде(через service #демон# start|stop|restart|status).

Даже если закрыть терминал, в котором запустили? Команда ″service″ демонизацию не производит, она не отвязывает ввод/вывод процесса от терминала и т.д., то есть не делает то, что описано в ″man daemon″. Фоновый процесс в shell (bash) — это не демон.

mky ★★★★★
()
Ответ на: комментарий от mky

Всё, проблема решена, с опцией ″–daemon″ скрипт теперь работает исправно точка доступа поднимается, спасибо за помощь. Костылинг с pid_ами работает так же штатно. Так у create_ap есть опция ″–daemon″…

ixvter_wqder
() автор топика