Предупреждение: Linux Newbie здесь
Я получил свою первую Raspberry Pi, на которой я хотел бы разместить ряд вещей одновременно. Пи несет без головы, подключенный к WiFi.
Я хотел бы иметь пару мошеннических панелей, бегущих ... Один из них - Smashing . Поскольку эти услуги будут занимать экран CLI, вы не можете сделать что-то еще, пока работает сервис.
Что я сделал так далеко, используя экран, создал экран, запустите сервис и отсоединяю. Но это дает мне осложнения. Потому что я хотел, чтобы экраны запустились автоматически, когда я загружаюсь (используя Crontab -e). Проблема в том, что команда Smashing не будет работать. Он будет работать, когда я сделаю экран вручную, но когда я устанавливаю экран через Crontab, я получаю вопросы пути.
Итак, мой вопрос:
Я приближаюсь к этому правильно? Это экран, способ перейти к:
Я создал пару сценариев в папке / 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, сервис будет загружаться только хорошо.
Объяснение : Давайте разберем фактический вывод ошибки:
./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