Лучший подход для нескольких услуг

Предупреждение: Linux Newbie здесь

Я получил свою первую Raspberry Pi, на которой я хотел бы разместить ряд вещей одновременно. Пи несет без головы, подключенный к WiFi.

Я хотел бы иметь пару мошеннических панелей, бегущих ... Один из них - Smashing . Поскольку эти услуги будут занимать экран CLI, вы не можете сделать что-то еще, пока работает сервис.

Что я сделал так далеко, используя экран, создал экран, запустите сервис и отсоединяю. Но это дает мне осложнения. Потому что я хотел, чтобы экраны запустились автоматически, когда я загружаюсь (используя Crontab -e). Проблема в том, что команда Smashing не будет работать. Он будет работать, когда я сделаю экран вручную, но когда я устанавливаю экран через Crontab, я получаю вопросы пути.

Итак, мой вопрос:

Я приближаюсь к этому правильно? Это экран, способ перейти к:

  • Услуги по запуску в Отдельные Windows, чтобы я все еще мог использовать CLI , что
  • можно настроить, чтобы начать как услуги самостоятельно при перезагрузке?

Я создал пару сценариев в папке / Scripts / . Один из них, например, делает:

echo "Looking up the Dashboard and running file"
ls
cd dashboard
ls
smashing start
echo "Operation completed."

Этот скрипт должен вызывать на загрузку через

@reboot Screen-Dashboard » bash -c "./scripts/smashing.sh; bash"

Однако он не будет работать из-за какой-то выпуска пути:

. / Сценарии / Smashing.sh: линия 5: Smashing: команда не найдена

Это странно, потому что это произойдет только в том случае, если я запускаю экран через Crontab при перезагрузке. Если я сам запускаю экран, вручную в CLI, сервис будет загружаться только хорошо.

0
задан 20 March 2021 в 16:59

1 ответ

Объяснение : Давайте разберем фактический вывод ошибки:

./scripts/smashing.sh: line 5: smashing: command not found

Это означает, что в строке 5 скрипта интерпретатор обнаружил команду ( smashing ), для которого не удалось найти двоичный файл.

Вы правы - это проблема $ PATH. Крон - еще одна часть головоломки.

Cron не использует большинство переменных среды при запуске заданий. Это означает, что cron не знает об изменениях в вашего $ PATH (такие изменения, как установка , разбиение ).

Это классический пункт обучения для пользователей, плохо знакомых с заданиями cron.

Старые мастера рекомендуют всегда использовать полные пути в заданиях cron (и скриптах, которые они запускают) именно по этой причине.


Решение : В сценарии используйте полный путь:

Используйте whereis smashing , чтобы узнать полный путь.

Затем отредактируйте свой сценарий.

OLD:  smashing start
NEW:  /full/path/to/smashing start
3
ответ дан 1 April 2021 в 23:02

Другие вопросы по тегам:

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