Выполнение следующих команд в оболочке выполняется без проблем:
ssh user@machine статус systemctl my-service.service
ssh user@machine sudo systemctl остановить my-service.service
scp -r ./мой-сервис/* пользователь@машина:/домашний/пользователь/мой-сервис
ssh user@machine chmod +x /home/user/my-service/my-service
ssh user@machine sudo systemctl запустить my-service.service
ssh user@machine sudo systemctl статус my-service.service
Однако, помещая это в развернуть.sh
file приводит к тому, что ни одно из вышеперечисленных действий не может быть выполнено.
Ошибки:
- Недопустимое имя модуля "my-service" было экранировано как "my-service\x0d" (может быть, вам следует использовать systemd-escape?)
- Не удалось найти модуль my-service\x0d.service.
- Недопустимое имя модуля «my-service.service» было экранировано как «my-service.service\x0d» (возможно, вам следует использовать systemd-escape?)
- Не удалось остановить my-service\x0d.service: модуль my-service.service\x0d.service не загружен.
: Нет такого файла или директории/
- chmod: невозможно получить доступ к '/home/user/my-service/my-service'$'\r': нет такого файла или каталога
- Недопустимое имя модуля «my-service.service» было экранировано как «my-service.service\x0d» (возможно, вам следует использовать systemd-escape?)
- Не удалось запустить my-service.service\x0d.service: модуль my-service.service\x0d.service не найден.
Недопустимое имя модуля «my-service.service» было экранировано как «my-service.service\x0d» (возможно, вам следует использовать systemd-escape?)
- Не удалось найти модуль my-service.service\x0d.service.
Некоторые были разбиты. Кажется, что-то связанное с побегом. По какой-то причине добавление пробела в конце строк делает это своего рода работой, но все же не без ошибок.
Поиск ошибок в Google показывает некоторые хиты об использовании --
и добавление его вместе с конечным пробелом заставляет некоторые команды работать, но все равно дает экранирующую ошибку.