Вложенные кавычки, безусловно, часть проблемы, но большая проблема записывается в udev manual:
Это может быть использован только для очень коротких затяжных приоритетных задач. Запуск процесса события в течение длительного периода времени может блокировать все дальнейшие события для этого или зависимого устройства. Запуск демона или других длительных процессов не подходит для udev; раздвоенные процессы, отдельные или нет, будут безоговорочно убиты после завершения обработки событий.
Так что ваш подход должен быть изменен. Однако предположим, что команда pm2 start daemon.json
соответственно коротко работает: ваш вопрос в любом случае интересен, потому что подобные проблемы с котировками возникают часто. Поэтому, пожалуйста, рассмотрите остальную часть этого ответа в качестве примера для общего случая.
Вместо того, чтобы сойти с ума с правильными последовательностями, вылетающих, вы можете просто написать
RUN+="/usr/bin/screen -m -d bash -c 'sleep 5; cd /vagrant/; sudo -E -u vagrant pm2 start daemon.json"
Еще более простое решение может быть
RUN+="/usr/bin/screen -m -d /usr/local/bin/start_vagrant_daemon"
где /usr/local/bin/start_vagrant_daemon
выполнима и имеет следующее содержание
#!/bin/bash
sleep 5
cd /vagrant/
sudo -E -u vagrant pm2 start daemon.json
Оба решения требуют установки коррекции t sudo, редактируя /etc/sudoers
или (лучше) записывая их в новый файл /etc/sudoers.d/vagrant_daemon
после включения includedir /etc/sudoers.d
в /etc/sudoers
.