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

Ubuntu 9.10: как устранить неполадки при запуске сценария, который не запускается?

Я создал сценарий bash "foo". Я сделал этот скрипт исполняемым с помощью

chmod+x 

и добавил запуск, запустив

sudo update-rc.d foo defaults 80

Несмотря на это, при запуске он, похоже, не работает. Есть ли способ сохранить эхо-сообщения моего сценария в журнале? Или есть какой-то журнал, в котором будут записываться события / ошибки для этого?

атм, я чувствую, что лечу вслепую и действительно не знаю, как это исправить.

В соответствии с просьбой, вот содержание моего сценария:

#!/bin/bash
modprobe uinput
/home/dane/dev/mangler/run.sh /home/dane/dev/mangler/dane/keys.js

команда run.sh запускает программу kbd-mangler.exe. При запуске следующего в gnome-терминале он работает:

~/$ sudo bash custom_keys.sh

Взгляните на logger команда.

Просто чтобы добавить к тому, что было предложено.

Я также хотел бы убедиться, что символическая ссылка /etc/rc2.d/S80foo была создана и правильно связана. Если файл foo не существует, update-rc.d должен был выдать вам ошибку, но дважды проверьте его.

Скрипт работает, если запустить его с помощью sudo? Если сценарий настроен правильно, наиболее распространенная ошибка, которую я видел, связана с неправильной настройкой среды.

Например, рекомендуется либо явно указать ваш PATH в начале скрипта, либо использовать полный путь для любых команд, которые вы запускаете.

Также 80 уровень, который вам действительно нужен? Вы зависите от того, что еще не началось?

Достаточно ли ваш сценарий проверяет уровни ошибок выполняемых вами вещей, а затем соответствующим образом реагирует. Хорошие сценарии и программирование требуют, чтобы вы правильно отслеживали и обрабатывали ошибки.

Положить немного echo status в ваш скрипт и внимательно следите за загрузкой вашей системы. Использование регистратора помогает, так как вы можете отправлять вывод в системный журнал.

Вы можете добавить set -x к первой строке сценария и sleep 120 как последняя строка, а затем следите за ошибками. Это будет в основном отражать каждый оператор, когда он выполняется на вашем экране, а затем он будет ждать пару минут, чтобы у вас была возможность прочитать и определить проблемы.

В начале вашего скрипта добавьте эту строку:

exec > /tmp/debug-my-script.txt 2>&1

Перезагрузка. Теперь посмотрите на этот файл в / tmp - он должен рассказать вам, что происходит.

Кстати, в скриптах init.d я обычно использую команды с полным путем (/ sbin / modprobe). Я так много раз горел из-за ограниченного PATH, используемого этими скриптами, сейчас я не делаю никаких предположений. :)

Кстати, хорошие ссылки на программирование на Bash:

http://mywiki.wooledge.org/BashFAQ

http://mywiki.wooledge.org/BashPitfalls

http://mywiki.wooledge.org/BashGuide

Вы можете использовать команду logger для добавления записей в файлы журнала:

logger -i "Foo Starting"