특정 사용자가 시스템을 시작할 때 자신만의 bash 스크립트를 실행하세요.

특정 사용자가 시스템을 시작할 때 자신만의 bash 스크립트를 실행하세요.

시스템 시작 시 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 ...;"

하지만 좋아 보이지는 않습니다.

관련 정보