Про пляски с бубном вокруг /usr/bin/screen
Вот потребовалось мне тут запустить 2ве копии half-life сервера,
естественно есть стандартное решение, а именно использование screen
не долго думая, в директории /hlds_l создаем файл go
root@slack# vim
далее там пишем
#!/bin/sh
cd /hlds_l
/usr/bin/screen -A -m -d -S cs1 ./hlds_run +map crosssfire
далее
root@slack# chmod +x ./go
прописываем сей скрипт в /etc/rc.d/rc.M
даем команду,
root@slack# ./go
видим, что все работает, по 'ps ax' выдает нужный мне hl процесс и все
пучком, далее перегружаемся
root@slack# reboot
логинимся, и по 'ps' процесса hl нету!!!
стали разбираться, и выяснилось вот что..
1. после залогинивания данный скрипт работает без проблем, не работает
только из стартового скрипта.
2. стоит убрать из строки запуска screen ключик -d (deattach) то все
работает, даже, будучи запущенным из стартовых скриптов, но только в фореграунде
3. копаем дальше, модернизируем скрипт следующим образом,
screen -L -A -m -d -S cs1 ./hlds.......
в ручную пускаем, все нормально, создается лог файл с выводом на детаченную
консоль, из скрипта автозапуска ничего не создается.
4. модернизируем дальше.
screen -L -A -m -d -S cs1 strace ./hlds....... дабы уразуметь хоть какие-либо
сообщения об ошибках, вручную легко вываливается дамп отладочной информации
из стартового скрипта ничего, отчего делаем вывод, что управление на программу,
которую надо запустить, даже не передается.
5.Во всех случаях, даже когда запускается из стартового скрипта, в корне создается папочка
.screen в которой пусто, а при запуске вручную в ~ такая же, но с файлами с pidами на
запущенные копии screen-а.
6. далее выясняем, что не только hl но и вообще любая программа не запускается через
screen если он прописан в стартовых скриптах..
Далее правили в /etc/screenrc все что угодно, на предмет autodetach и пр.
Что я не так делаю?
зы. linux slackware 9.1 screen который в поставке идет.