시스템 시작 시 sidekiq을 실행하는 일부 스크립트에 큰 문제가 있습니다. 스크립트는 다음과 같습니다
#!/bin/bash
cd /home/passenger/application
source /usr/local/rvm/environments/ruby-2.5.1@gemset
bundle exec sidekiq -d -L log/sidekiq.log -e testing -P tmp/sidekiq.pid
안쪽에 붙어있어요/etc/rc.local작동하지만 루트 권한으로 실행됩니다. 스크립트 경로:
/home/passenger/run_sidekiq
사용자 승객 권한으로 실행해야 합니다. 나는 시도했다:
sudo -u passenger bash -c "bundle exec sidekiq -d -L log/sidekiq.log -e testing -P tmp/sidekiq.pid"
위의 조합을 많이 사용하지만 아무 것도 작동하지 않습니다.
답변1
매우 우아하지는 않지만 사용자의 crontab에 추가할 수 있습니다.
따라서 사용자로서 passenger
실행 crontab -e
한 다음 추가합니다.
@reboot /PATH/TO/SCRIPT
맨 아래로
답변2
전체 스크립트를 passenger
.
sudo -u passenger -H bash -c /home/passenger/run_sidekiq
이전 실험에서 파일을 생성한 경우 슈퍼유저가 아닌 사용자는 해당 파일을 덮어쓸 수 없으므로 해당 파일을 삭제하세요.
PS, 물론 당신이 하려는 것처럼 모든 명령을 실행할 수 있습니다. 단지 그것들을 분리하기만 하면 됩니다.;
sudo -u passenger -H bash -c "cd /home/passenger/application; source ...; bundle ...;"
하지만 좋아 보이지는 않습니다.