Ubuntu 9.10: как я диагностирую сценарий запуска, который, кажется, не работает?

Ваши папки My Documents синхронизируются, чтобы быть в режиме офлайн для пользователя, использующего Офлайновые Папки? Если так, я полагаю, что удаление отправит к локальной корзине, а не постоянно удалит. Возможно, Ваш рабочий стол не покрыт папками Offline, который приводит к отличающемуся поведению.

2
задан 26 March 2010 в 21:38
5 ответов

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

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

1
ответ дан 3 December 2019 в 09:27

Смотрите на logger команда.

3
ответ дан 3 December 2019 в 09:27
  • 1
    Добавьте эти logger команда в Вашем сценарии для отправки сообщений в файл журнала, поскольку Вы могли бы использовать echo для отладочной информации к терминалу. –  Paused until further notice. 26 March 2010 в 23:09
  • 2
    Добавьте строку как это к началу Вашего сценария: logger "foo started", чтобы простое сообщение было добавлено к /var/log/syslog как признак, что Ваш сценарий делает что-то. –  Paused until further notice. 26 March 2010 в 23:14
  • 3
    Это работает хорошо. Это будет работать в этом случае также. Я принял Andrei' s, потому что это позволило мне положить весь вывод на одно место с одной строкой кода. Ваше производство смесей метода регистратора в системный журнал и должно быть фильтровано с grep. Независимо, +1 –  Dane O'Connor 26 March 2010 в 23:51

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

Например, это - хорошая практика, чтобы или установить явно установленный Ваш ПУТЬ в начале сценария или использовать полный путь для любых команд, которые Вы выполняете.

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

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

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

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

1
ответ дан 3 December 2019 в 09:27
  • 1
    Вывод эха будет всегда появляться на экране во время начальной загрузки? Или я должен загрузиться специальным способом? сон является хорошей идеей +1 –  Dane O'Connor 26 March 2010 в 21:35
  • 2
    Я предполагаю, что принимал Вас, где выполнение этого на сервере, который будет я don' t думают, имеет любые включенные экраны-заставки. Если это - настольная система с GUI затем, много сообщений запуска, вероятно, будет скрыто. –  Zoredache 26 March 2010 в 22:07
  • 3
    К сожалению, it' s настольная система. Я могу записать в журнал в своем сценарии? Или еще лучше, там какие-либо журналы, которые автоматически зафиксируют ошибки запуска (как неспособность найти команду из-за зашифрованного корневого каталога)? –  Dane O'Connor 26 March 2010 в 22:41
  • 4
    Чтобы зарегистрироваться в файл или используйте регистратор, как предложено или просто использовать простое перенаправление. echo message >> /var/log/fooscript.log –  Zoredache 27 March 2010 в 01:48

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

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

1
ответ дан 3 December 2019 в 09:27

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

logger -i "Foo Starting"
0
ответ дан 3 December 2019 в 09:27

Теги

Похожие вопросы